﻿
/*
* 
*  版本号 0.9B01 
*  最后修改日期 2007-03-05
*  作者 梁逸晨 kvspas@gmail.com
*
*  该程序是ajax访问类,提供了四种办法访问办法: 1-同步获取字符串 2-同步获取XML 3-异步获取字符串  4-异步获取XML
*  该程序配套有服务端代理文件,用于访问异域的数据.
*
*
*
*  程序可以任意修改,传播和散布,但请保留以上信息,这些注释信息并不会影响程序的执行效率.
*/

var ajaxCreate = function(){
	
	var xmldoc = null;
	
    if(window.XMLHttpRequest){
        xmldoc = new XMLHttpRequest();
        if(xmldoc.overrideMimeType){
	
                xmldoc.overrideMimeType("text/xml");
        }

    }else if(window.ActiveXObject){
		try{
        	xmldoc = new ActiveXObject("Msxml5.XMLHTTP");
        	}catch(e){
        	try{
            	xmldoc = new ActiveXObject("Msxml4.XMLHTTP");
        	}catch(e){
            	try{
                	xmldoc = new ActiveXObject("Msxml3.XMLHTTP");
            	}catch(e){
                	try{
                    	xmldoc = new ActiveXObject("Msxml2.XMLHTTP");
                	}catch(e){
                    	try{
                        	xmldoc = new ActiveXObject("Microsoft.XMLHTTP");
                    	}catch(e){}
                	}
            	}
        	}
    	}
	}
	return xmldoc || false;
}

var gineGrid = function(){
	
	this.ajaxGLOBAL = null;
	}

gineGrid.prototype.eAT = function(i,u,P){

		this.eAA(i,u,"Text",true,P);
}

gineGrid.prototype.eAX = function(i,u,P){
	
		this.eAA(i,u,"XML",true,P);
}

gineGrid.prototype.ajaxT = function(u,P){

		return this.eAA({},u,"Text",false,P).responseText;
}

gineGrid.prototype.ajaxX = function(u,P){
	
		return this.eAA({},u,"XML",false,P).responseXML;
}

gineGrid.prototype.eAA = function(it,u,rt,asy,sv){
     
    var st  = "GET";
    var s = "";
    
    if(sv)
    { 
     	s  = sv ;
     	st  = "POST";
    	
    	}
    
    var eA = ajaxCreate();
    
    eA.onreadystatechange = function(){

        if(eA.readyState==4){
         	
			//可以在这里添加更多的状态码判断信息,一般没有这个必要.会加大运算量.
			
            if (eA.status == 200) {
             	
                if(rt=="Text"){o(eA.responseText);}
                else if(rt=="XML"){o(eA.responseXML);}
            } 
            
        }

    }
    
    var o = function(v){
    
        this.ajaxGLOBAL = v;
    
        if(typeof(it)=="function"){ it.call();}
        else
        {it = v;}
   
    }
    
    if(u.indexOf('?') > -1){ u+="&rd=";}

    else{u+="?rd=";}
     	
    u += Math.round(Math.random()*10000)*Math.round(Math.random()*10000) ;

    if(u.indexOf("http://")> -1)
    { 
     	
			var ss = ajaxCreate(); 
			ss.open("GET","ginegrid.xml",false);
			ss.send(null);
			var serverType = ss.responseXML.documentElement.getElementsByTagName("server").item(0).firstChild.nodeValue;
			
			
    	u = "remotehtml"+serverType+"?url="+u.replace("http://","");
    }
   
			eA.open(st,u,asy); 
			eA.setRequestHeader("content-length",s.length); 
			eA.setRequestHeader("content-type","application/x-www-form-urlencoded");
			
			eA.send(s);
			
        return eA ;
  }

