<!--
/***************************************************************************

	Copyright(c)2006. GreenFish.corp. All rights reserved.
	programming by Lee,Yong-Kwon.
	E-mail : megaboy@empal.com

	À§ÀÇ ¹®±¸¸¦ »èÁ¦ÇÏÁö ¾Ê´Â´Ù¸é ´©±¸³ª ¾Æ¹«·± Á¦¾à¾øÀÌ
	ÀÌ ½ºÅ©¸³Æ®¸¦ °¡Á®´Ù ¾²½Ç ¼ö ÀÖ½À´Ï´Ù.

***************************************************************************/
var RETURN_TEXT			= 0;
var RETURN_BODY			= 1;
var RETURN_XML			= 2;

// ERROR CODE
var CREATE_FAIL			= 0; //CREATE XMLHTTP ERROR
var HANDLE_XMLHTTP_ERROR	= 1; //handleHttpResponse error.
var URL_OPEN_ERROR		= 2; //Open() ERROR.
var INITIALIZE_ERROR		= 3; //Initialize() ERROR

XMLHTTPSOCKET = function()
{
	var returnType = 0;
	var methodType = "GET";
	var characterSet = "euc-kr";
	var self = null;
	var socket = null;
	//var receiveResultFunc = null;

	this.errorFunc = function(code,msg){};
	this.receiveResultFunc = function(arg){};

	this.SetReturnType = function(n)
	{
		if(n==undefined || n<RETURN_TEXT || n>RETURN_XML) n = RETURN_TEXT;
		returnType = n;
	}

	this.SetMethodType = function(arg)
	{
		if(arg==undefined || arg==null || arg=="" || (arg != "GET" && arg!="POST")) arg="GET";
		methodType = arg;
	}

	this.SetCharacterSet = function(arg)
	{
		if(arg==undefined || arg==null || arg=="") arg="euc-kr";
		characterSet = arg;
	}

	//this.SetCallBackFunction = function(func)
	//{
	//	this.receiveResultFunc = func;
	//}

	this.CreateInstance = function()
	{
		try
		{
			if(socket != null && socket != false) return socket;

			var xmlhttp = null;
			try 
			{
				xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
			} 
			catch(e) 
			{
				try
				{
					xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
				}
				catch(e)
				{
					xmlhttp = null;
				}
			}

			if (xmlhttp==null || typeof XMLHttpRequest != 'undefined') 
			{
				try 
				{
					xmlhttp = new XMLHttpRequest();
				} 
				catch (e) 
				{
					xmlhttp = null;
				}
			}
			return xmlhttp;
		}
		catch(e)
		{
			//alert("CreateInstance() ERROR: "+e.description);
			this.errorFunc(CREATE_FAIL, "CreateInstance() ERROR: "+e.description);
			return null;
		}
	}

	this.ReleaseInstance = function()
	{
		if(socket != null)
		{
			delete socket;
			socket = null;
		}
		receiveResultFunc = null;
	}

	this.handleHttpResponse = function()
	{
		if(socket != null)
		{

			var results=null;
			if (socket.readyState == 4) 
			{
				try
				{
					switch(returnType)
					{
					case RETURN_TEXT:
						results = socket.responseText;
						break;
					case RETURN_BODY:
						results = socket.responseBody;
						break;
					case RETURN_XML:
						results = socket.responseXml;
						break;
					default:
						break;
					}
					
					//µî·ÏµÈ ÇÔ¼ö·Î °á°ú¸¦ Àü¼ÛÇØÁØ´Ù.
					if(self.receiveResultFunc != null && results != null && results!="" && socket.status<=2000)
					{
						//receiveResultFunc(results);
						//alert(results);
						self.receiveResultFunc(results);
					}
				}
				catch(e)
				{
					//TODO: µî·ÏµÈ Ã³¸®ÇÔ¼ö ¿¡·¯!
					//alert("handleHttpResponse() ERROR: "+e.description);
					self.errorFunc(HANDLE_XMLHTTP_ERROR, "handleHttpResponse() ERROR: "+e.description);
				}
			}
		}
	}

	this.Open = function(__url, __query)
	{
		if(socket != null)
		{
			try
			{
				socket.open(methodType, __url, false);
				socket.setRequestHeader("Content-Type:","application/x-www-form-urlencoded");
				socket.setRequestHeader("Content-Encoding:",characterSet);
				if(__query != null && __query != undefined)
				{
					socket.setRequestHeader("Content-Length:", __query.length);
				}
				else
				{
					__query = null;
				}
				socket.onreadystatechange = this.handleHttpResponse;
				socket.send(__query);
				if(socket.status > 200)
				{
					//TODO: ÆäÀÌÁö¸¦ Ã£À» ¼ö ¾ø½À´Ï´Ù.
					//alert("Open() ERROR: ÆäÀÌÁö¸¦ Ã£À» ¼ö ¾ø½À´Ï´Ù.");
					this.errorFunc(URL_OPEN_ERROR, "Open() ERROR: ÆäÀÌÁö¸¦ Ã£À» ¼ö ¾ø½À´Ï´Ù.");
				}
			} 
			catch(e) 
			{
				//TODO: ÆäÀÌÁö¸¦ Ã£À» ¼ö ¾ø½À´Ï´Ù.
				//alert("Open() ERROR: "+e.description);
				this.errorFunc(URL_OPEN_ERROR,"Open() ERROR: "+e.message);
			}
		}
		else
		{
			//TODO:
			//xmlHttp°´Ã¼¸¦ Ã£À» ¼ö ¾ø½À´Ï´Ù.
			//alert("Open() ERROR: xmlHttp°´Ã¼¸¦ Ã£À» ¼ö ¾ø½À´Ï´Ù.  ");
			this.errorFunc(URL_OPEN_ERROR,"Open() ERROR: xmlHttp°´Ã¼¸¦ Ã£À» ¼ö ¾ø½À´Ï´Ù.  ");
		}
	}

	this.Initialize = function()
	{
		try
		{
			self = this;
			socket = this.CreateInstance();
			if(socket==null)
			{
				return false;
			}
			else
			{
				return true;
			}
		}
		catch(e)
		{
			//alert("Initialize() ERROR: "+e.description+", line="+line);
			this.errorFunc(INITIALIZE_ERROR,"Initialize() ERROR: "+e.description+", line="+line);
		}
		return false;
	}
}

