var isLoading = false;
var messageReader = null;
var container = null;
var defaultParameter = null;
var loadingScreenIsCreated = false;		//can be set true to use own created window
var defaultPath = "";

var pageAddress = "loader.php"

//can't be used on IE within a form if the result page also has a form.
function sendRequestAndOpenContainer(parameters,sender,containerName)
{
	if (!parameters || !sender || !containerName)
		return false;
	
	parameters = "container="+containerName+"&"+parameters;
	
	if (!document.getElementById(containerName)) {
		var divElement = document.createElement("div");
		divElement.setAttribute("id", containerName);
		divElement.id = containerName;
		divElement.setAttribute("style", "border: solid 1px;");
		
		sender.parentNode.appendChild(divElement);
	}
	
	sendRequest(parameters);
}

//This function is called to change a page or make an event
function sendRequest(parameters)
{
	messageReader = null;
	
	if (window.XMLHttpRequest) {
		messageReader = new XMLHttpRequest()
	}
	else 
		if (window.ActiveXObject) {
			messageReader = new ActiveXObject("Microsoft.XMLHTTP")
		}
	
	if (messageReader == null) {
		document.location = 'index.php?' + parameters;
		return
	}
	else
	{
		var navParameters = parameters;
		
		var NoNavVars = parameters.search("&secret");
		if (NoNavVars >= 0)
			navParameters = parameters.substring(0,NoNavVars);
		
		location.href = "#"+navParameters;
	}
	
	messageReader.onreadystatechange = pageHandler;
	
	messageReader.open("POST", pageAddress,true);
	messageReader.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	messageReader.setRequestHeader("Content-length", parameters.length);
	messageReader.setRequestHeader("Connection", "close");
	messageReader.send(parameters);
	
	if (!isLoading) {
		if (document.getElementById("loading")) {
			document.getElementById("loading").style.display = "block";
		}
		
		isLoading = true;
		return false;
	}
	
	return true;
}

//This method is called by tge http request state changer
function pageHandler()
{
	if (messageReader.readyState == 4) {
		var text = messageReader.responseText;
		
		if (text) {
			//load javascript
			var scriptTagStart = "<jscript>";
			var scriptTagEnd = "</jscript>";
			
			var startJSLine = text.search(scriptTagStart);
			var endJSLine = text.search(scriptTagEnd);
			
			if (startJSLine >= 0)
			{
				var javascript = text.substring(startJSLine + scriptTagStart.length,endJSLine);
				
				//execute javascript
				eval(javascript);
			}
			
			//load html
			var htmlTagStart = "<phtml>";
			var htmlTagEnd = "</phtml>";
			
			var htmlTag = /<phtml(=?)(\w*)>/.exec(text);
			
			if (htmlTag) {
				var htmlTagLength = htmlTag[0].length;
				
				var startHTMLLine = text.search(htmlTag[0]);
				var endHTMLLine = text.search(htmlTagEnd);
				
				if (startHTMLLine >= 0) {
					var html = text.substring(startHTMLLine + htmlTagLength, endHTMLLine);
					
					//place html
					if (html.length > 0) {
						var containerToPlaceIn = null;
						if (htmlTag[2]) //custom container
						{
							containerToPlaceIn = document.getElementById(htmlTag[2]);
						}
						else {
							if (container) {
								containerToPlaceIn = document.getElementById(container);
							}
						}
						
						if (containerToPlaceIn) {
							containerToPlaceIn.innerHTML = html;
						}
					}
				}
			}
		}
		
		if (document.getElementById("loading")) {
			document.getElementById("loading").style.display = "none";
		}
		
		isLoading = false;
	}
}

function Start(containerName)
{
	container = containerName;
	
	//read url
	var pageURL = document.location.toString();
	
	var delimeter = pageURL.search('#');
	
	if (delimeter < 0)
	{
		delimeter = pageURL.search("page") - 1;
	}
	
	if (delimeter >= 0) {
		var pageInfo = pageURL.substring(delimeter + 1, pageURL.length);
		
		sendRequest(pageInfo);
	}
	else 
	{
		sendRequest(defaultParameters);
	}
	
	if (loadingScreenIsCreated == false) {
		//create loading screen
		var div = document.createElement("div");
		var img = document.createElement("img");
		img.setAttribute("alt", "Loading");
		img.setAttribute("src", defaultPath+"style/img/LoadingIcon.gif");
		div.setAttribute("id", "loading");
		div.appendChild(img);
		document.body.appendChild(div);
		
		loadingScreenIsCreated = true;
	}
}

function getValueFromInput(input)
{
	var object = document.getElementById(input);
	
	var value = "";
	
	if (object)
	{
		if (object.nodeName.toLocaleLowerCase() == "input")
			value = object.value;
			
		else if (object.nodeName.toLocaleLowerCase() == "textarea")
			value = object.value;
			
		else if (object.nodeName.toLocaleLowerCase() == "select")
			value = object.options[object.selectedIndex].value;
	}
	
	return value;
}
