//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//	AJAX Framework / XML Http Object
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
//	cheltenham software
//	http://cheltenham-software.com/
//	無断配布や二次利用を禁止します。
//---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
// XMLHTTPリクエストオブジェクトを生成する関数
function cheltenhamXmlHttpObject_createXmlHttpRequest()
{
	/*
		Microsoft.XMLHTTP
			Msxml.dll で、IEでは4.0か5.5SP2まで同梱
		MSXML2.XMLHTTP
			Msxml3.dll で、IEでは6.0〜同梱、OSではXP〜、OfficeではXP 3.0〜
	*/
	var httpObject;
	try
	{
		if( window.XMLHttpRequest )
		{
			httpObject = new XMLHttpRequest();
		}
		else if( window.ActiveXObject )
		{
			try
			{
				httpObject = new ActiveXObject( "Msxml2.XMLHTTP" );
			}
			catch( exceptionMSXML2Fault )
			{
				httpObject = new ActiveXObject( "Microsoft.XMLHTTP" );
			}
		}
		else
		{
			httpObject = false;
		}
	}
	catch( exceptionHttpObjectFault )
	{
		httpObject = false;
	}
	return( httpObject );
}

// 通信中かどうかチェック
function cheltenhamXmlHttpObject_checkXmlHttpRequestActive( httpObject )
{
	if( httpObject == null )
	{
		return( false );
	}

	if( httpObject.readyState == 0 )
	{
		return( false );
	}
	else if( httpObject.readyState == 1 )
	{
		return( true );
	}
	else if( httpObject.readyState == 2 )
	{
		return( true );
	}
	else if( httpObject.readyState == 3 )
	{
		return( true );
	}
	else if( httpObject.readyState == 4 )
	{
		return( false );
	}
	else
	{
		return( false );
	}
}

// 通信中断
function cheltenhamXmlHttpObject_abortRequest( httpObjectTarget )
{
	if( httpObjectTarget != null )
	{
		try
		{
			httpObjectTarget.onreadystatechange = function(){};
			httpObjectTarget.abort();
			httpObjectTarget = null;
		}
		catch( exception )
		{
		}
	}
}

// XMLHTTPリクエストオブジェクト生成に失敗した場合の処理
function cheltenhamXmlHttpObject_noticeFailureCreateXmlHttpRequest()
{
	alert( 'XMLHTTPリクエストオブジェクト生成に失敗しました。' );
	return( false );
}

// サーバーへデータを送信する関数
function cheltenhamXmlHttpObject_sendHttpRequest( urlSend, methodSend, dataSend, typeDataGet, functionNext )
{
	// XMLHttpリクエストオブジェクト生成
	var objectHttpRequest = cheltenhamXmlHttpObject_createXmlHttpRequest()
	if( !objectHttpRequest )
	{
		cheltenhamXmlHttpObject_noticeFailureCreateXmlHttpRequest();
	}

	// レスポンスデータの処理
	objectHttpRequest.open( methodSend, urlSend, true );
	objectHttpRequest.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded" );
	objectHttpRequest.onreadystatechange = function()
	{
		if( objectHttpRequest.readyState == 4 )
		{
			if( objectHttpRequest.status == 200 )
			{
				if( typeDataGet == "xml" )
				{
					var dataResponse = objectHttpRequest.responseXML;
				}
				else
				{
					var dataResponse = objectHttpRequest.responseText;
				}
				functionReference = function()
				{
					functionNext( dataResponse );
				}
				setTimeout( functionReference, 0 );
			}
		}
	}
	objectHttpRequest.send( dataSend );
}
