var xmlHttp = null;
var receiveEndEventHandler = null;
var receiveContentType = null;
var requestUrl = null;

function XmlLoader()
{
	this.Async = true;
	
	var stateChanged = function()
	{
		if(xmlHttp == null)
			alert("XMLHttp is null");
		
		if(xmlHttp.readyState == 4)
		{
			if(xmlHttp.status == 200)
			{
				if(receiveEndEventHandler != null)
				{
					/*if(receiveContentType == null || receiveContentType.toLowerCase() == "xml")
						receiveEndEventHandler(xmlHttp.responseXML);
					else
						receiveEndEventHandler(xmlHttp.responseText);*/
					var contentType = xmlHttp.getResponseHeader("Content-Type");
					if(contentType == null || contentType.toLowerCase().indexOf("xml") <0)
						receiveEndEventHandler(null, xmlHttp.responseText);
					else
						receiveEndEventHandler(xmlHttp.responseXML, null);
				}
				else
					alert("this handler null");
			}
			else if(xmlHttp.status == 404)
			{
				//throw "Code request not found";
				alert("죄송합니다. 요청한 서비스를 찾을 수 없습니다(404).\r\n" + requestUrl);
			}
			else
			{
				//throw "Error while receiving: " + xmlHttp.status;
				alert("죄송합니다. 요청한 서비스를 처리하던 중 오류가 났습니다: " + xmlHttp.status); 
			}
		}
	};

	this.sendGet = function(url, content, recvEndHandler, contentType)
	{
		if(window.XMLHttpRequest)
			xmlHttp = new XMLHttpRequest();
		else if(window.ActiveXObject)
			xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
		
		if(xmlHttp == null)
		{
			throw "Your browser does not support XMLHTTP.";
		}

		requestUrl = url;
		
		receiveEndEventHandler = recvEndHandler;
		receiveContentType = contentType;
		
		xmlHttp.onreadystatechange = stateChanged;
		xmlHttp.open("GET", url, this.Async);
		xmlHttp.send(content);
	};
	
	this.sendPost = function(url, content, recvEndHandler, contentType)
	{
		if(window.XMLHttpRequest)
			xmlHttp = new XMLHttpRequest();
		else if(window.ActiveXObject)
			xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");

		if(xmlHttp == null)
		{
			throw "Your browser does not support XMLHTTP.";
		}
		
		requestUrl = url;
		
		receiveEndEventHandler = recvEndHandler;
		receiveContentType = contentType;
		
		xmlHttp.onreadystatechange = stateChanged;
		xmlHttp.open("POST", url, this.Async);
		xmlHttp.setRequestHeader("content-type", "application/x-www-form-urlencoded");
		xmlHttp.setRequestHeader("content-length", content.length);
		xmlHttp.setRequestHeader("connection", "close");
		xmlHttp.send(content);
	}
}