// AJAX functions

function CreateRequestObject()
{
	var request = null;
	try {
    	request=new ActiveXObject('Msxml2.XMLHTTP');
    } catch (e){}
	if(!request) try {
    	request=new ActiveXObject('Microsoft.XMLHTTP');
	} catch (e){}
	if(!request) try {
    	request=new XMLHttpRequest();
	} catch (e){}
	return request;
}

function ServerRequest(url, method, data, callback)
{
    var request = CreateRequestObject();
	if(!request) return false;
	request.onreadystatechange  = function() { 
    	if(request.readyState == 4 && callback) callback(request);
    }
    request.open(method, url, true);

	if (method == 'POST') {
		try { 
			request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		} catch (e) {}	
	}

	request.send(UrlEncodeData(data));		
	
	return true;
}

function UrlEncodeData(data)
{
	var query = [];
	if (data instanceof Object) {
    	for (var k in data) {
        	query.push(encodeURIComponent(k) + "=" + encodeURIComponent(data[k]));
    	}
    	return query.join('&');
	} else {
    	return encodeURIComponent(data);
	}
}