/*==========================================================
	ÆÄÀÏ¸í		:ajax_interaction.js
	ÆÄÀÏ¼³¸í		:ajax ¿äÃ»Ã³¸® ½ºÅ©¸³Æ®
	Á¦  ÀÛ		:
==========================================================*/

/***********************************************************
	ÇÔ¼ö¸í		:newXMLHttpRequest()
	Ã³¸®³»¿ë		:¿äÃ»°´Ã¼¸¦ »ý¼ºÈÄ ¹ÝÈ¯
***********************************************************/
function newXMLHttpRequest() {
	var xmlreq = false;
	if (window.XMLHttpRequest) {
		// Create XMLHttpRequest object in non-Microsoft browsers
		xmlreq = new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		// Create XMLHttpRequest via MS ActiveX
		try {
			// Try to create XMLHttpRequest in later versions
			// of Internet Explorer
			xmlreq = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e1) {
			// Failed to create required ActiveXObject
			try {
				// Try version supported by older versions
				// of Internet Explorer
				xmlreq = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e2) {
				// Unable to create an XMLHttpRequest with ActiveX
			}
		}
	}
	return xmlreq;
}


/***********************************************************
	ÇÔ¼ö¸í		:ajaxInteraction(¾×¼Ç¸í, ½ÇÇàÆÄÀÏ, postÆÄ¶ó¹ÌÅÍ), (Ä¸½¶È­)
	Ã³¸®³»¿ë		:ajax»óÈ£ÀÛ¿ë ÇÔ¼ö
***********************************************************/
function ajaxInteraction(action, url, postParam) {
	var REQ = newXMLHttpRequest();//req °´Ã¼¹ÝÈ¯
	var handlerFunction = processReqHandler;
	//ÀÀ´äÀÌ ¿Ï·áµÇ¸é ÀÚµ¿À¸·Î ½ÇÇàµÇµµ·Ï JavaScript ÄÝ¹é ÇÔ¼ö¸¦ Á¤ÀÇ
	REQ.onreadystatechange = handlerFunction;
	
	var modurl = "";
	//ÄÉ½¬µÇ¾îÀÖ´Â ÆÄÀÏ·Îµå ¹æÁö
	var myRand = parseInt(Math.random()*999999999999999); 
	
	if(url.indexOf("?") > -1) {
		modurl = url+"&rand="+myRand;
	} else {
		modurl = url+"?rand="+myRand;
	}

	//¿äÃ»Ã³¸®
	this.doGet = function() {
      REQ.open("GET", modurl, true);
      REQ.send(null);
    }
    
    this.doPost = function() {
      REQ.open("POST", url, true);
      REQ.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
      REQ.send(postParam);
    }
	
	/***********************************************************
		ÇÔ¼ö¸í		:processReqHandler()
		Ã³¸®³»¿ë		:¸®½ºÆ® ÇÚµé·¯ ÇÔ¼ö
	***********************************************************/
	// handle onreadystatechange event of req object
	function processReqHandler() {
		// only if req shows "loaded"
		if (REQ.readyState == 4) {
			// only if "OK"
			if (REQ.status == 200) {
				doRun(action, REQ);  //Á¤»óÀÏ°æ¿ì doRun()½ÇÇà
			} else {
				alert("There was a problem retrieving the XML data:\n" +REQ.statusText);
			}
		} else {
			doRuning(action);//ÄÝ¹é Áß¿¡ º¸¿©Áö´Â ·ÎÁ÷
		}
	}
}