var gallery = {
	settings: {
		width: 678,
		viewtime: 7,
		transition_speed: 1.5,
		back_to_front_speed: 0.65
	},
	refreshId: null,
	images: [],
	image_titles: [],
	titles_a: [],
	titles_b: [],
	images_len: 0,
	links: [],
	process: function(el){
		var classname = $(el).attr('class');
		var num = classname.replace(' active','');
		num = num.replace('l','');
		var slideamt = ((num-1)*this.settings.width)*-1;
		
		var a_tags = $("#gallery .controls a");
		a_tags.each(function(index) {
			$(this).removeClass("active");
		});
		
		this.apply_titles(num-1);
		
		var slidespeed = this.settings.transition_speed*1000;
		if(num == 1){
			slidespeed = this.settings.back_to_front_speed*1000;
		}
		
		$("#gallery .slide").animate({
			left: slideamt+"px"
		}, slidespeed );
		
		$(el).addClass('active');
		return num;
	},
	apply_titles: function(index){
		var h4 = $('#g-desc h4');
		h4.html(this.titles_a[index]);
		var h5 = $('#g-desc h5');
		h5.html(this.titles_b[index]);
	},
	startInterval: function(slide_num){
		refreshId = setInterval(function(){
			if(slide_num == this.images_len){
				slide_num = 0;
			}
			gallery.process(gallery.links[slide_num]);
			slide_num++;
			if(slide_num == gallery.images_len){
				slide_num = 0;
			}
		}, this.settings.viewtime*1000);
	},
	init: function(){
		this.images = $("#gallery .slide img").get();
		
		this.images_len = this.images.length;
		var slide_width = this.images_len * this.settings.width;
		var slide = $('#gallery .slide');
		slide.css('width',slide_width+'px');
		
		var controls = $('#gallery .controls');

		var ul = $('<ul></ul>');
		var ul_width = this.images_len*20;
		ul.css('width',ul_width);
		for(var i = 0; i < this.images_len; i++){
			var title = $(this.images[i]).attr("title");
			this.image_titles.push(title);
			var title_group = title.split('|');
			this.titles_a.push(title_group[0]);
			this.titles_b.push(title_group[1]);
			var cname = 'l'+(i+1);
			if(i==0){ cname += ' active'; }
			var a = $('<a href="#" class="'+cname+'">'+(i+1)+'</a>');
			a.click(function(e){
				e.preventDefault();
				$(this).bind (
					"click",
					function(){
						clearInterval(refreshId);
						var num = gallery.process($(this));
						gallery.startInterval(num);
					}
				);
			});
			this.links.push(a);
			var li = $('<li></li>');
			li.append(a);
			ul.append(li);
		}
		
		controls.append(ul);
		this.apply_titles(0);
		this.startInterval(1);
	}
}
