
//--  AJAX -- >

function sendRequest( url, callback, postData ) {
	var req = createXMLHTTPObject( );
	if ( !req ) return;

	var method = ( postData ) ? "POST" : "GET";
	req.open( method, url, true );
	req.setRequestHeader( 'User-Agent', 'XMLHTTP/1.0' );

	if ( postData )
		req.setRequestHeader( 'Content-Type', 'text/xml' );

	req.onreadystatechange = function ( ) {
		if ( req.readyState != 4 ) return;
		if ( req.status != 0 && req.status != 200 && req.status != 304 ) return;

		callback( req );
	}

	if ( req.readyState == 4 ) return;
	req.send( postData );
}

var XMLHttpFactories = [
	function ( ) { return new XMLHttpRequest( )},
	function ( ) { return new ActiveXObject( "Msxml2.XMLHTTP" ) },
	function ( ) { return new ActiveXObject( "Msxml3.XMLHTTP" ) },
	function ( ) { return new ActiveXObject( "Microsoft.XMLHTTP" ) }
];

function createXMLHTTPObject( ) {
	var xmlhttp = false;
	for ( var i=0; i<XMLHttpFactories.length; i++ ) {
		try { xmlhttp = XMLHttpFactories[ i ]( ) }
		catch ( e ) { continue };

		break;
	}

	return xmlhttp;
}


//-- LOCATION -->

function updateLocation( sPageName ) {
	document.location.hash = sPageName;
}


//-- PAGE -->


function displayPage( oPageHTTP ) {

	var oContainer = document.getElementById( "page" );
	oContainer.innerHTML = oPageHTTP.responseText;
	oContainer.style.display = "";
}
function updatePage( sPageURL ) {
	var oContentDisplay = document.getElementById( 'page' );	
	oContentDisplay.style.display = "none";

	sendRequest( sPageURL, displayPage );
}

//-- MENU -->

function updateMenu( sChapter ) {
	var sMenuHTML = "";
	var sItemSpacing = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";

	switch ( sChapter ) {
		case "product":
			sMenuHTML += "<a class=\"selected\" href=\"javascript:select('product');\">Product:</a>" + sItemSpacing;
			sMenuHTML += "<a class=\"button\" href=\"javascript:select('print');\">Print:</a>" + sItemSpacing;
			sMenuHTML += "<a class=\"button\" href=\"javascript:select('publicspace');\">Public Space:</a>";

			break;

		case "print":
			sMenuHTML += "<a class=\"selected\" href=\"javascript:select('print');\">Print:</a>" + sItemSpacing;
			sMenuHTML += "<a class=\"button\" href=\"javascript:select('product');\">Product:</a>" + sItemSpacing;
			sMenuHTML += "<a class=\"button\" href=\"javascript:select('publicspace');\">Public Space:</a>";

			break;

		case "publicspace":
			sMenuHTML += "<a class=\"selected\" href=\"javascript:select('publicspace');\">Public Space:</a>" + sItemSpacing;
			sMenuHTML += "<a class=\"button\" href=\"javascript:select('product');\">Product:</a>" + sItemSpacing;
			sMenuHTML += "<a class=\"button\" href=\"javascript:select('print');\">Print:</a>" + sItemSpacing;

			break;	
	}

	document.getElementById( "menu" ).innerHTML = sMenuHTML;
}

function select( sChapter ) {

	if ( sChapter == undefined || sChapter == "" )
		sChapter =  document.location.hash.substr( 1 );
	if ( sChapter == undefined || sChapter == "" )
		sChapter = "product";

	updateLocation( sChapter );
	updateMenu( sChapter );
	updatePage( "pages/" + sChapter + ".html" );
}
