var Slideshow = { 
	auto: false,
	index: null,
	_total: 0,
	_items: [],
	_timer: 8000,
	_interval: null,
	
	init: function() {	
		this._total = this._items.length;
		this._buildControls();
		this._build();
		if(Slideshow.auto) {
			Slideshow.autoChange();
		}
	},
	
	
	
	autoChange: function() {
		Slideshow._interval = setInterval(Slideshow._callBack_Change, Slideshow._timer);
	},
	
	
	
	_callBack_Change: function() {
		var newIndex = (Slideshow.index + 1) > Slideshow._total ? 1 : Slideshow.index + 1;
		document.location.hash = '#/'+ newIndex;
	},
	
	
	_clearInterval: function() {
		if(Slideshow._interval != null) {
			clearInterval(Slideshow._interval);
		}
	},
	
	
	set: function(id) { 
		if(Slideshow.auto) {
			Slideshow._clearInterval();
			Slideshow.autoChange();
		}
		
		if(Slideshow.index != null) { 
			$('#slideshow-'+ Slideshow.index).fadeOut(200);
			$('#slideshow-controls a.current').removeClass('current');
		}
		
		Slideshow.index = parseInt(id);
		$('#slideshow-link-'+ Slideshow.index).addClass('current');
		
		if($('#slideshow-'+ Slideshow.index).hasClass('vimeo') && $('#slideshow-'+ Slideshow.index).html() == '') { 
			var params = $('#slideshow-'+ Slideshow.index).attr('rel').split('-');
			var v = '<iframe src="http://player.vimeo.com/video/'+ params[0] +'?autoplay=0" frameborder="0" width="'+ params[1] +'" height="'+ params[2] +'"></iframe>';
			$('#slideshow-'+ Slideshow.index).append(v);
		}
		$('#slideshow-'+ Slideshow.index).fadeIn(200);
	},


	register: function(opts) {
		Slideshow._items.push(opts);
	},
	
	
	
	_buildControls: function() {
		if(this._total > 1) { 
			var controlsHtml = '<li id="slideshow-controls"><ul>';
			for(var i=1; i <= this._total; i++) {
				controlsHtml += '<li><a href="#/'+ i +'" id="slideshow-link-'+ i +'">'+ i +'</a></li>';
			}
			controlsHtml += '</ul></li>';
			
			$('#slideshow-wrapper').append(controlsHtml);
		}	
	},
	
	
	
	_build: function() { 
		var element = '';
		var liRel = '';
		var image;
		var li;
		var opts;
		var index;
		
		var time = new Date().getTime();
		
		for(var i = 0; i < Slideshow._total; i++) { 
			index = i + 1;
			opts = Slideshow._items[i];
			
			if(opts.type == 'image') { 
				liRel = '';
				image = '<img src="'+ opts.src +'?'+ time +'" alt="Slideshow">';
				element = opts.link ? '<a href="'+ opts.link +'">'+ image +'</a>' : image;
			}
			else {
				liRel = ' rel="'+ opts.id +'-'+ opts.width +'-'+ opts.height +'"';
				element = '';
			}
			
			li = '<li class="slideshow-item '+ opts.type +'" id="slideshow-'+ index +'"'+ liRel +'>'+ element +'</li>';
			$('#slideshow-wrapper').append(li);
			$('#slideshow-'+ index).hide();
		}
	}
}



$('document').ready(function(evt) { 
	Slideshow.init();
});


$.address.change(function(event) {
	var id = isNaN(event.pathNames[0]) ? 1 : event.pathNames[0];
	Slideshow.set(id);
});
