﻿var AJAX_XML = 1;
var AJAX_TEXT = 2;
var AJAX_OBJECT;

// Ajax Class
function AJAX(url, callback_func, fail_func)
{
    this.ajax_http = newXMLHttpRequest();   // Ajax Object;

    if( this.ajax_http == null )
    {
	    window.status = "AJAX Not Supported!";
	    return;
    }
    
    this.url = url;
    this.callback_func = callback_func;
    this.fail_func = fail_func;
    this.Get = fnAjax_Get;
    this.Post = fnAjax_Post;
    this.resultType = AJAX_XML;    // 결과값처리 TEXT / XML

    AJAX_OBJECT = this;
}

// Ajax GET 호출
function fnAjax_Get()
{
    this.ajax_http.open("GET", this.url, true);
    this.ajax_http.onreadystatechange = fnAjax_onReadyStateChange;
    this.ajax_http.send("");
}

// Ajax POST 호출
function fnAjax_Post(varParam)
{
    this.ajax_http.open("POST", this.url, true);
    this.ajax_http.onreadystatechange = fnAjax_onReadyStateChange;
    this.ajax_http.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

    this.ajax_http.send(varParam);
}

// Ajax 호출후, 결과를 받을때 호출되는 함수.
function fnAjax_onReadyStateChange()
{
    if ( AJAX_OBJECT.ajax_http.readyState == 4 )
    {
	    if ( AJAX_OBJECT.ajax_http.status == 200 )
		    AJAX_OBJECT.callback_func( ( AJAX_OBJECT.resultType == AJAX_TEXT ? AJAX_OBJECT.ajax_http.responseText : AJAX_OBJECT.ajax_http.responseXML ) );
	    else
	    {
		    window.status = "Ajax Failed : " + AJAX_OBJECT.ajax_http.status;

		    // 실패시 호출하는 함수.
		    if( AJAX_OBJECT.fail_func != null && AJAX_OBJECT.fail_func != "" )
		    {
	            AJAX_OBJECT.fail_func();
	        }
		}
    }
}

// AJAX 객체 생성
function newXMLHttpRequest()
{
	var reqHttp;
	
	if (window.ActiveXObject)	// IE
	{
		try {
			reqHttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch(e) {
			try {
				reqHttp = new ActiveXObject("Microsoft.XMLHTTP");
			} catch(e1) {
				reqHttp = null;
			}
		}
	}
	else if ( window.XMLHttpRequest)	// Non IE
	{
		try {
			reqHttp = new XMLHttpRequest();
		} catch(e) {
			reqHttp = null;
		}
	}

	return reqHttp;
}