/////////////////////////////////////////////////////
//
// »ç¿ë ¿¹Á¦(ÀÌ ÆÄÀÏÀ» ÀÎÅ©·çµå ÇÑ ¹®¼­ÀÇ ÇÏ´Ü¿¡ ¾Æ·¡¿Í °°ÀÌ ÄÚµùÇØÁÖÀÚ.)
//
/////////////////////////////////////////////////////
/*
//1. ¼ö½ÅµÈ µ¥ÀÌÅ¸¸¦ Ã³¸®ÇÒ ÇÔ¼ö¸¦ ¸¸µç ÈÄ
// - ¾Æ·¡ÀÇ Çü½ÄÀ» ÁöÄÑÁÖ±æ ¹Ù¶õ´Ù.
function resultFunction(arg)
{
	try
	{
		//TODO:
		document.all.doc.innerHTML = arg;
	}
	catch(e)
	{
		alert("resultFunction() ERROR: "+e.description);
	}
}


//xmlhttp°´Ã¼¸¦ »ý¼ºÇÏ°í...
var req = new XMLHTTPSOCKET();

//ÃÊ±âÈ­ ÇÏÀÚ.. ÃÊ±âÈ­¿¡ ½ÇÆÐÇßÀ¸¸é false ¼º°øÀº true
req.Initialize();

//¸®ÅÏÅ¸ÀÔÀ» ¼³Á¤ÇÑ´Ù. 
// RETURN_BODY,RETURN_TEXT",RETURN_XML µðÆúÆ®´Â RETURN_TEXT
req.SetReturnType(RETURN_TEXT);

//¸¸µç ÇÔ¼ö¸¦ µî·ÏÇØ ÁÖÀÚ.
req.receiveResultFunc = resultFunction; 

//¿¡·¯¸¦ Ã³¸®ÇÒ ÇÔ¼ö¸¦ µî·ÏÇØ ÁÖÀÚ.
req.errorFunc = errorFunction;

//urlÀ» È£ÃâÇÑ´Ù.
req.Open("http://www.ijji.com/", null);
*/
//-->


