Results 1 to 5 of 5
  1. #1
    Join Date
    Feb 2009
    Posts
    32
    Plugin Contributions
    0

    Default Index Page Slideshow Not Showing Transition Effects

    Hey Guys,

    I have installed a slideshow for the index page of my website, which you can view test version at http :// marcsebastien. com /us/ ... As you'll see, the slideshow works regarding its main purpose "sliding", but no fading transitions seem to be applied. And that's my problem here.

    This is how the slideshow is dispatched to work in zencart... there are 4 parts essentially...

    1) pix are placed in includes/templates/YOUR_TEMPLATE/images/slideshow/

    2) the javascript files are placed in includes/modules/pages/index/ and here they are below:

    2.1) One file is jscript_mootools.js
    2.2) jscript_slideshow.js
    I will share it right after this post, otherwise, I'm gonna exceed the length limit... ;-) However, you barely get to change anything in this file. In my case, how long the pic will stay and the duration of the transition.


    2.3) jscript_slideshow.php
    HTML Code:
    <script type="text/javascript">		
    	//<![CDATA[
    	
    	  window.addEvent('domready', function(){
    	    var data = {
    	    	'first_pic.jpg': { href:'optional_url' },	    	
    	    	'and_so_on': { href:'optional_url' }
    	    };
    	    var myShow = new Slideshow('show', data, {controller: false, height: YOUR_HEIGHT, hu: 'includes/templates/YOUR_TEMPLATES/images/slideshow', thumbnails: false, width: YOUR_WIDTH});
    	  });
    	
    	//]]>
    </script>
    In order to execute the slideshow, you just need to place the following div where you want on the index page...

    HTML Code:
    <div id="show" class="slideshow"></div>
    Anybody knows where the snag might hide? Sorry for the loooong post but I figured I'd give as much info as I could. Plus someone else might enjoy using a working slideshow on their zencart store. (sorry, don't remember where I found it... I'll research and amend my post tho)

    THANX A VILLAGE! ^_^
    Last edited by joomoo79; 2 Dec 2009 at 10:33 AM.

  2. #2
    Join Date
    Feb 2009
    Posts
    32
    Plugin Contributions
    0

    Default Re: Index Page Slideshow Not Showing Transition Effects

    So here's the jscript_slideshow.js file...

    Code:
    /**
    Script: Slideshow.js
    	Slideshow - A javascript class for Mootools to stream and animate the presentation of images on your website.
    
    License:
    	MIT-style license.
    
    Copyright:
    	Copyright (c) 2008 [Aeron Glemann](http://www.electricprism.com/aeron/).
    
    Dependencies:
    	Mootools 1.2 Core: Fx.Morph, Fx.Tween, Selectors, Element.Dimensions.
    	Mootools 1.2 More: Assets.
    */
    
    Slideshow = new Class({
    	Implements: [Chain, Events, Options],
    	
    	options: {/*
    		onComplete: $empty,
    		onEnd: $empty,
    		onStart: $empty,*/
    		captions: false,
    		center: true,
    		classes: [],
    		controller: false,
    		delay: 4000,
    		duration: 1000,
    		fast: false,
    		height: false,
    		href: '',
    		hu: '',
    		linked: false,
    		loader: {'animate': ['css/slide/loader-#.png', 12]},
    		loop: true,
    		match: /\?slide=(\d+)$/,
    		overlap: true,
    		paused: false,
    		properties: ['href', 'rel', 'rev', 'title'],
    		random: false,
    		replace: [/(\.[^\.]+)$/, 't$1'],
    		resize: 'width',
    		slide: 0,
    		thumbnails: false,
    		titles: true,
    		transition: function(p){return -(Math.cos(Math.PI * p) - 1) / 2;},
    		width: false
    	},
    	
    /**
    Constructor: initialize
    	Creates an instance of the Slideshow class.
    	
    Arguments:
    	element - (element) The wrapper element.
    	data - (array or object) The images and optional thumbnails, captions and links for the show.
    	options - (object) The options below.
    	
    Syntax:
    	var myShow = new Slideshow(element, data, options);
    */
    
    	initialize: function(el, data, options){	
    		this.setOptions(options);
    		this.slideshow = $(el);
    		if (!this.slideshow) 
    			return;
    		this.slideshow.set('styles', {'display': 'block', 'position': 'relative', 'z-index': 0});
    		var match = window.location.href.match(this.options.match);
    		this.slide = (this.options.match && match) ? match[1].toInt() : this.options.slide;
    		this.counter = this.delay = this.transition = 0;
    		this.direction = 'left';
    		this.paused = false;
    		if (!this.options.overlap)
    			this.options.duration *= 2;
    		var anchor = this.slideshow.getElement('a') || new Element('a');
    		if (!this.options.href)
    			this.options.href = anchor.get('href') || '';
    		if (this.options.hu.length && !this.options.hu.test(/\/$/)) 
    			this.options.hu += '/';
    		if (this.options.fast === true)
    			this.options.fast = 2;
    			
    		// styles
    		
    		var keys = ['slideshow', 'first', 'prev', 'play', 'pause', 'next', 'last', 'images', 'captions', 'controller', 'thumbnails', 'hidden', 'visible', 'inactive', 'active', 'loader'];
    		var values = keys.map(function(key, i){
    			return this.options.classes[i] || key;
    		}, this);
    		this.classes = values.associate(keys);
    		this.classes.get = function(){
    			var str = '.' + this.slideshow;
    			for (var i = 0, l = arguments.length; i < l; i++)
    				str += ('-' + this[arguments[i]]);
    			return str;
    		}.bind(this.classes);
    			
    		// data	
    			
    		if (!data){
    			this.options.hu = '';
    			data = {};
    			var thumbnails = this.slideshow.getElements(this.classes.get('thumbnails') + ' img');
    			this.slideshow.getElements(this.classes.get('images/slideshow') + ' img').each(function(img, i){
    				var src = img.get('src');
    				var caption = $pick(img.get('alt'), img.get('title'), '');
    				var parent = img.getParent();
    				var properties = (parent.get('tag') == 'a') ? parent.getProperties : {};
    				var href = img.getParent().get('href') || '';
    				var thumbnail = (thumbnails[i]) ? thumbnails[i].get('src') : '';
    				data[src] = {'caption': caption, 'href': href, 'thumbnail': thumbnail};
    			});
    		}
    		var loaded = this.load(data);
    		if (!loaded)
    			return; 
    		
    		// events
    		
    		this.events = $H({'keydown': [], 'keyup': [], 'mousemove': []});
    		var keyup = function(e){
    			switch(e.key){
    				case 'left': 
    					this.prev(e.shift); break;
    				case 'right': 
    					this.next(e.shift); break;
    				case 'p': 
    					this.pause(); break;
    			}
    		}.bind(this);		
    		this.events.keyup.push(keyup);
    		document.addEvent('keyup', keyup);
    
    		// required elements
    			
    		var el = this.slideshow.getElement(this.classes.get('images'));
    		var images = (el) ? el.empty() : new Element('div', {'class': this.classes.get('images').substr(1)}).inject(this.slideshow);
    		var div = images.getSize();
    		this.height = this.options.height || div.y;		
    		this.width = this.options.width || div.x;
    		images.set({'styles': {'display': 'block', 'height': this.height, 'overflow': 'hidden', 'position': 'relative', 'width': this.width}});
    		this.slideshow.store('images', images);
    		this.a = this.image = this.slideshow.getElement('img') || new Element('img');
    		if (Browser.Engine.trident && Browser.Engine.version > 4)
    			this.a.style.msInterpolationMode = 'bicubic';
    		this.a.set('styles', {'display': 'none', 'position': 'absolute', 'zIndex': 1});
    		this.b = this.a.clone();
    		[this.a, this.b].each(function(img){
    			anchor.clone().cloneEvents(anchor).grab(img).inject(images);
    		});
    		
    		// optional elements
    		
    		if (this.options.captions)
     			this._captions();
    		if (this.options.controller)
    			this._controller();
    		if (this.options.loader)
     			this._loader();
    		if (this.options.thumbnails)
    			this._thumbnails();
    			
    		// begin show
    		
    		this._preload();
    	},
    	
    /**
    Public method: go
    	Jump directly to a slide in the show.
    
    Arguments:
    	n - (integer) The index number of the image to jump to, 0 being the first image in the show.
    	
    Syntax:
    	myShow.go(n);	
    */
    
    	go: function(n, direction){
    		if ((this.slide - 1 + this.data.images.length) % this.data.images.length == n || $time() < this.transition)
    			return;		
    		$clear(this.timer);
    		this.delay = 0;		
    		this.direction = (direction) ? direction : ((n < this.slide) ? 'right' : 'left');
    		this.slide = n;
    		if (this.preloader) 
    			this.preloader = this.preloader.destroy();
    		this._preload(this.options.fast == 2 || (this.options.fast == 1 && this.paused));
    	},
    
    /**
    Public method: first
    	Goes to the first image in the show.
    
    Syntax:
    	myShow.first();	
    */
    
    	first: function(){
    		this.prev(true); 
    	},
    
    /**
    Public method: prev
    	Goes to the previous image in the show.
    
    Syntax:
    	myShow.prev();	
    */
    
    	prev: function(first){
    		var n = 0;
    		if (!first){
    			if (this.options.random){
    				
    				// if it's a random show get the previous slide from the showed array
    
    				if (this.showed.i < 2)
    					return;
    				this.showed.i -= 2;
    				n = this.showed.array[this.showed.i];
    			}
    			else
    				n = (this.slide - 2 + this.data.images.length) % this.data.images.length;									
    		}
    		this.go(n, 'right');
    	},
    
    /**
    Public method: pause
    	Toggles play / pause state of the show.
    
    Arguments:
    	p - (undefined, 1 or 0) Call pause with no arguments to toggle the pause state. Call pause(1) to force pause, or pause(0) to force play.
    
    Syntax:
    	myShow.pause(p);	
    */
    
    	pause: function(p){
    		if ($chk(p))
    			this.paused = (p) ? false : true;
    		if (this.paused){
    			this.paused = false;
    			this.delay = this.transition = 0;		
    			this.timer = this._preload.delay(100, this);
    			[this.a, this.b].each(function(img){
    				['morph', 'tween'].each(function(p){
    					if (this.retrieve(p)) this.get(p).resume();
    				}, img);
    			});
    			if (this.options.controller)
    				this.slideshow.getElement('.' + this.classes.pause).removeClass(this.classes.play);
    		} 
    		else {
    			this.paused = true;
    			this.delay = Number.MAX_VALUE;
    			this.transition = 0;
    			$clear(this.timer);
    			[this.a, this.b].each(function(img){
    				['morph', 'tween'].each(function(p){
    					if (this.retrieve(p)) this.get(p).pause();
    				}, img);
    			});
    			if (this.options.controller)
    				this.slideshow.getElement('.' + this.classes.pause).addClass(this.classes.play);
    		}
    	},
    	
    /**
    Public method: next
    	Goes to the next image in the show.
    
    Syntax:
    	myShow.next();	
    */
    
    	next: function(last){
    		var n = (last) ? this.data.images.length - 1 : this.slide;
    		this.go(n, 'left');
    	},
    
    /**
    Public method: last
    	Goes to the last image in the show.
    
    Syntax:
    	myShow.last();	
    */
    
    	last: function(){
    		this.next(true); 
    	},
    
    /**
    Public method: load
    	Loads a new data set into the show: will stop the current show, rewind and rebuild thumbnails if applicable.
    
    Arguments:
    	data - (array or object) The images and optional thumbnails, captions and links for the show.
    
    Syntax:
    	myShow.load(data);
    */
    
    	load: function(data){
    		this.firstrun = true;
    		this.showed = {'array': [], 'i': 0};
    		if ($type(data) == 'array'){
    			this.options.captions = false;			
    			data = new Array(data.length).associate(data.map(function(image, i){ return image + '?' + i })); 
    		}
    		this.data = {'images': [], 'captions': [], 'hrefs': [], 'thumbnails': []};
    		for (var image in data){
    			var obj = data[image] || {};
    			var caption = (obj.caption) ? obj.caption.trim() : '';
    			var href = (obj.href) ? obj.href.trim() : ((this.options.linked) ? this.options.hu + image : this.options.href);
    			var thumbnail = (obj.thumbnail) ? obj.thumbnail.trim() : image.replace(this.options.replace[0], this.options.replace[1]);
    			this.data.images.push(image);
    			this.data.captions.push(caption);
    			this.data.hrefs.push(href);
    			this.data.thumbnails.push(thumbnail);
    		}
    		if (this.options.random)
    			this.slide = $random(0, this.data.images.length - 1);
    		
    		// only run when data is loaded dynamically into an existing slideshow instance
    		
    		if (this.options.thumbnails && this.slideshow.retrieve('thumbnails'))
    			this._thumbnails();
    		if (this.slideshow.retrieve('images')){
    			[this.a, this.b].each(function(img){
    				['morph', 'tween'].each(function(p){
    					if (this.retrieve(p)) this.get(p).cancel();
    				}, img);
    			});
    			this.slide = this.transition = 0;
    			this.go(0);		
    		}
    		return this.data.images.length;
    	},
    	
    /**
    Public method: destroy
    	Destroys a Slideshow instance.
    
    Arguments:
    	p - (string) The images and optional thumbnails, captions and links for the show.
    
    Syntax:
    	myShow.destroy(p);
    */
    
    	destroy: function(p){
    		this.events.each(function(array, e){
    			array.each(function(fn){ document.removeEvent(e, fn); });
    		});
    		this.pause(1);
    		if (this.options.loader)
    			$clear(this.slideshow.retrieve('loader').retrieve('timer'));		
    		if (this.options.thumbnails)
    			$clear(this.slideshow.retrieve('thumbnails').retrieve('timer'));
    		this.slideshow.uid = Native.UID++;
    		if (p)
    			this.slideshow[p]();
    	},
    	
    /**
    Private method: preload
    	Preloads the next slide in the show, once loaded triggers the show, updates captions, thumbnails, etc.
    */
    
    	_preload: function(fast){
    		if (!this.preloader)
    		 	this.preloader = new Asset.image(this.options.hu + this.data.images[this.slide], {'onload': function(){
    				this.store('loaded', true);
    			}});	
    		if (this.preloader.retrieve('loaded') && $time() > this.delay && $time() > this.transition){
    			if (this.stopped){
    				if (this.options.captions)
    					this.slideshow.retrieve('captions').get('morph').cancel().start(this.classes.get('captions', 'hidden'));
    				this.pause(1);
    				if (this.end)
    					this.fireEvent('end');
    				this.stopped = this.end = false;
    				return;				
    			}					
    			this.image = (this.counter % 2) ? this.b : this.a;
    			this.image.set('styles', {'display': 'block', 'height': 'auto', 'visibility': 'hidden', 'width': 'auto', 'zIndex': this.counter});
    			['src', 'height', 'width'].each(function(prop){
    				this.image.set(prop, this.preloader.get(prop));
    			}, this);
    			this._resize(this.image);
    			this._center(this.image);
    			var anchor = this.image.getParent();
    			if (this.data.hrefs[this.slide])
    				anchor.set('href', this.data.hrefs[this.slide]);			
    			else
    				anchor.erase('href');
    			var text = (this.data.captions[this.slide])
    				? this.data.captions[this.slide].replace(/<.+?>/gm, '').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, "'") 
    				: '';
    			this.image.set('alt', text);		
    			if (this.options.titles)
    				anchor.set('title', text);
    			if (this.options.loader)
    				this.slideshow.retrieve('loader').fireEvent('hide');
    			if (this.options.captions)
    				this.slideshow.retrieve('captions').fireEvent('update', fast);				
    			if (this.options.thumbnails)
    				this.slideshow.retrieve('thumbnails').fireEvent('update', fast); 			
    			this._show(fast);
    			this._loaded();
    		} 
    		else {
    			if ($time() > this.delay && this.options.loader)
    				this.slideshow.retrieve('loader').fireEvent('show');
    			this.timer = (this.paused && this.preloader.retrieve('loaded')) ? null : this._preload.delay(100, this, fast); 
    		}
    	},

  3. #3
    Join Date
    Feb 2009
    Posts
    32
    Plugin Contributions
    0

    Default Re: Index Page Slideshow Not Showing Transition Effects

    Annnnnnnnnnd part 2.

    Code:
    /**
    Private method: show
    	Does the slideshow effect.
    */
    
    	_show: function(fast){
    		if (!this.image.retrieve('morph')){
    			var options = (this.options.overlap) ? {'duration': this.options.duration, 'link': 'cancel'} : {'duration': this.options.duration / 2, 'link': 'chain'};
    			$$(this.a, this.b).set('morph', $merge(options, {'onStart': this._start.bind(this), 'onComplete': this._complete.bind(this), 'transition': this.options.transition}));
    		}
    		var hidden = this.classes.get('images', ((this.direction == 'left') ? 'next' : 'prev'));
    		var visible = this.classes.get('images', 'visible');
    		var img = (this.counter % 2) ? this.a : this.b;
    		if (fast){			
    			img.get('morph').cancel().set(hidden);
    			this.image.get('morph').cancel().set(visible); 			
    		} 
    		else {
    			if (this.options.overlap){
    				img.get('morph').set(visible);
    				this.image.get('morph').set(hidden).start(visible);
    			} 
    			else	{
    				var fn = function(hidden, visible){
    					this.image.get('morph').set(hidden).start(visible);
    				}.pass([hidden, visible], this);
    				hidden = this.classes.get('images', ((this.direction == 'left') ? 'prev' : 'next'));
    				img.get('morph').set(visible).start(hidden).chain(fn);
    			}
    		}
    	},
    	
    /**
    Private method: loaded
    	Run after the current image has been loaded, sets up the next image to be shown.
    */
    
    	_loaded: function(){
    		this.counter++;
    		this.delay = (this.paused) ? Number.MAX_VALUE : $time() + this.options.duration + this.options.delay;
    		this.direction = 'left';
    		this.transition = (this.options.fast == 2 || (this.options.fast == 1 && this.paused)) ? 0 : $time() + this.options.duration;			
    		if (this.slide + 1 == this.data.images.length && !this.options.loop && !this.options.random)
    			this.stopped = this.end = true;			
    		if (this.options.random){
    			this.showed.i++;
    			if (this.showed.i >= this.showed.array.length){
    				var n = this.slide;
    				if (this.showed.array.getLast() != n) this.showed.array.push(n);
    				while (this.slide == n)
    					this.slide = $random(0, this.data.images.length - 1);				
    			}
    			else
    				this.slide = this.showed.array[this.showed.i];
    		}
    		else
    			this.slide = (this.slide + 1) % this.data.images.length;
    		if (this.image.getStyle('visibility') != 'visible')
    			(function(){ this.image.setStyle('visibility', 'visible'); }).delay(1, this);			
    		if (this.preloader) 
    			this.preloader = this.preloader.destroy();
    		this._preload();
    	},
    
    /**
    Private method: center
    	Center an image.
    */
    
    	_center: function(img){
    		if (this.options.center){
    			var size = img.getSize();
    			img.set('styles', {'left': (size.x - this.width) / -2, 'top': (size.y - this.height) / -2});
    		}
    	},
    
    /**
    Private method: resize
    	Resizes an image.
    */
    
    	_resize: function(img){
    		if (this.options.resize){
    			var h = this.preloader.get('height'), w = this.preloader.get('width');
    			var dh = this.height / h, dw = this.width / w, d;
    			if (this.options.resize == 'length')
    				d = (dh > dw) ? dw : dh;
    			else
    				d = (dh > dw) ? dh : dw;
    			img.set('styles', {height: Math.ceil(h * d), width: Math.ceil(w * d)});
    		}	
    	},
    
    /**
    Private method: start
    	Callback on start of slide change.
    */
    
    	_start: function(){		
    		this.fireEvent('start');
    	},
    
    /**
    Private method: complete
    	Callback on start of slide change.
    */
    
    	_complete: function(){
    		if (this.firstrun && this.options.paused){
    			this.firstrun = false;
    			this.pause(1);
    		}
    		this.fireEvent('complete');
    	},
    
    /**
    Private method: captions
    	Builds the optional caption element, adds interactivity.
    	This method can safely be removed if the captions option is not enabled.
    */
    
    	_captions: function(){
     		if (this.options.captions === true) 
     			this.options.captions = {};
    		var el = this.slideshow.getElement(this.classes.get('captions'));
    		var captions = (el) ? el.empty() : new Element('div', {'class': this.classes.get('captions').substr(1)}).inject(this.slideshow);
    		captions.set({
    			'events': {
    				'update': function(fast){	
    					var captions = this.slideshow.retrieve('captions');
    					var empty = (this.data.captions[this.slide] === '');
    					if (fast){
    						var p = (empty) ? 'hidden' : 'visible';
    						captions.set('html', this.data.captions[this.slide]).get('morph').cancel().set(this.classes.get('captions', p));
    					}
    					else {
    						var fn = (empty) ? $empty : function(n){
    							this.slideshow.retrieve('captions').set('html', this.data.captions[n]).morph(this.classes.get('captions', 'visible'))
    						}.pass(this.slide, this);		
    						captions.get('morph').cancel().start(this.classes.get('captions', 'hidden')).chain(fn);
    					}
    				}.bind(this)
    			},
    			'morph': $merge(this.options.captions, {'link': 'chain'})
    		});
    		this.slideshow.store('captions', captions);
    	},
    
    /**
    Private method: controller
    	Builds the optional controller element, adds interactivity.
    	This method can safely be removed if the controller option is not enabled.
    */
    
    	_controller: function(){
     		if (this.options.controller === true)
     			this.options.controller = {};
    		var el = this.slideshow.getElement(this.classes.get('controller'));
    		var controller = (el) ? el.empty() : new Element('div', {'class': this.classes.get('controller').substr(1)}).inject(this.slideshow);
    		var ul = new Element('ul').inject(controller);
    		$H({'first': 'Shift + Leftwards Arrow', 'prev': 'Leftwards Arrow', 'pause': 'P', 'next': 'Rightwards Arrow', 'last': 'Shift + Rightwards Arrow'}).each(function(accesskey, action){
    			var li = new Element('li', {
    				'class': (action == 'pause' && this.options.paused) ? this.classes.play + ' ' + this.classes[action] : this.classes[action]
    			}).inject(ul);
    			var a = this.slideshow.retrieve(action, new Element('a', {
    				'title': ((action == 'pause') ? this.classes.play.capitalize() + ' / ' : '') + this.classes[action].capitalize() + ' [' + accesskey + ']'				
    			}).inject(li));
    			a.set('events', {
    				'click': function(action){this[action]();}.pass(action, this),
    				'mouseenter': function(active){this.addClass(active);}.pass(this.classes.active, a),
    				'mouseleave': function(active){this.removeClass(active);}.pass(this.classes.active, a)
    			});		
    		}, this);
    		controller.set({
    			'events': {
    				'hide': function(hidden){  
    					if (!this.retrieve('hidden'))
    						this.store('hidden', true).morph(hidden);
    				}.pass(this.classes.get('controller', 'hidden'), controller),
    				'show': function(visible){  
    					if (this.retrieve('hidden'))
    						this.store('hidden', false).morph(visible);
    				}.pass(this.classes.get('controller', 'visible'), controller)
    			},
    			'morph': $merge(this.options.controller, {'link': 'cancel'})
    		}).store('hidden', false);
    		var keydown = function(e){
    			if (['left', 'right', 'p'].contains(e.key)){
    				var controller = this.slideshow.retrieve('controller');
    				if (controller.retrieve('hidden'))
    					controller.get('morph').set(this.classes.get('controller', 'visible')); 			
    				switch(e.key){
    					case 'left': 
    						this.slideshow.retrieve((e.shift) ? 'first' : 'prev').fireEvent('mouseenter'); break;
    					case 'right':
    						this.slideshow.retrieve((e.shift) ? 'last' : 'next').fireEvent('mouseenter'); break;
    					default:
    						this.slideshow.retrieve('pause').fireEvent('mouseenter'); break;
    				}
    			}
    		}.bind(this);
    		this.events.keydown.push(keydown);
    		var keyup = function(e){
    			if (['left', 'right', 'p'].contains(e.key)){
    				var controller = this.slideshow.retrieve('controller');
    				if (controller.retrieve('hidden'))
    					controller.store('hidden', false).fireEvent('hide'); 
    				switch(e.key){
    					case 'left': 
    						this.slideshow.retrieve((e.shift) ? 'first' : 'prev').fireEvent('mouseleave'); break;
    					case 'right': 
    						this.slideshow.retrieve((e.shift) ? 'last' : 'next').fireEvent('mouseleave'); break;
    					default:
    						this.slideshow.retrieve('pause').fireEvent('mouseleave'); break;
    				}
    			}
    		}.bind(this);
    		this.events.keyup.push(keyup);
    		var mousemove = function(e){
    			var images = this.slideshow.retrieve('images').getCoordinates();
    			if (e.page.x > images.left && e.page.x < images.right && e.page.y > images.top && e.page.y < images.bottom)
    				this.slideshow.retrieve('controller').fireEvent('show');
    			else
    				this.slideshow.retrieve('controller').fireEvent('hide');
    		}.bind(this);
    		this.events.mousemove.push(mousemove);
    		document.addEvents({'keydown': keydown, 'keyup': keyup, 'mousemove': mousemove});
    		this.slideshow.retrieve('controller', controller).fireEvent('hide');
    	},
    
    /**
    Private method: loader
    	Builds the optional loader element, adds interactivity.
    	This method can safely be removed if the loader option is not enabled.
    */
    
    	_loader: function(){
     		if (this.options.loader === true) 
     			this.options.loader = {};
    		var loader = new Element('div', {
    			'class': this.classes.get('loader').substr(1),				
    			'morph': $merge(this.options.loader, {'link': 'cancel'})
    		}).store('hidden', false).store('i', 1).inject(this.slideshow.retrieve('images'));
    		if (this.options.loader.animate){
    			for (var i = 0; i < this.options.loader.animate[1]; i++)
    				img = new Asset.image(this.options.loader.animate[0].replace(/#/, i));
    			if (Browser.Engine.trident4 && this.options.loader.animate[0].contains('png'))
    				loader.setStyle('backgroundImage', 'none');					
    		}
    		loader.set('events', {
    			'animate': function(){  
    				var loader = this.slideshow.retrieve('loader');				
    				var i = (loader.retrieve('i').toInt() + 1) % this.options.loader.animate[1];
    				loader.store('i', i);
    				var img = this.options.loader.animate[0].replace(/#/, i);
    				if (Browser.Engine.trident4 && this.options.loader.animate[0].contains('png'))
    					loader.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + img + '", sizingMethod="scale")';
    				else 
    					loader.setStyle('backgroundImage', 'url(' + img + ')');
    			}.bind(this),
    			'hide': function(){  
    				var loader = this.slideshow.retrieve('loader');
    				if (!loader.retrieve('hidden')){
    					loader.store('hidden', true).morph(this.classes.get('loader', 'hidden'));
    					if (this.options.loader.animate)
    						$clear(loader.retrieve('timer'));					
    				}
    			}.bind(this),
    			'show': function(){  
    				var loader = this.slideshow.retrieve('loader');
    				if (loader.retrieve('hidden')){
    					loader.store('hidden', false).morph(this.classes.get('loader', 'visible'));
    					if (this.options.loader.animate)
    						loader.store('timer', function(){this.fireEvent('animate');}.periodical(50, loader));
    				}
    			}.bind(this)
    		});
    		this.slideshow.retrieve('loader', loader).fireEvent('hide');
    	},
    	
    /**
    Private method: thumbnails
    	Builds the optional thumbnails element, adds interactivity.
    	This method can safely be removed if the thumbnails option is not enabled.
    */
    
    	_thumbnails: function(){
     		if (this.options.thumbnails === true) 
     			this.options.thumbnails = {}; 
    		var el = this.slideshow.getElement(this.classes.get('thumbnails'));
    		var thumbnails = (el) ? el.empty() : new Element('div', {'class': this.classes.get('thumbnails').substr(1)}).inject(this.slideshow);
    		thumbnails.setStyle('overflow', 'hidden');
    		var ul = new Element('ul', {'tween': {'link': 'cancel'}}).inject(thumbnails);
    		this.data.thumbnails.each(function(thumbnail, i){
    			var li = new Element('li').inject(ul);
    			var a = new Element('a', {
    				'events': {
    					'click': function(i){
    						this.go(i); 
    						return false; 
    					}.pass(i, this),
    					'loaded': function(){
    						this.data.thumbnails.pop();
    						if (!this.data.thumbnails.length){
    							var div = thumbnails.getCoordinates();
    							var props = thumbnails.retrieve('props');			
    							var limit = 0, pos = props[1], size = props[2];		
    							thumbnails.getElements('li').each(function(li){			
    								var li = li.getCoordinates();		
    								if (li[pos] > limit) limit = li[pos];
    							}, this);			
    							thumbnails.store('limit', div[size] + div[props[0]] - limit);
    						}
    					}.bind(this)
    				},
    				'href': this.options.hu + this.data.images[i],
    				'morph': $merge(this.options.thumbnails, {'link': 'cancel'})
    			}).inject(li);
    			if (this.data.captions[i] && this.options.titles)
    				a.set('title', this.data.captions[i].replace(/<.+?>/gm, '').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, "'"));
    			var img = new Asset.image(this.options.hu + thumbnail, {
    				'onload': function(){this.fireEvent('loaded');}.bind(a) 
    			}).inject(a);
    		}, this);
    		thumbnails.set('events', {
    			'scroll': function(n, fast){
    				var div = this.getCoordinates();
    				var ul = this.getElement('ul').getPosition();
    				var props = this.retrieve('props');
    				var axis = props[3], delta, pos = props[0], size = props[2], value;				
    				var tween = this.getElement('ul').get('tween', {'property': pos});	
    				if ($chk(n)){
    					var li = this.getElements('li')[n].getCoordinates();
    					delta = div[pos] + (div[size] / 2) - (li[size] / 2) - li[pos]	
    					value = (ul[axis] - div[pos] + delta).limit(this.retrieve('limit'), 0);
    					if (fast)	
    						tween.set(value);
    					else						 
    						tween.start(value);
    				}
    				else{
    					var area = div[props[2]] / 3, page = this.retrieve('page'), velocity = -0.2;			
    					if (page[axis] < (div[pos] + area))
    						delta = (page[axis] - div[pos] - area) * velocity;
    					else if (page[axis] > (div[pos] + div[size] - area))
    						delta = (page[axis] - div[pos] - div[size] + area) * velocity;			
    					if (delta){			
    						value = (ul[axis] - div[pos] + delta).limit(this.retrieve('limit'), 0);
    						tween.set(value);
    					}
    				}				
    			}.bind(thumbnails),
    			'update': function(fast){
    				var thumbnails = this.slideshow.retrieve('thumbnails');
    				thumbnails.getElements('a').each(function(a, i){	
    					if (i == this.slide){
    						if (!a.retrieve('active', false)){
    							a.store('active', true);
    							var active = this.classes.get('thumbnails', 'active');							
    							if (fast) a.get('morph').set(active);
    							else a.morph(active);
    						}
    					} 
    					else {
    						if (a.retrieve('active', true)){
    							a.store('active', false);
    							var inactive = this.classes.get('thumbnails', 'inactive');						
    							if (fast) a.get('morph').set(inactive);
    							else a.morph(inactive);
    						}
    					}
    				}, this);
    				if (!thumbnails.retrieve('mouseover'))
    					thumbnails.fireEvent('scroll', [this.slide, fast]);
    			}.bind(this)
    		})
    		var div = thumbnails.getCoordinates();
    		thumbnails.store('props', (div.height > div.width) ? ['top', 'bottom', 'height', 'y'] : ['left', 'right', 'width', 'x']);
    		var mousemove = function(e){
    			var div = this.getCoordinates();
    			if (e.page.x > div.left && e.page.x < div.right && e.page.y > div.top && e.page.y < div.bottom){
    				this.store('page', e.page);			
    				if (!this.retrieve('mouseover')){
    					this.store('mouseover', true);
    					this.store('timer', function(){this.fireEvent('scroll');}.periodical(50, this));
    				}
    			}
    			else {
    				if (this.retrieve('mouseover')){
    					this.store('mouseover', false);				
    					$clear(this.retrieve('timer'));
    				}
    			}
    		}.bind(thumbnails);
    		this.events.mousemove.push(mousemove);
    		document.addEvent('mousemove', mousemove);
    		this.slideshow.store('thumbnails', thumbnails);
    	}
    });

  4. #4
    Join Date
    Jan 2009
    Location
    Vegas Baby!
    Posts
    332
    Plugin Contributions
    0

    Default Re: Index Page Slideshow Not Showing Transition Effects

    I see a fade in Firefox, didn't look in IE. Beautiful site.
    Completed: BellaFavori.com
    In Progress: WeddingDivasLV.com
    Coming Soon: ???

  5. #5
    Join Date
    Feb 2009
    Posts
    32
    Plugin Contributions
    0

    Default Re: Index Page Slideshow Not Showing Transition Effects

    Thanks a lot! ^_^ It's a lot of work. Oh, so maybe my FF is acting weird then. I'll check it out again. At least, random readers might enjoy the script for the slideshow.

 

 

Similar Threads

  1. index page not showing
    By tempoart in forum Installing on a Linux/Unix Server
    Replies: 13
    Last Post: 13 Jul 2012, 12:14 PM
  2. Index page text not showing up
    By binkydbomb in forum Templates, Stylesheets, Page Layout
    Replies: 5
    Last Post: 30 Aug 2011, 12:24 AM
  3. Slideshow not showing on all top level category pages?
    By dashmoo in forum Templates, Stylesheets, Page Layout
    Replies: 4
    Last Post: 9 Apr 2010, 06:33 AM
  4. page transition not smooth..
    By ljbird in forum Templates, Stylesheets, Page Layout
    Replies: 17
    Last Post: 10 Jan 2010, 07:04 PM
  5. Subcats on index page not showing
    By Nuwanda in forum Setting Up Categories, Products, Attributes
    Replies: 2
    Last Post: 11 Apr 2008, 10:20 PM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
disjunctive-egg
Zen-Cart, Internet Selling Services, Klamath Falls, OR