var SlideShow = new Class({
				/*
					wrapper: element that holds the images
					next: next button
					previous: previous button					
				*/
				initialize: function(wrapper, next, previous, els, effect, offset){
					var me = this;
					
					this.offset = offset;
					if(!this.offset){
						this.offset = 0;
					}
					
					this.effect = effect;
					if(!this.effect){
						this.effect = 'slide';
					}
					
					this.wrapper = wrapper;
					this.next = next;
					this.previous = previous;
					
					
					//setup animation tweener
					var myFx = new Fx.Tween(wrapper, {property: 'left',
											onStart: function(){me.onStart();}, 
											onComplete:function(){me.onUpdate();} 
										});
					this.myFx = myFx;
					
					// tracks current el
					var tracker;
					var current;
					this.tracker = 0;
					this.current = this.tracker;
					// get the img elements from the wrapper
					this.els = wrapper.getElements(els);
					if(this.effect == 'fade'){
						for(var i=1; i < this.els.length; i++){
							this.els[i].fade('hide');
						}	
					}else {
						this.previous.setStyle('visibility', 'hidden');
					}
					
					// get max elements
					var max = this.els.length;
					this.max = max;
					
					// start events for next / previous buttons
					next.addEvent('click', function(e){
						e = new Event(e).stop();
						me.getNext();
					});
					
					this.previous.addEvent('click', function(e){
						e = new Event(e).stop();
						me.getPrev();
					});
					
				},
				getIndex: function(idx){
					if(idx < this.max && idx > -1){
						this.tracker = idx;
						
						var x = this.els[this.tracker].getCoordinates(this.wrapper).left;
						this.animate('next', x);
						this.current = this.tracker;
					}
				},
				getNext: function(){
					// get next image or rotate to beginning
					//this.current = this.tracker;
					if(this.tracker < this.max - 1 - this.offset){
						this.tracker++;
					} else {
						this.tracker = 0;
					}
					var x = this.els[this.tracker].getCoordinates(this.wrapper).left;
					this.animate('next', x);
					this.current = this.tracker;
				},
				getPrev: function(){
					// get previous image or rotate to end
					
					if(this.tracker > 0){
						this.tracker--;
					} else {
						this.tracker = this.max - 1 - this.offset;
					}
					var x = this.els[this.tracker].getCoordinates(this.wrapper).left;
					this.animate('prev', x);
					
						this.current = this.tracker;
					
				},
				animate: function(direction, distance){
					
					//alert
					if(this.effect == 'fade') {
						//this.onStart();
						this.els[this.current].fade('out');
						this.els[this.tracker].fade('in');
						this.onUpdate();
						
					}else {
						// generic animation in either direction
						this.myFx.start(-distance);
					}
				},
				onUpdate: function(){
					
				},
				onStart:function(){
					if(this.tracker == 0){
						this.previous.setStyle('visibility', 'hidden');
					} else {
						this.previous.setStyle('visibility', 'visible');
					}
					if(this.tracker == this.max - 1 - this.offset){
						this.next.setStyle('visibility', 'hidden');
					} else {
						this.next.setStyle('visibility', 'visible');
					}
				},
				getCurrent: function(){
					return this.tracker;
				}
			});
			
