var aj;
var ajxTarget;
var customFunc;

if (window.XMLHttpRequest) aj = new XMLHttpRequest();
else if (window.ActiveXObject) aj = new ActiveXObject('MSXML2.XMLHTTP.3.0');
else alert('Browser not supported');

function ajax()
	{
		aj.abort();
	}

var ajaxReceiver;

function ajx(url,func)
	{
		ajax();
		d = new Date;
		ajaxReceiver = null;
		if (typeof func != 'undefined')
			ajaxReceiver = func;
		aj.onreadystatechange = function()
			{
			try
				{
//uploadStatus.innerHTML += "<br>"+ aj.readyState+','+aj.status+','+aj.statusText;
				if ((aj.readyState==4) && (aj.status==200))
					{
//						loading.style.display = 'none';
						if (ajaxReceiver != null)
								ajaxReceiver(aj.responseText);
					}
				}
			catch(e)
				{
				}
			}
//		loading.style.display = '';
		aj.open('GET',url+(url.match(/\?\&/)?'':('&'+d.getTime())));
		aj.send(null);
	}

function loadData()
	{
		ajxTarget.innerHTML = aj.responseText;
		if (customFunc != undefined)
			{
				customFunc();
				customFunc = undefined;
			}
	}

function ajxPP(url,func1)
	{
		func = loadData;
		customFunc = func1;
		ajx(url,func);
	}

function ajo(url)
	{
		var obj = document.createElement('DIV');
		ajxTarget = obj;
		ajxPP(url);
		return obj;
	}

function collectData(el,data)
	{
		for (var i in el.childNodes)
			{
				var j = el.childNodes[i];
				switch (j.tagName)
					{
						case 'SELECT':
							data.push(j.name+'='+escape(j.options[j.selectedIndex].value));
							break;
						case 'INPUT':
							data.push(j.name+'='+escape(j.value));
							break;
						case 'TEXTAREA':
							data.push(j.name+'='+escape(j.innerHTML));
							break;
						default:
							collectData(el.childNodes[i],data);
					}
			}
	}
