function AJAXInteraction(url, callback)
{
	var req = init();
	req.onreadystatechange = processRequest;

	var args = new Array()
	var str = "";
	for (var i=2; i<AJAXInteraction.arguments.length; i++){
		args.push(AJAXInteraction.arguments[i])
		str += "args["+(i-2)+"],"
	}      
	str += "0"

	function init() {
		if (window.XMLHttpRequest) {
			return new XMLHttpRequest();
		} else if (window.ActiveXObject) {
			return new ActiveXObject('Microsoft.XMLHTTP');
		}
	}

	function processRequest() {
		if (req.readyState == 4) {
			if (req.status == 200) {
				if (callback){
					eval("callback(req.responseText, "+str+")")
				}
			}
		}
	}

	this.doGet = function() {
		req.open('GET', url, true);
		req.send(null);
	}

	this.doPost = function(body) {
		req.open('POST', url, true);
		req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		req.send(body);
	}
}


function parseContent(content)
{
	var i;
	if ((i = content.indexOf("\n")) != -1){
		var code = content.substr(0,i);
		content = content.substr(i+1);
		if ((i = content.indexOf("\n")) != -1){
			var message = content.substr(0,i);
			content = content.substr(i+1);
			return {content:content, code:code, message:message};
		}
		else
		return {content:content, code:code, message:"Operation succeeded"};
	}
	return {content:content, code:"error", message:"Operation prohibited"};
}

packHash = function(hash)
{
	var items = new Array()
	for (var i in hash){
		var type = typeof(hash[i])
		if (type == 'function') continue;
		items.push(i+':'+(type=='string'?'"'+escape(hash[i])+'"':hash[i]))
	}
	return '{'+items.join(',')+'}'
};

function disable(value, jquery){
	$(jquery).attr('disabled', value)
}

function toInteger(str)
{
	return str.replace(new RegExp("[^-0-9]","g"), "");
}

var WindowManager = null;