web/wp-content/themes/aparatus/scripts/jd.gallery.js
author ymh
Fri, 12 Mar 2010 13:29:04 +0000
changeset 1 0d28b7c10758
permissions -rw-r--r--
First commit
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1
0d28b7c10758 First commit
ymh
parents:
diff changeset
     1
/*
0d28b7c10758 First commit
ymh
parents:
diff changeset
     2
    This file is part of JonDesign's SmoothGallery v2.0.
0d28b7c10758 First commit
ymh
parents:
diff changeset
     3
0d28b7c10758 First commit
ymh
parents:
diff changeset
     4
    JonDesign's SmoothGallery is free software; you can redistribute it and/or modify
0d28b7c10758 First commit
ymh
parents:
diff changeset
     5
    it under the terms of the GNU General Public License as published by
0d28b7c10758 First commit
ymh
parents:
diff changeset
     6
    the Free Software Foundation; either version 3 of the License, or
0d28b7c10758 First commit
ymh
parents:
diff changeset
     7
    (at your option) any later version.
0d28b7c10758 First commit
ymh
parents:
diff changeset
     8
0d28b7c10758 First commit
ymh
parents:
diff changeset
     9
    JonDesign's SmoothGallery is distributed in the hope that it will be useful,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    10
    but WITHOUT ANY WARRANTY; without even the implied warranty of
0d28b7c10758 First commit
ymh
parents:
diff changeset
    11
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0d28b7c10758 First commit
ymh
parents:
diff changeset
    12
    GNU General Public License for more details.
0d28b7c10758 First commit
ymh
parents:
diff changeset
    13
0d28b7c10758 First commit
ymh
parents:
diff changeset
    14
    You should have received a copy of the GNU General Public License
0d28b7c10758 First commit
ymh
parents:
diff changeset
    15
    along with JonDesign's SmoothGallery; if not, write to the Free Software
0d28b7c10758 First commit
ymh
parents:
diff changeset
    16
    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
0d28b7c10758 First commit
ymh
parents:
diff changeset
    17
0d28b7c10758 First commit
ymh
parents:
diff changeset
    18
    Main Developer: Jonathan Schemoul (JonDesign: http://www.jondesign.net/)
0d28b7c10758 First commit
ymh
parents:
diff changeset
    19
    Contributed code by:
0d28b7c10758 First commit
ymh
parents:
diff changeset
    20
    - Christian Ehret (bugfix)
0d28b7c10758 First commit
ymh
parents:
diff changeset
    21
	- Nitrix (bugfix)
0d28b7c10758 First commit
ymh
parents:
diff changeset
    22
	- Valerio from Mad4Milk for his great help with the carousel scrolling and many other things.
0d28b7c10758 First commit
ymh
parents:
diff changeset
    23
	- Archie Cowan for helping me find a bugfix on carousel inner width problem.
0d28b7c10758 First commit
ymh
parents:
diff changeset
    24
	- Tomocchino from #mootools for the preloader class
0d28b7c10758 First commit
ymh
parents:
diff changeset
    25
	Many thanks to:
0d28b7c10758 First commit
ymh
parents:
diff changeset
    26
	- The mootools team for the great mootools lib, and it's help and support throughout the project.
0d28b7c10758 First commit
ymh
parents:
diff changeset
    27
*/
0d28b7c10758 First commit
ymh
parents:
diff changeset
    28
0d28b7c10758 First commit
ymh
parents:
diff changeset
    29
// declaring the class
0d28b7c10758 First commit
ymh
parents:
diff changeset
    30
