function ajax(url, vars, callbackFunction, ignoreTimeout, timeout)
{
	// check if timeout parameter was specified or not
	// if not, set a default value
	var timeout = typeof(timeout) != 'undefined' ? timeout : 60000; // 10 seconds
	var timeoutId;
	var request = window.XMLHttpRequest ?
	new XMLHttpRequest() : new ActiveXObject("MSXML2.XMLHTTP.3.0");

	if (url.match(/\?/)) {
		request.open("POST", url+(vars ? '&'+vars : ''), true);
	} else {
		request.open("POST", url+(vars ? '?'+vars : ''), true);
	}
	request.setRequestHeader("Content-Type",
													 "application/x-www-form-urlencoded"); 

	
	if (!ignoreTimeout) {
		timeoutId = window.setTimeout(
			function() {
				if (request.readyState != 4 || request.status != 200) {
					request.abort();
					var msg = getErrorMessage('AJAX_TIMEOUT');
					if (!msg) 
						msg = 'Asynchronous request to the server timeouted. '
							+ 'You should reload the page to prevent errors!'
					alert(msg);
				}
			},
			timeout
		);
	}
 
	request.onreadystatechange = function() {
		if (request.readyState == 4) {
			if (request.status == 200) {
				if (!ignoreTimeout)
					window.clearTimeout(timeoutId);
				if (request.responseText) {
					if (typeof callbackFunction == 'function') {
						callbackFunction(request.responseText);
					} else if (callbackFunction != null && typeof callbackFunction == 'object' && typeof callbackFunction[0] == 'function') {
						var fn = callbackFunction[0];
						var param = typeof callbackFunction[1] != 'undefined' ? callbackFunction[1] : null;
						fn(request.responseText, param);
					}
				}
			} else {
				alert('Ajax error, refresh page! (return status: '+request.status+')');
				throw new Error('Ajax page not available');
			}
		}  
	};
	request.send(vars);
}

function sjax(url, vars) {
	var request = window.XMLHttpRequest ?
	new XMLHttpRequest() : new ActiveXObject("MSXML2.XMLHTTP.3.0");

	request.open("POST", url, false);
	request.setRequestHeader("Content-Type",
													 "application/x-www-form-urlencoded"); 
  request.send(vars);
  if (request.status === 200)
		return request.responseText;
	else
		return null;                                         
}

