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)
{
    var return_txt;
    var xmlhttp = getXmlHttpRequest();
    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;
                else if(obj_name)
                {
                    if(eval("typeof("+obj_name+")") == "function")
                        eval(obj_name+"(xmlhttp);");
                }
                
                if(typeof(AjaxOnSuccess) == "function")
                    AjaxOnSuccess(xmlhttp);
            }
            else if(xmlhttp.status == 404)
            {
                alert("[Ajax]\n\nFile not found : "+url);
                
                if(typeof(AjaxError404) == "function")
                    AjaxError404(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);
    
    try
    {
        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;
        }
    }
    catch(e) { }
    
    return "";
}

// 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);
    }
}