var gallery = {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    31
	initialize: function(element, options) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
    32
		this.setOptions({
0d28b7c10758 First commit
ymh
parents:
diff changeset
    33
			showArrows: true,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    34
			showCarousel: true,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    35
			showInfopane: true,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    36
			embedLinks: true,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    37
			fadeDuration: 500,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    38
			timed: false,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    39
			delay: 9000,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    40
			preloader: true,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    41
			preloaderImage: true,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    42
			preloaderErrorImage: true,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    43
			/* Data retrieval */
0d28b7c10758 First commit
ymh
parents:
diff changeset
    44
			manualData: [],
0d28b7c10758 First commit
ymh
parents:
diff changeset
    45
			populateFrom: false,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    46
			populateData: true,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    47
			destroyAfterPopulate: true,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    48
			elementSelector: "div.imageElement",
0d28b7c10758 First commit
ymh
parents:
diff changeset
    49
			titleSelector: "h3",
0d28b7c10758 First commit
ymh
parents:
diff changeset
    50
			subtitleSelector: "p",
0d28b7c10758 First commit
ymh
parents:
diff changeset
    51
			linkSelector: "a.open",
0d28b7c10758 First commit
ymh
parents:
diff changeset
    52
			imageSelector: "img.full",
0d28b7c10758 First commit
ymh
parents:
diff changeset
    53
			thumbnailSelector: "img.thumbnail",
0d28b7c10758 First commit
ymh
parents:
diff changeset
    54
			defaultTransition: "fade",
0d28b7c10758 First commit
ymh
parents:
diff changeset
    55
			/* InfoPane options */
0d28b7c10758 First commit
ymh
parents:
diff changeset
    56
			slideInfoZoneOpacity: 1.0,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    57
			slideInfoZoneSlide: true,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    58
			/* Carousel options */
0d28b7c10758 First commit
ymh
parents:
diff changeset
    59
			carouselMinimizedOpacity: 0.4,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    60
			carouselMinimizedHeight: 20,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    61
			carouselMaximizedOpacity: 0.9,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    62
			thumbHeight: 75,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    63
			thumbWidth: 100,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    64
			thumbSpacing: 13,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    65
			thumbIdleOpacity: 0.2,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    66
			
0d28b7c10758 First commit
ymh
parents:
diff changeset
    67
			showCarouselLabel: true,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    68
			thumbCloseCarousel: true,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    69
			useThumbGenerator: false,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    70
			thumbGenerator: 'resizer.php',
0d28b7c10758 First commit
ymh
parents:
diff changeset
    71
			useExternalCarousel: false,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    72
			carouselElement: false,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    73
			carouselHorizontal: true,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    74
			activateCarouselScroller: true,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    75
			carouselPreloader: true,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    76
			textPreloadingCarousel: 'Loading...',
0d28b7c10758 First commit
ymh
parents:
diff changeset
    77
			/* CSS Classes */
0d28b7c10758 First commit
ymh
parents:
diff changeset
    78
			baseClass: 'jdGallery',
0d28b7c10758 First commit
ymh
parents:
diff changeset
    79
			withArrowsClass: 'withArrows',
0d28b7c10758 First commit
ymh
parents:
diff changeset
    80
			/* Plugins: HistoryManager */
0d28b7c10758 First commit
ymh
parents:
diff changeset
    81
			useHistoryManager: false,
0d28b7c10758 First commit
ymh
parents:
diff changeset
    82
			customHistoryKey: false
0d28b7c10758 First commit
ymh
parents:
diff changeset
    83
		}, options);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    84
		this.fireEvent('onInit');
0d28b7c10758 First commit
ymh
parents:
diff changeset
    85
		this.currentIter = 0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    86
		this.lastIter = 0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    87
		this.maxIter = 0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    88
		this.galleryElement = element;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    89
		this.galleryData = this.options.manualData;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    90
		this.galleryInit = 1;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    91
		this.galleryElements = Array();
0d28b7c10758 First commit
ymh
parents:
diff changeset
    92
		this.thumbnailElements = Array();
0d28b7c10758 First commit
ymh
parents:
diff changeset
    93
		this.galleryElement.addClass(this.options.baseClass);
0d28b7c10758 First commit
ymh
parents:
diff changeset
    94
		
0d28b7c10758 First commit
ymh
parents:
diff changeset
    95
		this.populateFrom = element;
0d28b7c10758 First commit
ymh
parents:
diff changeset
    96
		if (this.options.populateFrom)
0d28b7c10758 First commit
ymh
parents:
diff changeset
    97
			this.populateFrom = this.options.populateFrom;		
0d28b7c10758 First commit
ymh
parents:
diff changeset
    98
		if (this.options.populateData)
0d28b7c10758 First commit
ymh
parents:
diff changeset
    99
			this.populateData();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   100
		element.style.display="block";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   101
		
0d28b7c10758 First commit
ymh
parents:
diff changeset
   102
		if (this.options.useHistoryManager)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   103
			this.initHistory();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   104
		
0d28b7c10758 First commit
ymh
parents:
diff changeset
   105
		if (this.options.embedLinks)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   106
		{
0d28b7c10758 First commit
ymh
parents:
diff changeset
   107
			this.currentLink = new Element('a').addClass('open').setProperties({
0d28b7c10758 First commit
ymh
parents:
diff changeset
   108
				href: '#',
0d28b7c10758 First commit
ymh
parents:
diff changeset
   109
				title: ''
0d28b7c10758 First commit
ymh
parents:
diff changeset
   110
			}).injectInside(element);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   111
			if ((!this.options.showArrows) && (!this.options.showCarousel))
0d28b7c10758 First commit
ymh
parents:
diff changeset
   112
				this.galleryElement = element = this.currentLink;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   113
			else
0d28b7c10758 First commit
ymh
parents:
diff changeset
   114
				this.currentLink.setStyle('display', 'none');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   115
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   116
		
0d28b7c10758 First commit
ymh
parents:
diff changeset
   117
		this.constructElements();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   118
		if ((this.galleryData.length>1)&&(this.options.showArrows))
0d28b7c10758 First commit
ymh
parents:
diff changeset
   119
		{
0d28b7c10758 First commit
ymh
parents:
diff changeset
   120
			var leftArrow = new Element('a').addClass('left').addEvent(
0d28b7c10758 First commit
ymh
parents:
diff changeset
   121
				'click',
0d28b7c10758 First commit
ymh
parents:
diff changeset
   122
				this.prevItem.bind(this)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   123
			).injectInside(element);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   124
			var rightArrow = new Element('a').addClass('right').addEvent(
0d28b7c10758 First commit
ymh
parents:
diff changeset
   125
				'click',
0d28b7c10758 First commit
ymh
parents:
diff changeset
   126
				this.nextItem.bind(this)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   127
			).injectInside(element);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   128
			this.galleryElement.addClass(this.options.withArrowsClass);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   129
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   130
		this.loadingElement = new Element('div').addClass('loadingElement').injectInside(element);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   131
		if (this.options.showInfopane) this.initInfoSlideshow();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   132
		if (this.options.showCarousel) this.initCarousel();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   133
		this.doSlideShow(1);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   134
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   135
	populateData: function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   136
		currentArrayPlace = this.galleryData.length;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   137
		options = this.options;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   138
		var data = $A(this.galleryData);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   139
		data.extend(this.populateGallery(this.populateFrom, currentArrayPlace));
0d28b7c10758 First commit
ymh
parents:
diff changeset
   140
		this.galleryData = data;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   141
		this.fireEvent('onPopulated');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   142
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   143
	populateGallery: function(element, startNumber) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   144
		var data = [];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   145
		options = this.options;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   146
		currentArrayPlace = startNumber;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   147
		element.getElements(options.elementSelector).each(function(el) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   148
			elementDict = {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   149
				image: el.getElement(options.imageSelector).getProperty('src'),
0d28b7c10758 First commit
ymh
parents:
diff changeset
   150
				number: currentArrayPlace,
0d28b7c10758 First commit
ymh
parents:
diff changeset
   151
				transition: this.options.defaultTransition
0d28b7c10758 First commit
ymh
parents:
diff changeset
   152
			};
0d28b7c10758 First commit
ymh
parents:
diff changeset
   153
			elementDict.extend = $extend;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   154
			if ((options.showInfopane) | (options.showCarousel))
0d28b7c10758 First commit
ymh
parents:
diff changeset
   155
				elementDict.extend({
0d28b7c10758 First commit
ymh
parents:
diff changeset
   156
					title: el.getElement(options.titleSelector).innerHTML,
0d28b7c10758 First commit
ymh
parents:
diff changeset
   157
					description: el.getElement(options.subtitleSelector).innerHTML
0d28b7c10758 First commit
ymh
parents:
diff changeset
   158
				});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   159
			if (options.embedLinks)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   160
				elementDict.extend({
0d28b7c10758 First commit
ymh
parents:
diff changeset
   161
					link: el.getElement(options.linkSelector).href||false,
0d28b7c10758 First commit
ymh
parents:
diff changeset
   162
					linkTitle: el.getElement(options.linkSelector).title||false,
0d28b7c10758 First commit
ymh
parents:
diff changeset
   163
					linkTarget: el.getElement(options.linkSelector).getProperty('target')||false
0d28b7c10758 First commit
ymh
parents:
diff changeset
   164
				});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   165
			if ((!options.useThumbGenerator) && (options.showCarousel))
0d28b7c10758 First commit
ymh
parents:
diff changeset
   166
				elementDict.extend({
0d28b7c10758 First commit
ymh
parents:
diff changeset
   167
					thumbnail: el.getElement(options.thumbnailSelector).getProperty('src')
0d28b7c10758 First commit
ymh
parents:
diff changeset
   168
				});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   169
			else if (options.useThumbGenerator)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   170
				elementDict.extend({
0d28b7c10758 First commit
ymh
parents:
diff changeset
   171
					thumbnail: options.thumbGenerator + '?imgfile=' + elementDict.image + '&max_width=' + options.thumbWidth + '&max_height=' + options.thumbHeight
0d28b7c10758 First commit
ymh
parents:
diff changeset
   172
				});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   173
			
0d28b7c10758 First commit
ymh
parents:
diff changeset
   174
			data.extend([elementDict]);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   175
			currentArrayPlace++;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   176
			if (this.options.destroyAfterPopulate)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   177
				el.remove();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   178
		});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   179
		return data;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   180
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   181
	constructElements: function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   182
		el = this.galleryElement;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   183
		this.maxIter = this.galleryData.length;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   184
		var currentImg;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   185
		for(i=0;i<this.galleryData.length;i++)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   186
		{
0d28b7c10758 First commit
ymh
parents:
diff changeset
   187
			var currentImg = new Fx.Styles(
0d28b7c10758 First commit
ymh
parents:
diff changeset
   188
				new Element('div').addClass('slideElement').setStyles({
0d28b7c10758 First commit
ymh
parents:
diff changeset
   189
					'position':'absolute',
0d28b7c10758 First commit
ymh
parents:
diff changeset
   190
					'left':'0px',
0d28b7c10758 First commit
ymh
parents:
diff changeset
   191
					'right':'0px',
0d28b7c10758 First commit
ymh
parents:
diff changeset
   192
					'margin':'0px',
0d28b7c10758 First commit
ymh
parents:
diff changeset
   193
					'padding':'0px',
0d28b7c10758 First commit
ymh
parents:
diff changeset
   194
					'backgroundPosition':"center center",
0d28b7c10758 First commit
ymh
parents:
diff changeset
   195
					'opacity':'0'
0d28b7c10758 First commit
ymh
parents:
diff changeset
   196
				}).injectInside(el),
0d28b7c10758 First commit
ymh
parents:
diff changeset
   197
				'opacity',
0d28b7c10758 First commit
ymh
parents:
diff changeset
   198
				{duration: this.options.fadeDuration}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   199
			);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   200
			if (this.options.preloader)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   201
			{
0d28b7c10758 First commit
ymh
parents:
diff changeset
   202
				currentImg.source = this.galleryData[i].image;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   203
				currentImg.loaded = false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   204
				currentImg.load = function(imageStyle) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   205
					if (!imageStyle.loaded)	{
0d28b7c10758 First commit
ymh
parents:
diff changeset
   206
						new Asset.image(imageStyle.source, {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   207
		                            'onload'  : function(img){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   208
													img.element.setStyle(
0d28b7c10758 First commit
ymh
parents:
diff changeset
   209
													'backgroundImage',
0d28b7c10758 First commit
ymh
parents:
diff changeset
   210
													"url('" + img.source + "')")
0d28b7c10758 First commit
ymh
parents:
diff changeset
   211
													img.loaded = true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   212
												}.bind(this, imageStyle)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   213
						});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   214
					}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   215
				}.pass(currentImg, this);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   216
			} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   217
				currentImg.element.setStyle('backgroundImage',
0d28b7c10758 First commit
ymh
parents:
diff changeset
   218
									"url('" + this.galleryData[i].image + "')");
0d28b7c10758 First commit
ymh
parents:
diff changeset
   219
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   220
			this.galleryElements[parseInt(i)] = currentImg;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   221
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   222
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   223
	destroySlideShow: function(element) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   224
		var myClassName = element.className;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   225
		var newElement = new Element('div').addClass('myClassName');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   226
		element.parentNode.replaceChild(newElement, element);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   227
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   228
	startSlideShow: function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   229
		this.fireEvent('onStart');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   230
		this.loadingElement.style.display = "none";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   231
		this.lastIter = this.maxIter - 1;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   232
		this.currentIter = 0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   233
		this.galleryInit = 0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   234
		this.galleryElements[parseInt(this.currentIter)].set({opacity: 1});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   235
		if (this.options.showInfopane)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   236
			this.showInfoSlideShow.delay(1000, this);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   237
		var textShowCarousel = formatString(this.options.textShowCarousel, this.currentIter+1, this.maxIter);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   238
		if (this.options.showCarousel&&(!this.options.carouselPreloader))
0d28b7c10758 First commit
ymh
parents:
diff changeset
   239
			this.carouselBtn.setHTML(textShowCarousel).setProperty('title', textShowCarousel);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   240
		this.prepareTimer();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   241
		if (this.options.embedLinks)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   242
			this.makeLink(this.currentIter);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   243
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   244
	nextItem: function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   245
		this.fireEvent('onNextCalled');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   246
		this.nextIter = this.currentIter+1;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   247
		if (this.nextIter >= this.maxIter)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   248
			this.nextIter = 0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   249
		this.galleryInit = 0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   250
		this.goTo(this.nextIter);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   251
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   252
	prevItem: function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   253
		this.fireEvent('onPreviousCalled');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   254
		this.nextIter = this.currentIter-1;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   255
		if (this.nextIter <= -1)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   256
			this.nextIter = this.maxIter - 1;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   257
		this.galleryInit = 0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   258
		this.goTo(this.nextIter);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   259
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   260
	goTo: function(num) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   261
		this.clearTimer();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   262
		if(this.options.preloader)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   263
		{
0d28b7c10758 First commit
ymh
parents:
diff changeset
   264
			this.galleryElements[num].load();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   265
			if (num==0)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   266
				this.galleryElements[this.maxIter - 1].load();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   267
			else
0d28b7c10758 First commit
ymh
parents:
diff changeset
   268
				this.galleryElements[num - 1].load();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   269
			if (num==(this.maxIter - 1))
0d28b7c10758 First commit
ymh
parents:
diff changeset
   270
				this.galleryElements[0].load();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   271
			else
0d28b7c10758 First commit
ymh
parents:
diff changeset
   272
				this.galleryElements[num + 1].load();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   273
				
0d28b7c10758 First commit
ymh
parents:
diff changeset
   274
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   275
		if (this.options.embedLinks)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   276
			this.clearLink();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   277
		if (this.options.showInfopane)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   278
		{
0d28b7c10758 First commit
ymh
parents:
diff changeset
   279
			this.slideInfoZone.clearChain();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   280
			this.hideInfoSlideShow().chain(this.changeItem.pass(num, this));
0d28b7c10758 First commit
ymh
parents:
diff changeset
   281
		} else
0d28b7c10758 First commit
ymh
parents:
diff changeset
   282
			this.currentChangeDelay = this.changeItem.delay(500, this, num);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   283
		if (this.options.embedLinks)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   284
			this.makeLink(num);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   285
		this.prepareTimer();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   286
		/*if (this.options.showCarousel)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   287
			this.clearThumbnailsHighlights();*/
0d28b7c10758 First commit
ymh
parents:
diff changeset
   288
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   289
	changeItem: function(num) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   290
		this.fireEvent('onStartChanging');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   291
		this.galleryInit = 0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   292
		if (this.currentIter != num)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   293
		{
0d28b7c10758 First commit
ymh
parents:
diff changeset
   294
			for(i=0;i<this.maxIter;i++)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   295
			{
0d28b7c10758 First commit
ymh
parents:
diff changeset
   296
				if ((i != this.currentIter)) this.galleryElements[i].set({opacity: 0});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   297
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   298
			gallery.Transitions[this.galleryData[num].transition].pass([
0d28b7c10758 First commit
ymh
parents:
diff changeset
   299
				this.galleryElements[this.currentIter],
0d28b7c10758 First commit
ymh
parents:
diff changeset
   300
				this.galleryElements[num],
0d28b7c10758 First commit
ymh
parents:
diff changeset
   301
				this.currentIter,
0d28b7c10758 First commit
ymh
parents:
diff changeset
   302
				num], this)();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   303
			this.currentIter = num;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   304
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   305
		var textShowCarousel = formatString(this.options.textShowCarousel, num+1, this.maxIter);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   306
		if (this.options.showCarousel)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   307
			this.carouselBtn.setHTML(textShowCarousel).setProperty('title', textShowCarousel);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   308
		this.doSlideShow.bind(this)();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   309
		this.fireEvent('onChanged');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   310
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   311
	clearTimer: function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   312
		if (this.options.timed)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   313
			$clear(this.timer);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   314
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   315
	prepareTimer: function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   316
		if (this.options.timed)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   317
			this.timer = this.nextItem.delay(this.options.delay, this);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   318
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   319
	doSlideShow: function(position) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   320
		if (this.galleryInit == 1)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   321
		{
0d28b7c10758 First commit
ymh
parents:
diff changeset
   322
			imgPreloader = new Image();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   323
			imgPreloader.onload=function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   324
				this.startSlideShow.delay(10, this);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   325
			}.bind(this);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   326
			imgPreloader.src = this.galleryData[0].image;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   327
			if(this.options.preloader)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   328
				this.galleryElements[0].load();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   329
		} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   330
			if (this.options.showInfopane)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   331
			{
0d28b7c10758 First commit
ymh
parents:
diff changeset
   332
				if (this.options.showInfopane)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   333
				{
0d28b7c10758 First commit
ymh
parents:
diff changeset
   334
					this.showInfoSlideShow.delay((500 + this.options.fadeDuration), this);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   335
				} else
0d28b7c10758 First commit
ymh
parents:
diff changeset
   336
					if ((this.options.showCarousel)&&(this.options.activateCarouselScroller))
0d28b7c10758 First commit
ymh
parents:
diff changeset
   337
						this.centerCarouselOn(position);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   338
			}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   339
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   340
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   341
	createCarousel: function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   342
		var carouselElement;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   343
		if (!this.options.useExternalCarousel)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   344
		{
0d28b7c10758 First commit
ymh
parents:
diff changeset
   345
			var carouselContainerElement = new Element('div').addClass('carouselContainer').injectInside(this.galleryElement);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   346
			this.carouselContainer = new Fx.Styles(carouselContainerElement, {transition: Fx.Transitions.expoOut});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   347
			this.carouselContainer.normalHeight = carouselContainerElement.offsetHeight;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   348
			this.carouselContainer.set({'opacity': this.options.carouselMinimizedOpacity, 'top': (this.options.carouselMinimizedHeight - this.carouselContainer.normalHeight)});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   349
			this.carouselBtn = new Element('a').addClass('carouselBtn').setProperties({
0d28b7c10758 First commit
ymh
parents:
diff changeset
   350
				title: this.options.textShowCarousel
0d28b7c10758 First commit
ymh
parents:
diff changeset
   351
			}).injectInside(carouselContainerElement);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   352
			if(this.options.carouselPreloader)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   353
				this.carouselBtn.setHTML(this.options.textPreloadingCarousel);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   354
			else
0d28b7c10758 First commit
ymh
parents:
diff changeset
   355
				this.carouselBtn.setHTML(this.options.textShowCarousel);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   356
			this.carouselBtn.addEvent(
0d28b7c10758 First commit
ymh
parents:
diff changeset
   357
				'click',
0d28b7c10758 First commit
ymh
parents:
diff changeset
   358
				function () {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   359
					this.carouselContainer.clearTimer();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   360
					this.toggleCarousel();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   361
				}.bind(this)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   362
			);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   363
			this.carouselActive = false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   364
	
0d28b7c10758 First commit
ymh
parents:
diff changeset
   365
			carouselElement = new Element('div').addClass('carousel').injectInside(carouselContainerElement);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   366
			this.carousel = new Fx.Styles(carouselElement);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   367
		} else {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   368
			carouselElement = $(this.options.carouselElement).addClass('jdExtCarousel');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   369
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   370
		this.carouselElement = new Fx.Styles(carouselElement, {transition: Fx.Transitions.expoOut});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   371
		this.carouselElement.normalHeight = carouselElement.offsetHeight;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   372
		if (this.options.showCarouselLabel)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   373
			this.carouselLabel = new Element('p').addClass('label').injectInside(carouselElement);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   374
		carouselWrapper = new Element('div').addClass('carouselWrapper').injectInside(carouselElement);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   375
		this.carouselWrapper = new Fx.Styles(carouselWrapper, {transition: Fx.Transitions.expoOut});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   376
		this.carouselWrapper.normalHeight = carouselWrapper.offsetHeight;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   377
		this.carouselInner = new Element('div').addClass('carouselInner').injectInside(carouselWrapper);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   378
		if (this.options.activateCarouselScroller)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   379
		{
0d28b7c10758 First commit
ymh
parents:
diff changeset
   380
			this.carouselWrapper.scroller = new Scroller(carouselWrapper, {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   381
				area: 100,
0d28b7c10758 First commit
ymh
parents:
diff changeset
   382
				velocity: 0.2
0d28b7c10758 First commit
ymh
parents:
diff changeset
   383
			})
0d28b7c10758 First commit
ymh
parents:
diff changeset
   384
			
0d28b7c10758 First commit
ymh
parents:
diff changeset
   385
			this.carouselWrapper.elementScroller = new Fx.Scroll(carouselWrapper, {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   386
				duration: 400,
0d28b7c10758 First commit
ymh
parents:
diff changeset
   387
				onStart: this.carouselWrapper.scroller.stop.bind(this.carouselWrapper.scroller),
0d28b7c10758 First commit
ymh
parents:
diff changeset
   388
				onComplete: this.carouselWrapper.scroller.start.bind(this.carouselWrapper.scroller)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   389
			});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   390
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   391
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   392
	fillCarousel: function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   393
		this.constructThumbnails();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   394
		this.carouselInner.normalWidth = ((this.maxIter * (this.options.thumbWidth + this.options.thumbSpacing + 2))+this.options.thumbSpacing) + "px";
0d28b7c10758 First commit
ymh
parents:
diff changeset
   395
		this.carouselInner.style.width = this.carouselInner.normalWidth;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   396
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   397
	initCarousel: function () {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   398
		this.createCarousel();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   399
		this.fillCarousel();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   400
		if (this.options.carouselPreloader)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   401
			this.preloadThumbnails();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   402
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   403
	flushCarousel: function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   404
		this.thumbnailElements.each(function(myFx) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   405
			myFx.element.remove();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   406
			myFx = myFx.element = null;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   407
		});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   408
		this.thumbnailElements = [];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   409
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   410
	toggleCarousel: function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   411
		if (this.carouselActive)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   412
			this.hideCarousel();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   413
		else
0d28b7c10758 First commit
ymh
parents:
diff changeset
   414
			this.showCarousel();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   415
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   416
	showCarousel: function () {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   417
		this.fireEvent('onShowCarousel');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   418
		this.carouselContainer.start({
0d28b7c10758 First commit
ymh
parents:
diff changeset
   419
			'opacity': this.options.carouselMaximizedOpacity,
0d28b7c10758 First commit
ymh
parents:
diff changeset
   420
			'top': 0
0d28b7c10758 First commit
ymh
parents:
diff changeset
   421
		}).chain(function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   422
			this.carouselActive = true;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   423
			this.carouselWrapper.scroller.start();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   424
			this.fireEvent('onCarouselShown');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   425
			this.carouselContainer.options.onComplete = null;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   426
		}.bind(this));
0d28b7c10758 First commit
ymh
parents:
diff changeset
   427
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   428
	hideCarousel: function () {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   429
		this.fireEvent('onHideCarousel');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   430
		var targetTop = this.options.carouselMinimizedHeight - this.carouselContainer.normalHeight;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   431
		this.carouselContainer.start({
0d28b7c10758 First commit
ymh
parents:
diff changeset
   432
			'opacity': this.options.carouselMinimizedOpacity,
0d28b7c10758 First commit
ymh
parents:
diff changeset
   433
			'top': targetTop
0d28b7c10758 First commit
ymh
parents:
diff changeset
   434
		}).chain(function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   435
			this.carouselActive = false;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   436
			this.carouselWrapper.scroller.stop();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   437
			this.fireEvent('onCarouselHidden');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   438
			this.carouselContainer.options.onComplete = null;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   439
		}.bind(this));
0d28b7c10758 First commit
ymh
parents:
diff changeset
   440
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   441
	constructThumbnails: function () {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   442
		element = this.carouselInner;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   443
		for(i=0;i<this.galleryData.length;i++)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   444
		{
0d28b7c10758 First commit
ymh
parents:
diff changeset
   445
			var currentImg = new Fx.Style(new Element ('div').addClass("thumbnail").setStyles({
0d28b7c10758 First commit
ymh
parents:
diff changeset
   446
					backgroundImage: "url('" + this.galleryData[i].thumbnail + "')",
0d28b7c10758 First commit
ymh
parents:
diff changeset
   447
					backgroundPosition: "center center",
0d28b7c10758 First commit
ymh
parents:
diff changeset
   448
					backgroundRepeat: 'no-repeat',
0d28b7c10758 First commit
ymh
parents:
diff changeset
   449
					marginLeft: this.options.thumbSpacing + "px",
0d28b7c10758 First commit
ymh
parents:
diff changeset
   450
					width: this.options.thumbWidth + "px",
0d28b7c10758 First commit
ymh
parents:
diff changeset
   451
					height: this.options.thumbHeight + "px"
0d28b7c10758 First commit
ymh
parents:
diff changeset
   452
				}).injectInside(element), "opacity", {duration: 200}).set(this.options.thumbIdleOpacity);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   453
			currentImg.element.addEvents({
0d28b7c10758 First commit
ymh
parents:
diff changeset
   454
				'mouseover': function (myself) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   455
					myself.clearTimer();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   456
					myself.start(0.99);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   457
					if (this.options.showCarouselLabel)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   458
						$(this.carouselLabel).setHTML('<span class="number">' + (myself.relatedImage.number + 1) + "/" + this.maxIter + ":</span> " + myself.relatedImage.title);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   459
				}.pass(currentImg, this),
0d28b7c10758 First commit
ymh
parents:
diff changeset
   460
				'mouseout': function (myself) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   461
					myself.clearTimer();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   462
					myself.start(this.options.thumbIdleOpacity);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   463
				}.pass(currentImg, this),
0d28b7c10758 First commit
ymh
parents:
diff changeset
   464
				'click': function (myself) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   465
					this.goTo(myself.relatedImage.number);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   466
					if (this.options.thumbCloseCarousel)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   467
						this.hideCarousel();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   468
				}.pass(currentImg, this)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   469
			});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   470
			
0d28b7c10758 First commit
ymh
parents:
diff changeset
   471
			currentImg.relatedImage = this.galleryData[i];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   472
			this.thumbnailElements[parseInt(i)] = currentImg;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   473
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   474
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   475
	log: function(value) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   476
		if(console.log)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   477
			console.log(value);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   478
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   479
	preloadThumbnails: function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   480
		var thumbnails = [];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   481
		for(i=0;i<this.galleryData.length;i++)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   482
		{
0d28b7c10758 First commit
ymh
parents:
diff changeset
   483
			thumbnails[parseInt(i)] = this.galleryData[i].thumbnail;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   484
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   485
		this.thumbnailPreloader = new Preloader();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   486
		this.thumbnailPreloader.addEvent('onComplete', function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   487
			var textShowCarousel = formatString(this.options.textShowCarousel, this.currentIter+1, this.maxIter);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   488
			this.carouselBtn.setHTML(textShowCarousel).setProperty('title', textShowCarousel);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   489
		}.bind(this));
0d28b7c10758 First commit
ymh
parents:
diff changeset
   490
		this.thumbnailPreloader.load(thumbnails);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   491
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   492
	clearThumbnailsHighlights: function()
0d28b7c10758 First commit
ymh
parents:
diff changeset
   493
	{
0d28b7c10758 First commit
ymh
parents:
diff changeset
   494
		for(i=0;i<this.galleryData.length;i++)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   495
		{
0d28b7c10758 First commit
ymh
parents:
diff changeset
   496
			this.thumbnailElements[i].clearTimer();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   497
			this.thumbnailElements[i].start(0.2);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   498
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   499
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   500
	changeThumbnailsSize: function(width, height)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   501
	{
0d28b7c10758 First commit
ymh
parents:
diff changeset
   502
		for(i=0;i<this.galleryData.length;i++)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   503
		{
0d28b7c10758 First commit
ymh
parents:
diff changeset
   504
			this.thumbnailElements[i].clearTimer();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   505
			this.thumbnailElements[i].element.setStyles({
0d28b7c10758 First commit
ymh
parents:
diff changeset
   506
				'width': width + "px",
0d28b7c10758 First commit
ymh
parents:
diff changeset
   507
				'height': height + "px"
0d28b7c10758 First commit
ymh
parents:
diff changeset
   508
			});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   509
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   510
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   511
	centerCarouselOn: function(num) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   512
		if (!this.carouselWallMode)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   513
		{
0d28b7c10758 First commit
ymh
parents:
diff changeset
   514
			var carouselElement = this.thumbnailElements[num];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   515
			var position = carouselElement.element.offsetLeft + (carouselElement.element.offsetWidth / 2);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   516
			var carouselWidth = this.carouselWrapper.element.offsetWidth;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   517
			var carouselInnerWidth = this.carouselInner.offsetWidth;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   518
			var diffWidth = carouselWidth / 2;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   519
			var scrollPos = position-diffWidth;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   520
			this.carouselWrapper.elementScroller.scrollTo(scrollPos,0);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   521
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   522
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   523
	initInfoSlideshow: function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   524
		/*if (this.slideInfoZone.element)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   525
			this.slideInfoZone.element.remove();*/
0d28b7c10758 First commit
ymh
parents:
diff changeset
   526
		this.slideInfoZone = new Fx.Styles(new Element('div').addClass('slideInfoZone').injectInside($(this.galleryElement))).set({'opacity':0});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   527
		var slideInfoZoneTitle = new Element('h2').injectInside(this.slideInfoZone.element);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   528
		var slideInfoZoneDescription = new Element('p').injectInside(this.slideInfoZone.element);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   529
		this.slideInfoZone.normalHeight = this.slideInfoZone.element.offsetHeight;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   530
		this.slideInfoZone.element.setStyle('opacity',0);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   531
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   532
	changeInfoSlideShow: function()
0d28b7c10758 First commit
ymh
parents:
diff changeset
   533
	{
0d28b7c10758 First commit
ymh
parents:
diff changeset
   534
		this.hideInfoSlideShow.delay(10, this);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   535
		this.showInfoSlideShow.delay(500, this);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   536
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   537
	showInfoSlideShow: function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   538
		this.fireEvent('onShowInfopane');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   539
		this.slideInfoZone.clearTimer();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   540
		element = this.slideInfoZone.element;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   541
		element.getElement('h2').setHTML(this.galleryData[this.currentIter].title);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   542
		element.getElement('p').setHTML(this.galleryData[this.currentIter].description);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   543
		if(this.options.slideInfoZoneSlide)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   544
			this.slideInfoZone.start({'opacity': [0, this.options.slideInfoZoneOpacity], 'height': [0, this.slideInfoZone.normalHeight]});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   545
		else
0d28b7c10758 First commit
ymh
parents:
diff changeset
   546
			this.slideInfoZone.start({'opacity': [0, this.options.slideInfoZoneOpacity]});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   547
		if (this.options.showCarousel)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   548
			this.slideInfoZone.chain(this.centerCarouselOn.pass(this.currentIter, this));
0d28b7c10758 First commit
ymh
parents:
diff changeset
   549
		return this.slideInfoZone;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   550
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   551
	hideInfoSlideShow: function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   552
		this.fireEvent('onHideInfopane');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   553
		this.slideInfoZone.clearTimer();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   554
		if(this.options.slideInfoZoneSlide)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   555
			this.slideInfoZone.start({'opacity': 0, 'height': 0});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   556
		else
0d28b7c10758 First commit
ymh
parents:
diff changeset
   557
			this.slideInfoZone.start({'opacity': 0});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   558
		return this.slideInfoZone;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   559
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   560
	makeLink: function(num) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   561
		this.currentLink.setProperties({
0d28b7c10758 First commit
ymh
parents:
diff changeset
   562
			href: this.galleryData[num].link,
0d28b7c10758 First commit
ymh
parents:
diff changeset
   563
			title: this.galleryData[num].linkTitle
0d28b7c10758 First commit
ymh
parents:
diff changeset
   564
		})
0d28b7c10758 First commit
ymh
parents:
diff changeset
   565
		if (!((this.options.embedLinks) && (!this.options.showArrows) && (!this.options.showCarousel)))
0d28b7c10758 First commit
ymh
parents:
diff changeset
   566
			this.currentLink.setStyle('display', 'block');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   567
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   568
	clearLink: function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   569
		this.currentLink.setProperties({href: '', title: ''});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   570
		if (!((this.options.embedLinks) && (!this.options.showArrows) && (!this.options.showCarousel)))
0d28b7c10758 First commit
ymh
parents:
diff changeset
   571
			this.currentLink.setStyle('display', 'none');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   572
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   573
	/* To change the gallery data, those two functions : */
0d28b7c10758 First commit
ymh
parents:
diff changeset
   574
	flushGallery: function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   575
		this.galleryElements.each(function(myFx) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   576
			myFx.element.remove();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   577
			myFx = myFx.element = null;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   578
		});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   579
		this.galleryElements = [];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   580
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   581
	changeData: function(data) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   582
		this.galleryData = data;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   583
		this.clearTimer();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   584
		this.flushGallery();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   585
		if (this.options.showCarousel) this.flushCarousel();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   586
		this.constructElements();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   587
		if (this.options.showCarousel) this.fillCarousel();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   588
		if (this.options.showInfopane) this.hideInfoSlideShow();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   589
		this.galleryInit=1;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   590
		this.lastIter=0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   591
		this.currentIter=0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   592
		this.doSlideShow(1);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   593
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   594
	/* Plugins: HistoryManager */
0d28b7c10758 First commit
ymh
parents:
diff changeset
   595
	initHistory: function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   596
		this.fireEvent('onHistoryInit');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   597
		this.historyKey = this.galleryElement.id + '-picture';
0d28b7c10758 First commit
ymh
parents:
diff changeset
   598
		if (this.options.customHistoryKey)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   599
			this.historyKey = this.options.customHistoryKey();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   600
		this.history = HistoryManager.register(
0d28b7c10758 First commit
ymh
parents:
diff changeset
   601
			this.historyKey,
0d28b7c10758 First commit
ymh
parents:
diff changeset
   602
			[1],
0d28b7c10758 First commit
ymh
parents:
diff changeset
   603
			function(values) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   604
				if (parseInt(values[0])-1 < this.maxIter)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   605
					this.goTo(parseInt(values[0])-1);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   606
			}.bind(this),
0d28b7c10758 First commit
ymh
parents:
diff changeset
   607
			function(values) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   608
				return [this.historyKey, '(', values[0], ')'].join('');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   609
			}.bind(this),
0d28b7c10758 First commit
ymh
parents:
diff changeset
   610
			this.historyKey + '\\((\\d+)\\)');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   611
		this.addEvent('onChanged', function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   612
			this.history.setValue(0, this.currentIter+1);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   613
		}.bind(this));
0d28b7c10758 First commit
ymh
parents:
diff changeset
   614
		this.fireEvent('onHistoryInited');
0d28b7c10758 First commit
ymh
parents:
diff changeset
   615
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   616
};
0d28b7c10758 First commit
ymh
parents:
diff changeset
   617
gallery = new Class(gallery);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   618
gallery.implement(new Events);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   619
gallery.implement(new Options);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   620
0d28b7c10758 First commit
ymh
parents:
diff changeset
   621
gallery.Transitions = new Abstract ({
0d28b7c10758 First commit
ymh
parents:
diff changeset
   622
	fade: function(oldFx, newFx, oldPos, newPos){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   623
		oldFx.options.transition = newFx.options.transition = Fx.Transitions.linear;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   624
		oldFx.options.duration = newFx.options.duration = this.options.fadeDuration;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   625
		if (newPos > oldPos) newFx.start({opacity: 1});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   626
		else
0d28b7c10758 First commit
ymh
parents:
diff changeset
   627
		{
0d28b7c10758 First commit
ymh
parents:
diff changeset
   628
			newFx.set({opacity: 1});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   629
			oldFx.start({opacity: 0});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   630
		}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   631
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   632
	crossfade: function(oldFx, newFx, oldPos, newPos){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   633
		oldFx.options.transition = newFx.options.transition = Fx.Transitions.linear;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   634
		oldFx.options.duration = newFx.options.duration = this.options.fadeDuration;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   635
		newFx.start({opacity: 1});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   636
		oldFx.start({opacity: 0});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   637
	},
0d28b7c10758 First commit
ymh
parents:
diff changeset
   638
	fadebg: function(oldFx, newFx, oldPos, newPos){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   639
		oldFx.options.transition = newFx.options.transition = Fx.Transitions.linear;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   640
		oldFx.options.duration = newFx.options.duration = this.options.fadeDuration / 2;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   641
		oldFx.start({opacity: 0}).chain(newFx.start.pass([{opacity: 1}], newFx));
0d28b7c10758 First commit
ymh
parents:
diff changeset
   642
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   643
});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   644
0d28b7c10758 First commit
ymh
parents:
diff changeset
   645
/* All code copyright 2007 Jonathan Schemoul */
0d28b7c10758 First commit
ymh
parents:
diff changeset
   646
0d28b7c10758 First commit
ymh
parents:
diff changeset
   647
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   648
 * Follows: Preloader (class)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   649
 * Simple class for preloading images with support for progress reporting
0d28b7c10758 First commit
ymh
parents:
diff changeset
   650
 * Copyright 2007 Tomocchino.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   651
 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
0d28b7c10758 First commit
ymh
parents:
diff changeset
   652
0d28b7c10758 First commit
ymh
parents:
diff changeset
   653
var Preloader = new Class({
0d28b7c10758 First commit
ymh
parents:
diff changeset
   654
  
0d28b7c10758 First commit
ymh
parents:
diff changeset
   655
  Implements: [Events, Options],
0d28b7c10758 First commit
ymh
parents:
diff changeset
   656
0d28b7c10758 First commit
ymh
parents:
diff changeset
   657
  options: {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   658
    root        : '',
0d28b7c10758 First commit
ymh
parents:
diff changeset
   659
    period      : 100
0d28b7c10758 First commit
ymh
parents:
diff changeset
   660
  },
0d28b7c10758 First commit
ymh
parents:
diff changeset
   661
  
0d28b7c10758 First commit
ymh
parents:
diff changeset
   662
  initialize: function(options){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   663
    this.setOptions(options);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   664
  },
0d28b7c10758 First commit
ymh
parents:
diff changeset
   665
  
0d28b7c10758 First commit
ymh
parents:
diff changeset
   666
  load: function(sources) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   667
    this.index = 0;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   668
    this.images = [];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   669
    this.sources = this.temps = sources;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   670
    this.total = this. sources.length;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   671
    
0d28b7c10758 First commit
ymh
parents:
diff changeset
   672
    this.fireEvent('onStart', [this.index, this.total]);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   673
    this.timer = this.progress.periodical(this.options.period, this);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   674
    
0d28b7c10758 First commit
ymh
parents:
diff changeset
   675
    this.sources.each(function(source, index){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   676
      this.images[index] = new Asset.image(this.options.root + source, {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   677
        'onload'  : function(){ this.index++; if(this.images[index]) this.fireEvent('onLoad', [this.images[index], index, source]); }.bind(this),
0d28b7c10758 First commit
ymh
parents:
diff changeset
   678
        'onerror' : function(){ this.index++; this.fireEvent('onError', [this.images.splice(index, 1), index, source]); }.bind(this),
0d28b7c10758 First commit
ymh
parents:
diff changeset
   679
        'onabort' : function(){ this.index++; this.fireEvent('onError', [this.images.splice(index, 1), index, source]); }.bind(this)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   680
      });
0d28b7c10758 First commit
ymh
parents:
diff changeset
   681
    }, this);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   682
  },
0d28b7c10758 First commit
ymh
parents:
diff changeset
   683
  
0d28b7c10758 First commit
ymh
parents:
diff changeset
   684
  progress: function() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   685
    this.fireEvent('onProgress', [Math.min(this.index, this.total), this.total]);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   686
    if(this.index >= this.total) this.complete();
0d28b7c10758 First commit
ymh
parents:
diff changeset
   687
  },
0d28b7c10758 First commit
ymh
parents:
diff changeset
   688
  
0d28b7c10758 First commit
ymh
parents:
diff changeset
   689
  complete: function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   690
    $clear(this.timer);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   691
    this.fireEvent('onComplete', [this.images]);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   692
  },
0d28b7c10758 First commit
ymh
parents:
diff changeset
   693
  
0d28b7c10758 First commit
ymh
parents:
diff changeset
   694
  cancel: function(){
0d28b7c10758 First commit
ymh
parents:
diff changeset
   695
    $clear(this.timer);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   696
  }
0d28b7c10758 First commit
ymh
parents:
diff changeset
   697
  
0d28b7c10758 First commit
ymh
parents:
diff changeset
   698
});
0d28b7c10758 First commit
ymh
parents:
diff changeset
   699
0d28b7c10758 First commit
ymh
parents:
diff changeset
   700
Preloader.implement(new Events, new Options);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   701
0d28b7c10758 First commit
ymh
parents:
diff changeset
   702
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
0d28b7c10758 First commit
ymh
parents:
diff changeset
   703
 * Follows: formatString (function)
0d28b7c10758 First commit
ymh
parents:
diff changeset
   704
 * Original name: Yahoo.Tools.printf
0d28b7c10758 First commit
ymh
parents:
diff changeset
   705
 * Copyright Yahoo.
0d28b7c10758 First commit
ymh
parents:
diff changeset
   706
 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
0d28b7c10758 First commit
ymh
parents:
diff changeset
   707
0d28b7c10758 First commit
ymh
parents:
diff changeset
   708
function formatString() {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   709
	var num = arguments.length;
0d28b7c10758 First commit
ymh
parents:
diff changeset
   710
	var oStr = arguments[0];
0d28b7c10758 First commit
ymh
parents:
diff changeset
   711
	for (var i = 1; i < num; i++) {
0d28b7c10758 First commit
ymh
parents:
diff changeset
   712
		var pattern = "\\{" + (i-1) + "\\}"; 
0d28b7c10758 First commit
ymh
parents:
diff changeset
   713
		var re = new RegExp(pattern, "g");
0d28b7c10758 First commit
ymh
parents:
diff changeset
   714
		oStr = oStr.replace(re, arguments[i]);
0d28b7c10758 First commit
ymh
parents:
diff changeset
   715
	}
0d28b7c10758 First commit
ymh
parents:
diff changeset
   716
	return oStr; 
0d28b7c10758 First commit
ymh
parents:
diff changeset
   717
}