function getXmlHttpRequest()
{
   if(window.XMLHttpRequest)
   {
       return new XMLHttpRequest();
   }
   else if(window.ActiveXObject)
   {
       try {
           return new ActiveXObject("Msxml2XMLHTTP");
       } catch(e) {
           return new ActiveXObject("Microsoft.XMLHTTP");
       }
   }
}

function AjaxTxt(url, data, obj_name, debug)
{
    var return_txt;
    var xmlhttp = getXmlHttpRequest();
    eval("var obj = document.getElementById('" + obj_name + "');");

    xmlhttp.open("POST", url, true);
    xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=euc-kr');

    xmlhttp.onreadystatechange = function()
    {
        if(xmlhttp.readyState == 4)
        {
            if(xmlhttp.status == 200)
            {
                if(obj)
                {
                    obj.innerHTML = xmlhttp.responseText;
                    obj.style.visibility = "visible";
                }
                else if(obj_name)
                {
                    if(eval("typeof("+obj_name+")") == "function")
                        eval(obj_name+"(xmlhttp);");
                }
            }
            else if(xmlhttp.status == 404)
            {
                alert("[Ajax]\n\nFile not found : "+url);
            }
        }
    }

    xmlhttp.send(data);
}
function get_ajax_node_value(xmlhttp, node_name)
{
    var value = "";
    var obj;

    // xmlhttp를 보내거나
    if(xmlhttp.responseXML)
        obj = xmlhttp.responseXML.getElementsByTagName(node_name);
    else // xmlhttp.responseXML.getElementsByTagName('tag').item(0) 를 보내거나
        obj = xmlhttp.getElementsByTagName(node_name);

    if(typeof(obj.length) == 'number')
    {
        if(obj.length < 1)
            return value;

        if(obj.length == 1)
            return obj.item(0).firstChild.nodeValue;

        value = new Array();
        for(i=0; i<obj.length; i++)
        {
            value[i] = obj.item(i).firstChild.nodeValue;
        }

        return value;
    }
}

// value.length가 배열인지 string인지 한번 다시 체크해서 사용해야 하는 불편함 때문에
// value.length, value.value 방식으로 변경함.
// value.length = 0 >> NULL or not found node
// value.length = 1 >> 1 record , value.value is value
// value.length > 1 >> N records, value[idx].value is value
function get_ajax_node_values(xmlhttp, node_name)
{
    var value = new Array();
    var obj;

    value.length = 0;

    // xmlhttp를 보내거나
    if(xmlhttp.responseXML)
        obj = xmlhttp.responseXML.getElementsByTagName(node_name);
    else // xmlhttp.responseXML.getElementsByTagName('tag').item(0) 를 보내거나
        obj = xmlhttp.getElementsByTagName(node_name);

    try
    {
        if(typeof(obj.length) == 'number')
        {
            if(obj.length < 1)
                return value;

            if(obj.length == 1)
            {
                var value = new Array();
                value.length = 1;
                value.value = obj.item(0).firstChild.nodeValue;

                return value;
            }

            value = new Array();
            value.length = obj.length;
            for(i=0; i<obj.length; i++)
            {
                value[i] = new Array();
                value[i].value = obj.item(i).firstChild.nodeValue;
            }

            return value;
        }
    }
    catch(e) { }

    return value;
}
/*
ajax_callback Result XML 예:
<?
    Header("Content-type: text/xml; charset=utf-8");
    echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
?>
<response>
  <error><?=$error?></error>
  <message><![CDATA[<?=$msg?>]]></message>
  <script><![CDATA[self.location.href="review.php?cid=<?=$cid?>&page=1"]]></script>
</response>
*/
function ajax_callback(xmlhttp)
{
    var error, message, script;
    var element;
    if(!xmlhttp.responseXML)
        element = null;
    else
        element = xmlhttp.responseXML.documentElement || null;

    if(element == null)
    {
        alert("XML Parsing Error\nPlease, check the return XML\nXML document = {\n"+xmlhttp.responseText+"\n}");
        return;
    }

    if(xmlhttp.responseXML)
    {
        error = get_ajax_node_values(xmlhttp, 'error');
        message = get_ajax_node_values(xmlhttp, 'message');
        script = get_ajax_node_values(xmlhttp, 'script');
    }

    if(message.value && error.value == "1")
        alert(message.value);

    if(error.value == "0" && script.value)
    {
        eval(script.value);
    }
}
