var fixedPointAjaxFramework = [];

fixedPointAjaxFramework = 
	{
	AjaxLink		: [],
	tasks			: [],
	execute		: false,
	contentUrl		: false,
	currentContentUrl	: false,
	loadingIndicator	: false,

	init: function()
		{
		this.getHash();
		var fixedPointAjaxFrameworkInit = setInterval("fixedPointAjaxFramework.purge()",100);
		},

	getHash: function()
		{
		if(window.location.hash)
			{
			var ajaxLink = fixedPointAjaxFramework.AjaxLink[window.location.hash.slice(1)];
			if(ajaxLink)
				{
				if(ajaxLink.content)
					{
					for (var i=0; i<ajaxLink.content.pages.length; i++)
						{
						fixedPointAjaxFramework.addToLine([ajaxLink.content.pages[i][0], ajaxLink.content.pages[i][1], ajaxLink.content.pages[i][2], ajaxLink.content.pages[i][3]]);
						}
					}
				else	{
					if(!ajaxLink.page)
						{
						setTimeout(ajaxLink.init, 30);
						return false;
						}
					fixedPointAjaxFramework.addToLine([ajaxLink.page, ajaxLink.target, ajaxLink.onscreen, ajaxLink.init]);
					}
				}
			}
		},

	addToLine: function(requestData, disableCache)
		{
		var contentParameters = "";
		if(requestData[4]) contentParameters = requestData[4];
		if(requestData[4] == false) requestData[4] = '';
		if(disableCache == undefined || disableCache == null)
			{
			contentParams = requestData[0]+"?"+contentParameters+"&disableCache="+Math.round(Math.random()*100000);
			}
		else	{
			contentParams = requestData[0]+"?"+contentParameters
			}
			
		this.tasks.push({
			content	: contentParams,
			target		: requestData[1],
			onscreen	: requestData[2],
			runafter	: requestData[3],
			parameters	: requestData[4]
			});
		},

	purge: function()
		{
		if(this.tasks.length > 0)
			{
			if(!this.tasks[0].execute)
				{
				if(this.execute == false)
					{
					this.tasks[0].execute = true;
					this.loadContent(this.tasks[0].parameters);
					}
				}
			}
		},

	loadContent: function()
		{
		request = fixedPointAjaxFramework.ajaxGateWay();
		if(!request) return false;
		request.open("GET", this.tasks[0].content, true);
		request.setRequestHeader("Content-Type", "text/plain;charset=UTF-8");
		request.onreadystatechange = this.getContent;
		request.send(null);
		},

	ajaxGateWay: function()
		{
		if (window.ActiveXObject)
			{
			waystation = new ActiveXObject("Microsoft.XMLHTTP");
			}
		else if (window.XMLHttpRequest)
			{
			waystation = new XMLHttpRequest();
			}
		else	{
			 waystation = false;
			}
		
		return waystation;
		},
		
	getContent: function()
		{
		if (request.readyState != 4)
			{
			fixedPointAjaxFramework.execute = true;
			if(fixedPointAjaxFramework.loadingIndicator) $(fixedPointAjaxFramework.loadingIndicator).style.display = "block";
	 		}
	
		if (request.readyState == 4)
			{
			var loadTarget = $(fixedPointAjaxFramework.tasks[0].target);
			if(!loadTarget) loadTarget = fixedPointAjaxFramework.tasks[0].target;

			if (request.status == 200)
				{
				if(fixedPointAjaxFramework.tasks[0].onscreen == true)	{loadTarget.innerHTML = request.responseText;}
				else if(fixedPointAjaxFramework.tasks[0].onscreen == false) {}
				else	{
					fixedPointAjaxFramework.tasks[0].onscreen(request.responseXML);
					}
				}
			else	{
				if(fixedPointAjaxFramework.tasks[0].onscreen == true)
					{
					loadTarget.innerHTML = ""
					}
				}

			if(fixedPointAjaxFramework.loadingIndicator) $(fixedPointAjaxFramework.loadingIndicator).style.display = "none";

			if(fixedPointAjaxFramework.tasks[0].runafter)
				{
				fixedPointAjaxFramework.tasks[0].runafter.toString();
				setTimeout(fixedPointAjaxFramework.tasks[0].runafter, 30);
				};
			fixedPointAjaxFramework.tasks.remove(fixedPointAjaxFramework.tasks[0]);
			fixedPointAjaxFramework.execute = false;
			}
		}
	}

fixedPointAjaxFramework.init();

