﻿function myAjax()
{
}

  myAjax.prototype.runAjax = this.runAjax;

 function createAJAX(){
   if (window.ActiveXObject) {
     try
      {
         return new ActiveXObject('Msxml2.XMLHTTP');
      } catch(e) {
        try {
              return new ActiveXObject('Micorsoft.XMLHTTP');
        } catch(e2) {
              return null;
        }
      }
     } else if (window.XMLHttpRequest) {
             return new XMLHttpRequest();
    } else { return null; }
 }


 function hiddenLoading() {
     if (document.getElementById('loading') != null) {
         document.getElementById('loading').style.display = 'none';
     }
 }

 function showLoading() {
     var obj = document.getElementById('loading');
     if (obj != null) {
         var h = obj.style.height.replace('px', '');
         var w = obj.style.width.replace('px', '');
         var bodyH = (document.documentElement.clientHeight > document.body.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight );
         var bodyW = (document.documentElement.clientWidth > document.body.clientWidth ? document.documentElement.clientWidth : document.body.clientWidth );

         //var bodyH = window.screen.availHeight;
         //var bodyW = window.screen.availWidth;

         obj.style.top = (bodyH - h) / 2 + document.documentElement.scrollTop + "px"; // px for FF
         obj.style.left = (bodyW - w) / 2 +  document.documentElement.scrollLeft +"px";
         obj.style.display = 'block';
     }
     
     
 }


 function onRcvData(http,receive,resultype,fun0,fun1)
 {
   try
    {
    	if (http.readyState==4) {
    	    if (http.status == 200) {  //-- status must be lowcase,otherwise occure error in FF
    	     hiddenLoading();
    	      switch(resultype)
    	      {
    	        case "alert" :    if (http.responseText !="")  alert(http.responseText);  eval(fun0); break;
    	        case "value" : document.getElementById(receive).value = http.responseText;  eval(fun0); break; 
    	        case "code" :   var ret = eval(http.responseText); if(ret) { eval(fun0);} else { eval(fun1); } break;
    	        case "": eval(fun0); break;
    	        default:
    	            if (document.getElementById(receive) == null) { alert("can not found object"); }
    	            else { document.getElementById(receive).innerHTML = http.responseText; eval(fun0); }
    	            break;
    	      }
    	   } else {
    	      alert("process failed error:"+http.status); //-- design time for debug
    	      //  window.location.reload();  //-- run time
    	   }
    	}
    }
    catch(e){}
  }

 function runAjax(target,method,param,receive,resultype,fun0,fun1)
 {
     var ajax = createAJAX();
     if (ajax == null) { alert("create Ajax failure ! "); return; }

     showLoading();
     ajax.open(method, target, true);
//------
    if  (method.toUpperCase() =="POST")
    {
		ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		ajax.setRequestHeader("Content-length", param.length);
		ajax.setRequestHeader("Connection", "close")
    }
//------
    ajax.onreadystatechange = function() { onRcvData(ajax, receive, resultype, fun0, fun1); }
    if (typeof (param) == "undefined") { ajax.send(); }
    else { ajax.send(param); }
 }


