$ = function(elem_id)
{
	return document.getElementById(elem_id);
}

// v basic function for making ajax requests.
// Pass it param hash
ajaxRequest = function(p) {
	if(typeof XMLHttpRequest != 'undefined')
	{
		var con = new XMLHttpRequest();
	}
	else if (window.ActiveXObject)
	{
		var avers = ["Microsoft.XmlHttp", "MSXML2.XmlHttp", "MSXML2.XmlHttp.3.0", "MSXML2.XmlHttp.4.0", "MSXML2.XmlHttp.5.0"];
		for (var i = avers.length -1; i >= 0; i--)
		{
			try
			{
				httpObj = new ActiveXObject(avers[i]);
				var con = httpObj;
				break;
			}
			catch(e)
			{
			//do nothing
			}
		}
	}

	var method = p.method.toUpperCase();

	con.open(method, p.url, true );

	if(method == 'POST') // send additional headre for POST requests
	{
		con.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		con.setRequestHeader("Content-length", p.params.length);
		con.setRequestHeader("Connection", "close");
	}

	con.setRequestHeader("X_REQUESTED_WITH", "XMLHttpRequest"); // Allow PHP to diffrentaite between AJAX and normal HTTP requests.
	// Define what to do on success
	con.onreadystatechange = function()
	{
		if(con.readyState == 4 && con.status == 200)
		{
			var returnObject = (p.returnCompleteResponse == true) ? con : eval( "(" + con.responseText + ")" ) // security vulnerability!
			p.onSuccess(returnObject);
		}
	}

	var postData = (method == 'POST') ? p.params : null;

	con.send(postData);
}

postForm = function(form, respFunction)
{
	//form.disabled = true;
	//alert('asdasd');
	$(form.js_action.value+'Loader').style.visibility = 'visible';

	var data = new Array();
   	var input = form.getElementsByTagName('input');

	var param_string = '';

	for (var i=0; i<input.length; i++)
	{
		if(!input[i].name) continue;
		// An input field named 'action' will overwrite the forms action param. Had to name it js_action.
		var data_name = (input[i].name == 'js_action') ? 'action' : input[i].name;
		var data_value = input[i].type == 'checkbox' ? (input[i].checked ? 1 : 0) : input[i].value

		if (input[i].type == 'radio')
		{
			if (!input[i].checked)
				continue;
			var data_value = input[i].value;
		}

		param_string += data_name + '=' + data_value + '&';
	}
	//alert(params:param_string);
	ajaxRequest({method:"post", url:form.action, params:param_string, onSuccess:respFunction});
}
