function createHttpRequest()
{

 if(window.ActiveXObject) {
   //Win e4,e5,e6용
  
 try {
   return new ActiveXObject("Msxml2.XMLHTTP");
      } catch (e) { // 위 부분이 실패하게 되면
      try {  // 여기로 넘어옵니다..
  return new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e2) { // 이마저도 실패되면 아무값도 리턴하지 않습니다..
     return null;
   }
 }
      }
      else if(window.XMLHttpRequest) { //그밖에 브라우저
 // Win Max Linux m1,f1,o8,Mac s1 Linux k3 용

 return new XMLHttpRequest();
      }
      else {
 return null;
      }
}

function sendRequest(form,data,method,url,async,sload,user,password)
{

//callback 인자는 전송후 전달받은 값이 있을경우 처리할 곳을 의미합니다..

//data 는 전달시 필요한 데이터가 있으면 붙여주는곳이며

//method 는 POST 또는 GET 방식중 선택합니다..

//url 은 전송할 주소를 지정하는 곳이며

//async 비동기식이면 true 동기라면 false 로 지정합니다..

//sload 는 수퍼로드로 강제로드(true) 혹은 생략 false 로 사용할수 있습니다.

//user 와 password 는 인증페이지인경우 전달하여 접근하도록 하는 인자입니다..

 

 //XMLHttpRequest 오브젝트 생성

 var oj = createHttpRequest();
 if( oj == null ) return null;

 //강제 로드의 설정

 var sload = (!!sendRequest.arguments[5])? sload:false;
 if(sload || method.toUpperCase() == 'GET')
 {
	 if(user!='request'&&sload!='get')	 url += "?"; // 메소드가 GET 이면 주소에 ?를 붙여주어 data 값을 전달하도록 합니다..
 }
// if(sload) url = url+"t="+(new Date()).getTime();
if(form) url = url+data+form;

oj.onreadystatechange = function ()
  { // 전달된 값이 존재하면 콜백함수로 넘겨줍니다...
   if ( oj.readyState == 4 ){ // 이부분은 상태가 전송완료인경우에 해당됩니다..
   if(user=='alert') DataAlert(oj);
   else if(form=='request') DataRequest(oj,user);
   else DataReturn(oj,user);
   }
  }
 
 // URL 인코딩

 data = uriEncode(data); // 넘겨주는 data 값에 한글이 있을수 있으므로 utf-8 형식으로 포멧합니다..
 if(method.toUpperCase() == 'GET') {
  url += data;
 }
 oj.open(method,url,async,user,password); //전송합니다..

 //해더 application/x-www-form-urlencoded 설정

 setEncHeader(oj); //헤더 설정하는 부분으로 케릭터셋도 함께 설정됩니다..

 
 //send 메소드

 oj.send(data); //전송할 data 값이 있으면 전송합니다..

//alert(url);

 //URI 인코딩 헤더 설정

 function setEncHeader(oj) {


  var contentTypeUrlenc = 'application/x-www-form-urlencoded; charset=UTF-8';

  if(!window.opera) {
   oj.setRequestHeader('Content-Type',contentTypeUrlenc);
  } else {
   if((typeof oj.setRequestHeader) == 'function')
    oj.setRequestHeader('Content-Type',contentTypeUrlenc);
  }
  return oj;
 }


 //URL 인코딩


 function uriEncode(data) {

  if(data!= "") {
   //&와 = 로 일단 분해해서 encode
 
   var encdata = '';
   var datas = data.split('&');
   for(i=1;i<datas.length;i++) {
    var dataq = datas[i].split('=');
    encdata += '&'+encodeURIComponent(dataq[0])+'='+encodeURIComponent(dataq[1]);
   }
  } else {
   encdata = "";
  }
  return encdata;

 }
  return oj;

}
function DataAlert(oj) {
       
	var res = oj.responseText;
    alert(res);
}  

function DataReturn(oj,divname) {
       
	var res = oj.responseText;
    divname.innerHTML = res;
}  

function DataRequest(oj,layername) {
	var res = oj.responseText;
	layername.value = res;
	
    return res;
}