var scrollbar;

gui_adjust = function() {
	ele_page = document.getElementById( 'page' );
	ele_main = document.getElementById( 'main' );
	ele_data = document.getElementById( 'content_data' );

	doc_size = get_canvas_size();

	ele_main.style.marginTop = ( ( doc_size[ 1 ] - ele_main.offsetHeight ) / 2 ) + 'px';

	gui_readjust();

	ele_page.style.visibility = 'visible';


	/* Initialise the custom scrollbars. */
	scrollbar = new Control.ScrollBar( 'content_data', 'content_track' );

	/* Stop selection of text */
	document.onselectstart = function() { return false; }
	document.onmousedown = function() { return false; }

	/* Custom element functions */
	document.getElementById( 'navigation_button_home' ).onclick = function() { get_content( '/' ); }
}
if ( window.attachEvent ) { window.attachEvent( 'onload', gui_adjust ); }
if ( window.addEventListener ) { window.addEventListener( 'load', gui_adjust, false); }

gui_readjust = function() {
	ele_foot = document.getElementById( 'footer' );

	doc_size = get_canvas_size();

	if ( doc_size[ 1 ] < 600 + ( ( doc_size[ 1 ] - ele_main.offsetHeight ) / 2 ) )
	{
		ele_foot.style.display = 'none';
	}
	else
	{
		ele_foot.style.display = 'block';
	}
}
if ( window.attachEvent ) { window.attachEvent( 'onresize', gui_adjust ); }
if ( window.addEventListener ) { window.addEventListener( 'resize', gui_adjust, false); }

gui_loader = function( state ) {
	var loader = document.getElementById( 'content_loader' );

	switch ( state )
	{
		case 'show':
			loader.innerHTML = 'Loading content...';
			loader.style.visibility = 'visible';
		break;
		case 'hide':
			loader.style.visibility = 'hidden';
			loader.innerHTML = '';
		break;
	}
}
gui_hide = function( element ) {
	document.getElementById( element ).style.display = 'none';
}

get_content = function( url ) {
	ele_data = document.getElementById( 'content_data' );
	ele_title = document.getElementById( 'navigation_title' );

	ele_data.innerHTML = '';

	gui_loader( 'show' );

	new Ajax.Request(
		url,
		{
			method:		'get',
			parameters:	{
								type:	'ajax'
							},
			onSuccess:	function( transport ) {
								var response = transport.responseXML || get_custom_error();

								ele_data.innerHTML = response.documentElement.getElementsByTagName( 'contents' )[ 0 ].firstChild.data;
								ele_title.innerHTML = '<span>' + response.documentElement.getElementsByTagName( 'title' )[ 0 ].firstChild.data + '</span>';
								ele_title.setAttribute( 'title', response.documentElement.getElementsByTagName( 'title' )[ 0 ].firstChild.data );

								gui_loader( 'hide' );
								scrollbar.recalculateLayout();
							},
			onFailure:	function() {
								var response = get_custom_error();

								ele_data.innerHTML = response.documentElement.getElementsByTagName( 'contents' )[ 0 ].firstChild.data;
								ele_title.innerHTML = '<span>' + response.documentElement.getElementsByTagName( 'title' )[ 0 ].firstChild.data + '</span>';
								ele_title.setAttribute( 'title', response.documentElement.getElementsByTagName( 'title' )[ 0 ].firstChild.data );

								gui_loader( 'hide' );
								scrollbar.recalculateLayout();
							}
		}
	);
}
get_custom_error = function() {
	return	'<page>' +
					'<title>Error</title>' +
					'<content>' +
						'<div id="error">' +
							'<img src="/wp-content/themes/kysol/images/error.png" id="error-icon" />' +
							'<h1>You have encountered a critical error!</h1>' +
							'Unfortunately we were unable to foresee this problem, and knowing ' +
							'our luck a server somewhere has just burst into flames. If you are ' +
							'feeling lucky, or just really want to see a server burn, please ' +
							'try again.' +
								'<br />' +
							'<img src="/wp-content/themes/kysol/images/monkey.png" id="error-monkey" />' +
								'<br />' +
							'If you are still experiencing problems, feel free to report the error ' +
							'<a href="">here</a>. ' +
							'We will send the message onto our team of trained flying monkeys**, ' +
							'who will investigate the issue further.' +
								'<br /><br /><br />' +
								'<br /><br /><br />' +
							'** Our flying monkeys are kept in first rate accommodation, with access to ' +
							'the latest hardware. We pride ourselves on our dedication towards caring for ' +
							'these monkeys after being made redundant after the unfortunate death of their ' +
							'last owner.' +
						'</div>' +
					'</content>' +
				'</page>';
}

get_canvas_size = function() {
	if ( parseInt( navigator.appVersion ) > 3 )
	{
		if ( navigator.appName == 'Netscape' )
		{
			winW = window.innerWidth;
			winH = window.innerHeight;
		}
		if ( navigator.appName.indexOf( 'Microsoft' ) != -1 )
		{
			winW = document.body.offsetWidth;
			winH = document.body.offsetHeight;
		}
	}
	return Array( winW, winH );
}

