var absPage = 0;

window.addEvent('domready', initPages);

window.addEvent('keydown', function(event) {
	
	if (event.key == 'right') goToPage(1);
	if (event.key == 'left') goToPage(-1);
	
});

function init() {
	initHighlights();
	$$('#pages a').each(function(el) {
		el.addEvent('click', function(e){
			e.stop();
			req = new Request.HTML({
				update : $('photos'),
				method: 'get',
				url : el.get('href'),
				onComplete : function() {
					el.addClass('visited');
					initHighlights();
				}
			});
			req.get({'ajax': true});
		});

	});
	
}

function initHighlights() {
	$$('#photos img').each(function(el) {
		el.get('tween').set('duration', 'short');
		myTween = new Fx.Tween(el);
		el.addEvent('mouseover', function() {
			el.tween('border-color', '#fb831f');
		});
		
		el.addEvent('mouseout', function() {
			el.tween('border-color', '#333');
		});
	});
}

function goToPage(dir) {
	link = window.location.toString();
	reg = new RegExp("(.+?)?page=([0-9]+)", 'g');
	if (absPage == 0) {
		page = link.replace(reg, '$2').toInt();
		if (isNaN(page)) page = 1;
		absPage = page;
	}
	
	url =  link.replace(reg, '$1');
	
	absPage += dir;	

	if (absPage <= 0) absPage = 1;
	max = $('pages').getElement('p').getLast('a').get('html').toInt();
	if (max <= absPage) absPage = max;
	
	req = new Request.HTML({
		update : $('photos'),
		method: 'get',
		url : url,
		onComplete : function() {
			$$('#pages a').each(function(el) {
				if (el.get('html').toInt() == absPage)
					el.addClass('visited');
			});
			initHighlights();

		}
	});
	req.get({'page': absPage, 'ajax': true});

}

function initPages() {
	init();
	$$('#pages a.middle').addEvent('click', function() {
		prev = this.getPrevious();
		next = this.getNext();
		
		url = prev.get('href');
		reg = new RegExp("(.+?)?page=([0-9]+?)", 'g');
		url = url.replace(reg, '$1page=');
		
		begin = prev.get('html').toInt();
		end = next.get('html').toInt();
		
		/*beginLimit = begin + 5 > end ? begin : begin + 3;
		if (beginLimit == begin) this.destroy();
		endLimit = begin == beginLimit ? begin + 1 : end - 3;
		if (endLimit <= beginLimit) endLimit = beginLimit + 1;
		if (endLimit == beginLimit + 1) this.destroy();*/
		beginLimit = end - 1;
				
		
		for(i = begin + 1 ; i <= beginLimit ; i++) {
			addLink(url, i, this, 'before');
		}
		this.destroy();
		/*for(i = end - 1 ; i >= endLimit ; i--) {
			addLink(url, i, this, 'after');
		}*/
		init();
	});
	
}

function addLink(url, i, el, direction) {
	element = new Element('a', {
		'href': url + i
	});
	element.set('text', ' '+i+' ');
	element.inject(el, direction);
}
