function callAsyncAjaxRequest(args,opts) {
		var onSuccessHandler = opts["onSuccess"];
		var onFailureHandler = opts["onFailure"];
		var onRequestFailureHandler = opts["onRequestFailure"];
		if(onRequestFailureHandler == null){
			onRequestFailureHandler = function(r) {
				alert('AJAX request failed');
			};
		}
		var args_str = "";
		for(var k in args) {
			args_str += k + "=" + escape(args[k]) + "&";
		}
		args_str = args_str.substr(0, args_str.length - 1);
		new Ajax.Request(
				'/cgi-bin/index.cgi',
				{
					method: opts["method"],
					parameters: args_str,
					onSuccess: function(r) {
						var res = eval("(" + r.responseText + ")");
						if(res.success){
							onSuccessHandler(res);
						}
						else{
							onFailureHandler(res);
						}
					},
					onFailure: onRequestFailureHandler
				}
		);
}


