function ajaxInitObject() {
	var ao;
	try {
		ao=new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
		try {
			ao=new ActiveXObject("Microsoft.XMLHTTP");
		} catch (oc) {
			ao=null;
		}
	}
	if (!ao && typeof XMLHttpRequest != "undefined") ao = new XMLHttpRequest();
	return ao;
}

function ajaxDirectRequest( url , post_parameters_string , callback_function ) {
	var ao = ajaxInitObject();

	ao.open("POST",url,true);
	ao.setRequestHeader( "Content-type" , "application/x-www-form-urlencoded; charset=ISO-8859-2;" );
	ao.setRequestHeader( "Content-length" , post_parameters_string.length );
	ao.setRequestHeader( "Connection" , "close" );
	ao.onreadystatechange=function() {
		var retval;
		if (ao.readyState!=4) return;
		if (ao.responseText.charAt(0)=="!") alert( 'Ajax error:' + ao.responseText );
		else {
			/*
			if (ees_google_tracker) {
				if (typeof(pageTracker)!='undefined') pageTracker._trackPageview(nt_global_uri);
			}
			*/
			callback_function(ao.responseText);
		}
	};
	ao.send(post_parameters_string);
	delete ao;
}

function ajaxMakeParamString( params ) {
	var retval="";
	for (var i=0 in params) {
		retval+=(retval.length) ? "&" : "";
		retval+=i + "=" + params[i];
	}
	return retval;
}

function ajaxRequest( uri , get_parameters , post_parameters , callback_function ) {
	var get_string = ajaxMakeParamString( get_parameters );
	var url = uri;
	if (get_string.length) url+="?" + get_string;
	var post_string = ajaxMakeParamString( post_parameters );
	ajaxDirectRequest( url  , post_string , callback_function );
}

function ajaxFunction( uri , func_name , get_parameters , post_parameters , callback_function ) {
	get_parameters["ajaxCall"]=escape( func_name );
	get_parameters["ajaxRand"]=new Date().getTime();
	ajaxRequest( uri , get_parameters , post_parameters , callback_function );
}
