var Loader = {
	wrapper: null,
	
	posts: null,
	description: null
}

window.addEvent('domready', function() {
	Loader.wrapper = $('wrapper');
	Loader.posts = $('posts');
	Loader.description = $('description');

	Loader.wrapper.addEvent("scroll", function(event) {
		if (Loader.wrapper.getScroll().y > (Loader.wrapper.getScrollSize().y-Loader.wrapper.getSize().y) * 0.5)
				insertData(nextURL, $('load-more'));
	});

	window.fireEvent('postready', Loader);
});

window.addEvent('postready', function() {
	wrapImages(Loader.posts);
	wrapComments(Loader.posts);
	wrapCategories(Loader.posts);
	
	$('menu').addClass(Loader.color);
	$('menu').tween('border-bottom-width', 0, 3);

	$('description').addClass(Loader.color);

	try {
		Loader.posts.slideDown();

		Loader.wrapper.morph({ opacity: 1 });
	} catch (e) { console.log(e); }

	try {
		$('selection').getElement('.dot').addClass(Loader.color);
		$('selection').getElement('.dot').addClass('bg');
		$('selection').getElement('.dot').morph({
			opacity: 1,
			bottom: -5
		});
	} catch (e) { console.log(e); }
});


// PAGE REQUEST
/********************************************************************/

var pageRequest = new Request({
	'timeout': 5000,
	'method': 'get',
	'evalScripts': true,
	'onSuccess': loadPageFinished,
	'onComplete': loadPageCompleted,
	'onFailure': function() {Interface.toggleIndicator('error', true);},
	'onTimeout': function() {pageRequest.cancel(); Interface.toggleIndicator('error', true);}
});


function loadPage(url, color) {
	pageRequest.cancel();
	Interface.toggleIndicator('error', false);
	Interface.toggleIndicator('loading', true);

	try {
		Loader.wrapper.morph({
			'opacity': 0,
			'margin-top': 0
		});
	
		Loader.posts.slideUp();
	} catch (e) { console.log(e); }

	Loader.color = color;

	(function() {
		resetColors($('menu'));
		resetColors($('description'));
		
		pageRequest.send({
			'url': url,
			'data': {'show': 'page'}
		});
	}).delay(1000);
}


function loadPageFinished(responseText, responseXML) {
	Loader.wrapper.set('html', responseText);

	Loader.posts = Loader.wrapper.getElement('#posts');
	Loader.description = Loader.wrapper.getElement('#description');

	window.fireEvent('postready', Loader);
}

function loadPageCompleted() {
	Interface.toggleIndicator('loading', false);
}

// DATA REQUEST
/********************************************************************/

var dataRequest = new Request({
	'timeout': 5000,
	'method': 'get',
	'evalScripts': true,
	'onSuccess': dataFinished,
	'onComplete': dataCompleted,
	'onFailure': function() {Interface.toggleIndicator('error', true);},
	'onTimeout': function() {dataRequest.cancel(); Interface.toggleIndicator('error', true);}
});

function insertData(url, anchor) {
	if (url == '' || dataRequest.charging) return;

	Interface.toggleIndicator('error', false);
	Interface.toggleIndicator('loading', true);
	
	dataRequest.charging = true;
	dataRequest.anchor = anchor;

	dataRequest.send({
		'url': url,
		'data': {'show': 'posts'}
	});
}

function dataFinished(responseText, responseXML) {
	wrapper = new Element('div');

	wrapper.set('html', responseText);
	wrapImages(wrapper);
	wrapComments(wrapper);
	wrapCategories(wrapper);
	
	wrapper.wrap().setStyle('height', 0);
	wrapper.wrap().inject(dataRequest.anchor, 'before');
	wrapper.slideDown();
}	

function dataCompleted() {
	Interface.toggleIndicator('loading', false);
	dataRequest.charging = false;
}


