// µ¿ÀÛ °¡´ÉÇÑ ºê¶ó¿ìÀú ÆÇÁ¤
function chkAjaBrowser()
{
	var a, ua = navigator.userAgent;
	this.bw = {
		safari    : ((a=ua.split('AppleWebKit/')[1])?a.split('(')[0]:0)>=124,
		konqueror : ((a=ua.split('Konqueror/')[1])?a.split(';')[0]:0)>=3.3,
		mozes     : ((a=ua.split('Gecko/')[1])?a.split(" ")[0]:0)>=20011128,
		opera     : (!!window.opera) && ((typeof XMLHttpRequest) == 'function'),
		msie      : (!!window.ActiveXObject)?(!!createHttpRequest()):false
	}
	return (this.bw.safari||this.bw.konqueror||this.bw.mozes||this.bw.opera||this.bw.msie);
}

// XMLHttpRequest °´Ã¼ »ý¼º
function createHttpRequest()
{
	if (window.ActiveXObject) {
		try {	// Win e4, e5, e6¿ë
			return new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e) {
			try {
				return new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e2) {
				return null;
			}
		}
	}
	else if (window.XMLHttpRequest) {
		// ±âÅ¸ ºê¶ó¿ìÀú
		return new XMLHttpRequest();
	}
	else {
		return null;
	}
}

// ¼Û¼ö½Å ÇÔ¼ö
// @Param callback		¼Û¼ö½Å½Ã¿¡ ±âµ¿ÇÏ´Â ÄÝ¹éÇÔ¼ö
// @Param data			¼Û½ÅÇÏ´Â µ¥ÀÌÅÍ
// @Param method		"POST", "GET"
// @Param url			¿äÃ»ÇÏ´Â ÆÄÀÏÀÇ URL
// @Param async			ºñµ¿±â:true / µ¿±â:false
// @Param sload			¼öÆÛ·Îµå true·Î °­Á¦ »ý·« ¶Ç´Â false´Â ±âº»
// @Param user			ÀÎÁõ ÆäÀÌÁö¿ë »ç¿ëÀÚ ÀÌ¸§
// @Param password		ÀÎÁõ ÆäÀÌÁö¿ë ¾ÏÈ£
function sendRequest(callback, data, method, url, async, sload, user, password)
{
	// XMLHttpRequest °´Ã¼ »ý¼º
	var obj = createHttpRequest();
	if (obj == null) return null;
	
	// °­Á¦·ÎµåÀÇ ¼³Á¤
	var sload = (!!sendRequest.arguments[5]) ? sload:false;
	if (sload || method.toUpperCase() == 'GET') url += "?";
	if (sload) url = url + "t=" + (new Date()).getTime();
	
	// ºê¶ó¿ìÀú ÆÇÁ¤
	var bwoj      = new chkAjaBrowser();
	var opera     = bwoj.bw.opera;
	var safari    = bwoj.bw.dafari;
	var konqueror = bwoj.bw.konqueror;
	var mozes     = bwoj.bw.mozes;
	
	// ¼Û½ÅÃ³¸®
	if (opera || safari || mozes) {
		obj.onload = function() {callback(obj);}
	}
	else {
		obj.onreadystatechange = function() {
			if (obj.readyState == 4) {
				callback(obj);
			}
		}
	}
	
	if (method.toUpperCase() == "GET") {
		url += data;
	}
	
	// Open ¸Þ¼Òµå
	obj.open(method, url, async, user, password);
	
	setEncHeader(obj);
	
	// Send ¸Þ¼Òµå
	obj.send(data);
}

function setEncHeader(obj)
{
	var contentTypeUrlenc = 'application/x-www-form-urlencoded; charset=UTF-8';
	if (!window.opera) {
		obj.setRequestHeader('Content-Type',contentTypeUrlenc);
	} else {
		if ((typeof obj.setRequestHeader) == 'function')
			obj.setRequestHeader('Content-Type',contentTypeUrlenc);
	} 
	return obj;
}