/*
Creator : Yeongmin Han
2007-10-16 MGame Ajax Framework
2008-04-22 Modify by Kim KiHyun
*/

// Create XMLHttpRequest Object
function AjaxCore_createXMLHttpRequest(){
	if (window.ActiveXObject) {
		//var aVersions = ['Msxml2.XMLHTTP.7.0', 'Msxml2.XMLHTTP.6.0','Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'];
		//error in japanese explorer ('Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0')
		var aVersions = ['Msxml2.XMLHTTP.7.0', 'Msxml2.XMLHTTP.6.0','MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'];

		for (var i=0; i<aVersions.length; i++) {
			try {
				var xmlHttp = new ActiveXObject(aVersions[i]); 
				return xmlHttp; 
			} catch(e) {}
		}
	}else if ( typeof(XMLHttpRequest) != 'undefined' ) {
		var xmlHttp = new XMLHttpRequest(); 
		return xmlHttp;
	}
	errorMessage();
	return false;
}

// Send AJAX Request
function AjaxCore_openSendStatus(method, uri, async, postdata, callbackFunction, callbackArguments){
	var xmlHttp = AjaxCore_createXMLHttpRequest();
	if (xmlHttp) {
		xmlHttp.onreadystatechange = function() {
			if (xmlHttp.readyState==4) {
				if (xmlHttp.status==200) {
					if (callbackFunction.constructor == Function) { callbackFunction(xmlHttp, callbackArguments); } 
					xmlHttp = null;
				}
			}
			return;
		}
		if(method.toLowerCase()=='get')
				uri = uri+'?'+postdata;
		xmlHttp.open(method.toLowerCase(), uri, async);

		if (method.toLowerCase()=='post') {
			xmlHttp.setRequestHeader('content-type', 'application/x-www-form-urlencoded');
			xmlHttp.send(postdata);
		}else xmlHttp.send(null);
		return true;
	}
	return false;
}

// Add Object Event
function AjaxCore_commAddListener(paramObject, paramType, paramFunction, paramFalse){
	if (!paramObject) return;
	if (paramObject.attachEvent) { 
		paramObject.attachEvent('on'+paramType, paramFunction); 
	}else if (paramObject.addEventListener) {
		if (!paramFalse) paramFalse=false;
		paramObject.addEventListener(paramType, paramFunction, paramFalse);
	}else{
		paramObject[paramType] = paramFunction;
	}
	return;
}

// Xpath implement for firefox
if ((!window.ActiveXObject)&&(typeof(XMLHttpRequest)!='undefined')) {
	Element.prototype.selectSingleNode = function (sXPath) {
		var oEvaluator = new XPathEvaluator();
		var oResult = oEvaluator.evaluate(sXPath, this, null, 
		XPathResult.FIRST_ORDERED_NODE_TYPE, null);
		return ( (oResult != null) ? oResult.singleNodeValue : null );
	}
}

function AjaxCore_errorHandler(){
	//do something.. alert("unable Browser, change to IE or FireFox or Opera..and so on");
}

function AjaxCore_exceptionControl(xmlHttp){
	//do something.. example. It's The fail between sever to client browser response transfer
}

