/*******************************************************************************

	AJAX - HTTP通信用共通関数

	Copyright(c) 2005- Mike Y. Nishioka

*******************************************************************************/

// HTTP通信オブジェクトを作成して返す
function CreateAjax(callback_function)
{
	var XMLhttpObject = null;
	
	try
	{
		XMLhttpObject = new XMLHttpRequest();
	}
	catch(e)
	{
		try
		{
			XMLhttpObject = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch(e)
		{
			try
			{
				XMLhttpObject = new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch(e)
			{
				return null;
			}
		}
	}

	if (XMLhttpObject && callback_function) 
	{
		XMLhttpObject.onreadystatechange = callback_function;
	}

	return XMLhttpObject;
}


// AJAXコマンドを送信する（コールバックが既に指定されているとみなす）
function AjaxSend(httpobj, param1, param2, param3)
{
	httpobj.open(param1 ,param2, param3);
	httpobj.setRequestHeader("If-Modified-Since", "Wed, 15 Nov 1995 12:34:56 GMT");
	httpobj.send(null);
}


// AJAXコマンドを実行する（シンプル版）通信方法を"GET"とする
function AjaxCommand(httpobj, param2, callback_function)
{
	return AjaxCommandEx(httpobj, "GET", param2, true, callback_function);
}


// AJAXコマンドを実行する（拡張版）
function AjaxCommandEx(httpobj, param1, param2, param3, callback_function)
{
	if( ! httpobj )
		return false;

	httpobj.open(param1 ,param2, param3);
	httpobj.setRequestHeader("If-Modified-Since", "Wed, 15 Nov 1995 12:34:56 GMT");
	httpobj.onreadystatechange = function()
	{
		if( callback_function )
		{
			if( AjaxSuccess(httpobj) )
				callback_function(httpobj);
		}
		else
		{
			alert("コールバック関数が指定されていない");
		}
	}
	httpobj.send(null);
	return true;
}


// AJAX通信が成功したら 'true' を返す
function AjaxSuccess(obj)
{
	if ((obj.readyState == 4) && (obj.status == 200))
		return true;

	return false;
}


// AJAX結果文字列（ＤＣＦフォーマット）を配列に入れて返す
function AjaxResultExtract(str, sep)
{
	var resarr = new Array();
	var ix = "";

	arr = str.split(sep);
	for(ii=1; ii<(arr.length - 1); ii++)
	{
		if( ix == "" )
		{
			ix = arr[ii];
		}
		else
		{
			resarr[ix] = arr[ii];
			ix = "";
		}
	}

	return resarr;
}


