var submitButtonId = "";
var pageloading = false;
var oldHash="";
var contentElement = null;

window.setInterval("pollHash();", 380);

function loadContents(url,page,postquery)
{
	if(url == undefined)
	{
		// no url specified, break out
		return;
	}
	var obj=newAjaxObject();
	obj.onreadystatechange=function()
	{
		if(obj.readyState==4)
		{
			document.body.scrollTop = 0;
			submitButtonId = "";
			window.location="#"+page;
			oldHash=page;
			contentElement.innerHTML = obj.responseText;
			Rounded('rounded-3', 18, 18, 18, 18);
			pageloading = false;
			hideObject(document.getElementById('loader'));
			setOpacity(contentElement,10);
			jscolor.init();
			fixForms();
		}
	}
	setOpacity(contentElement,2);
	centerAndShow(document.getElementById('loader'));
	if(postquery!=undefined)
	{
		pageloading=true;
		obj.open('POST', url, true);
		obj.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		obj.setRequestHeader("Content-length", postquery.length);
		obj.setRequestHeader("Connection", "close");
		obj.send(postquery);
	}
	else
	{
		pageloading=true;
		obj.open("GET", url, true);
		obj.send(null);
	}
}	
function newAjaxObject()
{
	if (window.XMLHttpRequest)
	{
		// code for IE7+, Firefox, Chrome, Opera, Safari
		return new XMLHttpRequest();
	}
	else if (window.ActiveXObject)
	{
		// code for IE6, IE5
		return new ActiveXObject("Microsoft.XMLHTTP");
	}
	else
	{
		return null;
	}
}

function pollHash()
{
	if(pageloading!=true)
	{
		var hash=returnHash(window.location);
		var buttonId = hash;
		if(hash!=oldHash)
		{
			if(hash!="")
			{
				var endLocation = hash.indexOf("&");
				if(endLocation > -1)
				{
					// contains arguments, cut them off
					buttonId = hash.substring(0,endLocation);
				}
				loadContents("postback.php?"+hash,hash);
			}
			else
			{
				loadContents("postback.php",hash);
			}
		}
		else
		{
			oldHash=hash;
		}
	}
}

function returnHash(a_sLink){
  return unescape(self.document.location.hash.substring(1))
}

function initAjax()
{
	if(document.body == null)
	{
		setTimeout("initAjax();",100);
		return; 
	}
	else
	{
		contentElement = document.getElementById('contents-inner');
		loadContents("postback.php","");
	}
}

function initAjaxAdmin()
{
	if(document.body == null)
	{
		setTimeout("initAjaxAdmin();",100);
		return; 
	}
	else
	{
		contentElement = document.getElementById('contents-inner');
		loadContents("postback.php?p=admin","p=admin");
	}
}

function catchForm(form)
{
	act=form.action.substring(form.action.lastIndexOf('/')+1);
	loadContents("postback.php?"+act,act,implodeForm(form));
	 return false;
}

function fixForms()
{
	for(var form = 0; form < document.forms.length; form++)
	{
		addListener(document.forms[form],"submit","catchForm(this);");
	}
}

function addListener(obj,event,func)
{
	//try {
	//  obj.addEventListener(event, func);
	//} catch(e) {
	//  obj.attachEvent(event, func); //Internet Explorer
	//}
	obj.onsubmit=function() {
		eval(func);
		return false;
	}
}

function getAllFormElements( parent_node ) {
  if( parent_node == undefined ) {
    parent_node = document;
  }
  var out = new Array();
  formInputs = parent_node.getElementsByTagName("input");
  for (var i = 0; i < formInputs.length; i++)
    out.push( formInputs.item(i) );
    formInputs = parent_node.getElementsByTagName("textarea");
  for (var i = 0; i < formInputs.length; i++)
    out.push( formInputs.item(i) );
    formInputs = parent_node.getElementsByTagName("select");
  for (var i = 0; i < formInputs.length; i++)
    out.push( formInputs.item(i) );
	formInputs = parent_node.getElementsByTagName("button");
  for (var i = 0; i < formInputs.length; i++)
    out.push( formInputs.item(i) );
  return out;
}

function implodeForm(form)
{
	var els = new Array();
	var fr = getAllFormElements(form);
	for(var i=0,j=fr.length; i<j; i++)
	{
		if(fr[i].type=="checkbox" || fr[i].type=="radio")
		{
			if(fr[i].checked)
			{
				els.push(fr[i].name+"="+escape(fr[i].value));
			}
		}
		else if(fr[i].type=="submit" && submitButtonId!="")
		{
			// ignore
		}
		else
		{
			els.push(fr[i].name+"="+escape(fr[i].value));
		}
	}
	if(submitButtonId!="")
	{
		els.push("submit="+submitButtonId);
	}
	return els.join("&");
}
