var Photos = {
	currentImg: null,
	page: 1,
	pages: 1,
	per_page: 7,
	url: '',
	
	mouseoverImg: function(img) {
		if(!$(img).hasClass('selected')) {
			$(img).tween('border-color', '#333');
		}
	},
	
	mouseoutImg: function(img) {
		if(!$(img).hasClass('selected')) {
			$(img).tween('border-color', '#fff');
		}
	},
	
	clickImg: function(img) {
		if(!$(img).hasClass('selected')) {
			Photos.currentImg = img;
			
			var li = $(img).getParent('li');
			if(!li.getPrevious('li')) {
				$('prev').addClass('disabled');
			}
			else {
				$('prev').removeClass('disabled');
			}
			if(!li.getNext('li') && Photos.page == Photos.pages) {
				$('next').addClass('disabled');
			}
			else {
				$('next').removeClass('disabled');
			}
		
			var unselectThese = $('photos_list').getElements('a.selected');
			unselectThese.each(function(el) {
				el.removeClass('selected');
				el.removeProperty('style');
			});
			
			var holderContents = $('photo_holder').getElement('a');
			holderContents.tween('opacity', 0)
			
			var dup = $(img).clone(false);
			$(img).addClass('selected');
			$(img).removeProperty('style');
			
			var imgObj = $(img).getElement('img');
			var src = imgObj.getProperty('src').replace('_s.jpg', '.jpg');
			
			var newimg = new Asset.image(src, {
				title: $(imgObj).getProperty('title'),
				styles: {'opacity': 0},
				onload: function() {
					dup.grab(newimg);
					
					$('photo_holder').empty();
					$('photo_holder').grab(dup);
					newimg.tween('opacity', 1);
				}	
			});
		}
	},
	
	addeventstoimg: function(imgs) {
		imgs.each(function(el) {
			el.addEvents({
				'mouseover': function(e) {
					Photos.mouseoverImg(this);
				},
				
				'mouseout': function(e) {
					Photos.mouseoutImg(this);
				},
				
				'click': function(e) {
					if(e)
						e.stop();
					Photos.clickImg(this);
					return false;
				}
			});
		});
	},
	
	goNext: function() {
		if(Photos.currentImg) {
			var li = $(Photos.currentImg).getParent('li');
			var nextLi = li.getNext('li');
			if(nextLi) {
				var img = nextLi.getElement('a');
				var number = img.getProperty('id').replace('photo', '');
				if((number-1) % Photos.per_page == 0) {
					var page = ((number-1) / 7);
					$('photos_list').tween('left', -1*(page)*637);
				}
				
				img.fireEvent('click');
			}
			else {
				Photos.fetchNext();
				$('next').removeClass('disabled');
			}
		}
	},
	
	goBack: function() {
		if(Photos.currentImg) {
			var li = $(Photos.currentImg).getParent('li');
			var prevLi = li.getPrevious('li');
			if(prevLi) {
				var img = prevLi.getElement('a');
				var number = img.getProperty('id').replace('photo', '');
				if(number % Photos.per_page == 0) {
					var page = number / 7;
					$('photos_list').tween('left', -1*(page-1)*637);
				}
				
				img.fireEvent('click');
			}
		}
	},
	
	fetchNext: function() {
		if(Photos.pages > Photos.page) {
			var r = new Request.HTML({
				url: Photos.url + '?page=' + (Photos.page+1),
				onComplete: function(responseTree, responseElements, responseHTML, responseJavaScript) {
					var temp = new Element('div', {
						'html': responseHTML
					});
					
					Photos.addeventstoimg(temp.getElements('a'));
					
					var lis = temp.getElements('li');
					
					var oldwidth = $('photos_list').getWidth().toInt();
					var width = oldwidth + (lis.length * 91);
					
					$('photos_list').setStyle('width', width);
					$('photos_list').adopt(lis);
					$('photos_list').tween('left', -1*(Photos.page)*637);
					
					lis[0].getElement('a').fireEvent('click');
					
					temp.destroy();
					Photos.page = Photos.page + 1;
				}
			}).get();
		}
	}
};

window.addEvent('domready', function() {
	if($('photos_list')) {
		var children = $('photos_list').getElements('a');
		if(children.length > 0) {
			children[0].addClass('selected');
			Photos.currentImg = children[0];
			Photos.addeventstoimg(children);
		}
	}
	
	if($('next')) {
		$('next').removeClass('disabled');
		
		$('next').addEvent('click', function() {
			Photos.goNext();
		});
	}
	
	if($('prev')) {
		$('prev').addEvent('click', function() {
			Photos.goBack();
		});
	}
});

window.addEvent('keyup', function(e) {
	if(e.key == 'right' || e.code == 39) {
		Photos.goNext();
	}
	else if(e.key == 'left' || e.code == 37) {
		Photos.goBack();
	}
});