
//************************** 
//   AJAX ±âº» ÇÁ·Î¼¼½º 
//**************************

var AJAX = {
     XmlHttp: null,
     create: function () {
           try {
                if (window.XMLHttpRequest) {
                     AJAX.XmlHttp = new XMLHttpRequest();
                     // ÀÏºÎÀÇ ¸ðÁú¶ó ¹öÀüÀ»Àº readyState property, onreadystate event
                     // ¸¦ Áö¿øÇÏÁö ¾ÊÀ¸¹Ç·Î. - from xmlextrs
                     if (this.XmlHttp.readyState == null) {
                           this.XmlHttp.readyState = 1;
                           this.XmlHttp.addEventListener("load", function () {
                                this.XmlHttp.readyState = 4;
                                if (typeof this.XmlHttp.onreadystatechange == "function")
                                     tmpXmlHtp.onreadystatechange();
                           }, false);
                     }
                } else {
                     AJAX.XmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
                }
           }
           catch (e) {
                alert("Your browser does not support XmlHttp objects");
                //throw new Error("Your browser does not support XmlHttp objects");
           }

     }
}

AJAX.openXML = function (method, url, async, uname, pswd) {
     if (AJAX.XmlHttp != null) {
           if (uname == undefined) {
                AJAX.XmlHttp.open(method, url, async, uname, pswd);
           } else {
                AJAX.XmlHttp.open(method, url, async);
           }
           AJAX.XmlHttp.onreadystatechange = function () {
                if (AJAX.XmlHttp.readyState == 4) {
                     if (AJAX.XmlHttp.status == 200) { // 200 Àº HTTP¿¡¼­ ¼º°ø i.e) 404 : not found
                           AJAX.statusSuccessHandler(AJAX.XmlHttp.responseXML.xml);
                     } else {
                           AJAX.statusErrorHandler();
                           alert('Error while loading!');
                     }
                }
           }
     } else {
           alert ("need to create xmlhttp object");
     }
}

AJAX.openText = function (method, url, async) {
     if (AJAX.XmlHttp != null) {
           AJAX.XmlHttp.open(method, url, async);

           AJAX.XmlHttp.onreadystatechange = function () {
                if (AJAX.XmlHttp.readyState == 4) {
                     if (AJAX.XmlHttp.status == 200) { // 200 Àº HTTP¿¡¼­ ¼º°ø i.e) 404 : not found
                           AJAX.statusSuccessHandler(AJAX.XmlHttp.responseText);
                     } else {
                           AJAX.statusErrorHandler();
                           alert('Error while loading!');
                     }
                }
           }
     } else {
           alert ("need to create xmlhttp object");
     }
}

AJAX.send = function (content) {
           if (content == undefined)
                AJAX.XmlHttp.send(null);
           else
                AJAX.XmlHttp.send(content);
}

AJAX.setOnReadyStateChange = function (funcname) {
           if (AJAX.XmlHttp) {
                AJAX.XmlHttp.onreadystatechange = funcname;
           } else {
                alert ("need to create xmlhttp object");
           }
}

// status 200 ÀÏ ¶§ Ã³¸® ÇÔ¼ö
AJAX.statusSuccessHandler = function (data) {
           alert(data);
}

AJAX.setStatusSuccessHandler = function (funcname) {
           AJAX.statusSuccessHandler = funcname;
}

     // status 200 ÀÏ ¶§ ±âº» Ã³¸® ÇÔ¼ö
     // setStatusSuccessHandler() ·Î ´ëÃ¼ °¡´É
AJAX.statusErrorHandler = function (status) {
           AJAX.rtnText = AJAX.XmlHttp.responseText;
}

AJAX.setStatusSuccessHandler = function (funcname) {
           AJAX.statusSuccessHandler = funcname
}

AJAX.setStatusErrorHandler = function (funcname) {
           AJAX.statusErrorHandler = funcname
}

AJAX.setRequestHeader = function (label, value)
{
     AJAX.XmlHttp.setRequestHeader(label, value);
}


AJAX.formData2QueryString = function (frm) {

  var submitContent = '';
  var formElem;
  var lastElemName = '';

  for (i = 0; i < frm.elements.length; i++) {

    formElem = frm.elements[i];
    switch (formElem.type) {
      // Text fields, hidden form elements
      case 'text':
      case 'hidden':
      case 'password':
      case 'textarea':
      case 'select-one':
        submitContent += formElem.name + '=' + escape(formElem.value) + '&'
        break;

      // Radio buttons
      case 'radio':
        if (formElem.checked) {
          submitContent += formElem.name + '=' + escape(formElem.value) + '&'
        }
        break;

      // Checkboxes
      case 'checkbox':
        if (formElem.checked) {
          // Continuing multiple, same-name checkboxes
          if (formElem.name == lastElemName) {
            // Strip of end ampersand if there is one
            if (submitContent.lastIndexOf('&') == submitContent.length-1) {
              submitContent = submitContent.substr(0, submitContent.length - 1);
            }
            // Append value as comma-delimited string
            submitContent += ',' + escape(formElem.value);
          }
          else {
            submitContent += formElem.name + '=' + escape(formElem.value);
          }
          submitContent += '&';
          lastElemName = formElem.name;
        }
        break;

    }
  }
  // Remove trailing separator
  submitContent = submitContent.substr(0, submitContent.length - 1);

 	return submitContent;
}
