/*
	Image switching.
*/
function pretentious_changeimage(image, url)
{
	image.src = url;
}


/*
	Image switching.
*/
function pretentious_client(client_name, client_show)
{
	// Hide all boxes, except for the client requested.
	for (i = 1; i <= 15; i++)
	{
		if (i != client_name)
		{
			Effect.Fade('client_box_'+i, { duration : 0.8 } );
		}
	}

	// Now hide (and optionally show) the client requested.
	Effect.Fade('client_box_'+client_name, { 
		duration : 0.8,
		afterFinish : function() 
		{
			if (client_show)
			{
				Effect.Appear('client_box_'+client_name, { duration : 0.8 } );
			}
		}
	 } );	
}


/*
	Contact Form Button State Switcher
*/
function pretentious_contact_switch(is_over)
{
	if (is_over)
	{
		document.getElementById('content_contact_send').style.backgroundColor = '#B3B3B3';
		document.getElementById('content_contact_send').style.color = '#FFFFFF';
	}
	else
	{
		document.getElementById('content_contact_send').style.backgroundColor = '#E5E5E5';
		document.getElementById('content_contact_send').style.color = '#989898';
	}
}


/*
	Contact Form Submission
*/
function pretentious_contact_submit()
{
	var p_email = '';
	var p_message = '';
	
	if (document.getElementById('content_contact_input_email'))
		p_email = document.getElementById('content_contact_input_email').value;
	if (document.getElementById('content_contact_input_message'))
		p_message = document.getElementById('content_contact_input_message').value;
	
	if (p_email != '' && p_message != '')
		document.getElementById('content_contact').innerHTML = pretentious_request('message.ajax', 'email='+p_email+'&message='+p_message);
}


/*
	Image Preloader.
	
	images		An array of image URLs.
	callback		The function to call after completion.
*/
var preload_callback;
var preload_images;
var preload_images_num;
var preload_images_complete;
function pretentious_preload(images, callback)
{
	preload_callback = callback;
	preload_images = new Array;
	
	preload_images_num = images.length;
	preload_images_complete = 0;
	
	for (var i = 0; i < images.length; i++)
	{
		var oImage = new Image;
		preload_images.push(oImage);
		oImage.onload = pretentious_preload_done;
		oImage.onerror = pretentious_preload_done;
		oImage.onabort = pretentious_preload_done;
		oImage.opretentious_preload = this;
		oImage.bLoaded = false;
		oImage.src = images[i];
	}
}
function pretentious_preload_done()
{
	preload_images_complete++;
	
	if (preload_images_complete == preload_images_num)
	{
		preload_callback();
	}
}


/*
	Sends an HTTP request and returns the resulting response text.

	url			URL to connect to.
	parameters	parameters to POST.	
*/
function pretentious_request(url, parameters)
{
	// Set up request processor.
	var request;
	
	// Send the command.
	if (window.XMLHttpRequest) 
	{
		request = new XMLHttpRequest();
		request.open("POST", url, false);
		request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
		request.send(parameters);
	}
	else if (window.ActiveXObject) 
	{
		request = new ActiveXObject("Microsoft.XMLHTTP");
		if (request) 
		{
			request.open("POST", url, false);
			request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
			request.send(parameters);
		}
	}

	// Process response on a successful return.
	if (request.status == 200)
	{
		return request.responseText;
	}
}


/*
	Updates the page.
*/
var block_counter = 0;
function pretentious_update(new_page, direction)
{
	// Get the content XML from the server.
	var response_text = pretentious_request('content.ajax', 'page='+new_page);

	// Set up the XML parser.
	if (window.ActiveXObject) 
	{
		var xml_response = new ActiveXObject("Microsoft.XMLDOM");
		xml_response.loadXML(response_text);
	}
	else
	{
		var xml_response = (new DOMParser()).parseFromString(response_text, "text/xml");
	}

	// These will be filled in below.
	var page_images = new Array;
	var page_content = new String;
	var page_navigation = new String;
	
	// Read images list.
	var image_nodes = xml_response.getElementsByTagName('image');
	for (var i = 0; i < image_nodes.length; i ++)
	{
		try
		{
			page_images.push(image_nodes[i].attributes[0].value);
		}
		catch (e) { }
	}
		
	// Read content HTML.
	try
	{
		page_content = xml_response.getElementsByTagName('content')[0].firstChild.data;
	}
	catch (e) { }
	
	// Read navigation HTML.
	try
	{
		page_navigation = xml_response.getElementsByTagName('navigation')[0].firstChild.data;
	}
	catch (e) { }
	
	// Now display the page after all the resources have been downloaded.
	pretentious_preload(page_images, function()
		{
			// Replace the navigation.
			document.getElementById('content_navigation').innerHTML = page_navigation;
			
			// These are references to the content blocks.
			id_this = 'block_'+block_counter;
			id_prev = 'block_'+(block_counter - 1);
			
			// Build the new content block.
			container_new = document.createElement('td');
			container_new.id = id_this;
			container_new.className = 'content_inner_column';
			container_new.innerHTML = page_content;
			
			// Put the content block in place.
			if (direction == 'right')
			{
				document.getElementById('content_inner').style.left = "-990px";
				document.getElementById('content_inner_row').insertBefore(container_new, document.getElementById(id_prev));
			}
			else if (direction == 'left')
			{
				document.getElementById('content_inner_row').appendChild(container_new);
			}

			// Remove the preloaded, if it still exists.
			if (document.getElementById('content_loader'))
			{
				document.getElementById('content_outer').removeChild(document.getElementById('content_loader'));
			}
			
			// Slide (if approriate).
			if (document.getElementById(id_prev))
			{
				// Determine which way to slide.
				var movement = 0;
				if (direction == 'right')
				{
					movement = 990;
				}
				else if (direction == 'left')
				{
					movement = -990;
				}
				
				// OK, now slide!
				Effect.MoveBy('content_inner', 0, movement, 
				{ 
					duration : 1.0,
					afterFinish : function() 
					{
						document.getElementById('content_inner').style.left = "5px";
						document.getElementById('content_inner_row').removeChild(document.getElementById(id_prev));
					}
				});
			}
			
			// Keep our counter up to date!
			block_counter++;
		}
	);
}
