//AJAX library
//Daniel 2005/10/12

//AJAXライブラリ
//ダニエル 2005/10/12

//function to create an AJAX object
//AJAXオブジェクトを作成する関数
function createAJAXObject()
{
	var AJAXObject;
	
	//IE以外
	if(window.XMLHttpRequest)
	{
		AJAXObject = new XMLHttpRequest();
		//AJAXObject.overrideMimeType('text/xml');
	}
	
	//IE用
	else if(window.ActiveXObject)
	{
		try	//try to use version 2.0 of the object
		{
			AJAXObject = new ActiveXObject("MSXML2.XMLHTTP");
		}
		
		catch(error)	//else use the original version
		{
			AJAXObject = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	
	return AJAXObject;
}

//global AJAX objects
//グローバルAJAXオブジェクト
var AJAXObject = createAJAXObject();
var currentReactionHandler;
var currentMethod = 'GET';
var waitResults = false;

//AJAXServerLocation is a *relative* path
function AJAXAction(AJAXServerLocation, jobString, parameterString)
{
	//timestamp kills the cache on IE
	//timestampは IE のキャシュを殺すために
	var serverURL = AJAXServerLocation
		+ '?job=' + jobString
		+ '&parameter=' + parameterString
		+ '&timestamp=' + new Date().getTime();

	//the third parameter is "wait for results in background"
	AJAXObject.open(currentMethod, serverURL, waitResults);
	
	//set the reaction handler to the user-changeable global variable
	AJAXObject.onreadystatechange = currentReactionHandler;
	
	//go!
	AJAXObject.send(null);
}

//Dataの送信方法を指定する
function setAJAXMethod(newMethod)
{
	currentMethod = newMethod;
}

//reactionHandler is a function name reference
function setAJAXReaction(reactionHandler)
{
	currentReactionHandler = reactionHandler;
	//alert(currentReactionHandler);
}

//サーバーとの同期方法（true: サーバーの応答を待たない。false: サーバーの応答を待つ。）
function setAJAXSynchronism(newMethod)
{
	waitResults = newMethod
}

