SlideShow.defineTransition('pushUpFunky', function(data){
	var distance = data.instance.element.getSize().y;
	data.next.setStyle('top', distance);
	new Fx.Elements([data.previous, data.next], {
		duration: data.duration,
		transition: 'back:in:out'
	}).start({
		0: { top: [-distance] },
		1: { top: [0] }
	});
	return this;
});

SlideShow.defineTransition('pushDownFunky', function(data){
	var distance = data.instance.element.getSize().y;
	data.next.setStyle('top', -distance);
	new Fx.Elements([data.previous, data.next], {
		duration: data.duration,
		transition: 'back:in:out'
	}).start({
		0: { top: [distance] },
		1: { top: [0] }
	});
	return this;
});

SlideShow.defineTransition('pushUpFunkyFade', function(data) {
	this.pushUpFunky(data).fade(data);
});

SlideShow.defineTransition('pushDownFunkyFade', function(data) {
	this.pushDownFunky(data).fade(data);
});

SlideShow.defineTransition('pushLeftFunky', function(data) {
	var distance = data.instance.element.getSize().x;
	data.next.setStyle('left', distance);
	new Fx.Elements([data.previous, data.next], {
		duration: data.duration,
		transition: 'quint:in:out'
	}).start({
		0: { left: [-distance] },
		1: { left: [0] }
	});
	return this;
});

SlideShow.defineTransition('pushRightFunky', function(data) {
	var distance = data.instance.element.getSize().x;
	data.next.setStyle('left', -distance);
	new Fx.Elements([data.previous, data.next], {
		duration: data.duration,
		transition: 'quint:in:out'
	}).start({
		0: { left: [distance] },
		1: { left: [0] }
	});
	return this;
});
