// AJAX system
var baseUrl;

function attachAjax(baseurl)
{
	baseUrl = baseurl;
	var page = document.getElementById("page");
	processAjaxLinks(page);
}


function ajaxClick(objA)
{
	ajaxLoad("content", objA.hash.substring(1));
}

function processAjaxLinks (el)
{
	var links = el.getElementsByTagName("a");
	
	for (i = 0; i < links.length; i++)
	{
		var l = links[i];
		
		if (l.hostname == window.location.hostname)
		{
			if (l.href.length - baseUrl.length > 0)
			{
				ajUrl = baseUrl + "#" + l.href.substring(baseUrl.length );
				/*if (ajUrl.substring(-1, 1) == "/");
					ajUrl = ajUrl.substring(0, ajUrl.length - 1);*/
				l.href = ajUrl;
			} else
			{
				l.href = baseUrl + "#";	
			}
			l.onclick = function () {ajaxClick(this);};
		}
	}
}

function ajaxLoad(targetElement, urlHash)
{	
	var el = document.getElementById(targetElement);
	
	el.innerHTML = "<div id=\"ajax-loader\"><img src =\"/images/ajax-loader.gif\" alt=\"Loading...\" ></div>";
	
	var queryChar = (urlHash.indexOf("?") == -1) ? "?" : "&"; // Either start query string or append to existing one.
	
	url = (baseUrl + urlHash + queryChar + "ajax=true");
	var oRequest;  // The variable that makes Ajax possible!
	
	try{
		// Opera 8.0+, Firefox, Safari
		oRequest = new XMLHttpRequest();
	} catch (e){
		// Internet Explorer Browsers
		try{
			oRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				oRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				// Something went wrong
				alert("Your browser broke!");
				return false;
			}
		}
	}
	// Create a function that will receive data sent from the server
	oRequest.onreadystatechange = function(){
		if(oRequest.readyState == 4){
			var el = document.getElementById(targetElement);
			//alert(oRequest.responseText);
			el.innerHTML = oRequest.responseText;
			processAjaxLinks(el);
			if (window.pageTracker)
				window.pageTracker._trackPageview("/" + urlHash);
		}
	}
	oRequest.open("GET", url, true);
	oRequest.send(null); 
}

