/****
 2008-4-24

**/
    var http_request = false;
    var AJAX=new Object();
	
	AJAX.init=function(){
	  this.data="";
	  this.num=0;
	  this.nown=0;
	  this.stream=0;
	  this.state=0;
	  this.callback=null;
	  this.basedir="";
	  this.Aurl=new Array();
	  this.Acallback=new Array();
	  this.method=new Array();
	  this.param=new Array();
	};
	AJAX.init();
	
	/************
	AJAX 排程
	************/
	AJAX.addFlow=function(url ,callback,param,me){
		this.num++;
		this.Aurl[this.num]=url;
		this.Acallback[this.num]=callback;
		this.method[this.num]=me;	
		this.param[this.num]=param;		
		if(this.num==1){ 
			this.nown=1;
			this.start(1);
		}
	}

	AJAX.start=function(n){
		var i=this.method[n];
		if(i==1){
			window.makeRequest(this.Aurl[n]);
		}else if(i==2){
			window.getLocal(this.Aurl[n]);
		}
		else if(i==3){
			window.postLocal(this.Aurl[n],this.param[n]);
		}
		else if(i==4){
			window.makeRequestPost(this.Aurl[n],this.param[n]);
		}
	}
	AJAX.getData=function(){
	  var k=this.data;
	  this.data="";	  
	  return k;
	};
	AJAX.getState=function(){
	  return this.state;
	};
	AJAX.setData=function(data1){
	  this.data=data1;
	};
	AJAX.setState=function(s){
	  this.state=s;
	};
	AJAX.complete=function(data){
	   this.Acallback[this.nown](data);
	   this.nown++;
	   if(this.nown>this.num){
		this.num=0;this.nown=0;
	   }else{
	    this.start(this.nown);
		
	   }
	};
	
	AJAX.getLocal=function(url,callback){
	 this.addFlow(url,callback,"",2);
	
	};
	AJAX.postLocal=function(url,param,callback){
		this.addFlow(url,callback,param,3);
	
	};

	with(AJAX){
	  data="nothing";
	  state=0;//1資料下載完成  0未完成
	}
   /*********local************/	
   function getLocal(url) {
        http_request = false;
        if (window.XMLHttpRequest) { // Mozilla, Safari,...
            http_request = new XMLHttpRequest();
            if (http_request.overrideMimeType) {
                //http_request.overrideMimeType('text/xml');
            }
        } else if (window.ActiveXObject) { // IE
            try {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
				
            } catch (e) {
                try {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
        }
        if (!http_request) {
            alert('Giving up :( Cannot create an XMLHTTP instance');
            return false;
        }
        	var re=/\?/i;
        	var t=url.search(re);
        	if(t!=-1){
        		var c=url.substr(t+1,url.length);
        		c=escape(c);
        		var re=/%3D/g;
        		c=c.replace(re,"=");
        		var re=/%26/g;
        		c=c.replace(re,"&");
        		url=url.substr(0,t+1)+c;
        	}
        	
                // url=escape(url);alert(url);
		 http_request.onreadystatechange =alertContents;
		http_request.open('GET',url, true);
		http_request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    	        http_request.send(null);

    }
	function postLocal(url,param) {
        http_request = false;
        if (window.XMLHttpRequest) { // Mozilla, Safari,...
            http_request = new XMLHttpRequest();
            if (http_request.overrideMimeType) {
               // http_request.overrideMimeType('text/xml');
            }
        } else if (window.ActiveXObject) { // IE
            try {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
				
            } catch (e) {
                try {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
        }

        if (!http_request) {
            alert('Giving up :( Cannot create an XMLHTTP instance');
            return false;
        }
		
        http_request.onreadystatechange =alertContents;
		try{ 
		  
		   http_request.open('POST',url, true);
		}
		catch(e){alert(e);}
		param=encodeURIComponent(param);
		var re1=/%3D/ig;var re2=/%26/ig;
		param=param.replace(re1 , "=");
		param=param.replace(re2 , "&");
		http_request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
     	http_request.send(param);
     	      
    }	
  /*********dif domain**************/
    function makeRequest(url) {T_getDomain();
        http_request = false;
        if (window.XMLHttpRequest) { // Mozilla, Safari,...
            http_request = new XMLHttpRequest();
            if (http_request.overrideMimeType) {
             //   http_request.overrideMimeType('text/xml');
            }
        } else if (window.ActiveXObject) { // IE
            try {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
				
            } catch (e) {
                try {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
        }

        if (!http_request) {
            alert('Giving up :( Cannot create an XMLHTTP instance');
            return false;
        }
	    
        url=escape(url);
	//	alert(url);
		 http_request.onreadystatechange =alertContents;
		if(url.substring(0,4)=="http"){//相對與絕對路徑
			http_request.open('GET',"http://"+T_getDomain()+AJAX.basedir+"gethtml.php?url="+url, true);
		}else{
			http_request.open('GET',"http://"+T_getDomain()+AJAX.basedir+"gethtml.php?url="+T_getUrlRout()+url, true);
			
	    }
		http_request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
        http_request.send(null);
    }
	
  function makeRequestPost(url,param) {
        http_request = false;
        if (window.XMLHttpRequest) { // Mozilla, Safari,...
            http_request = new XMLHttpRequest();
            if (http_request.overrideMimeType) {
              //  http_request.overrideMimeType('text/xml');
            }
        } else if (window.ActiveXObject) { // IE
            try {
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
				
            } catch (e) {
                try {
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
        }

        if (!http_request) {
            alert('Giving up :( Cannot create an XMLHTTP instance');
            return false;
        }
		
        http_request.onreadystatechange =alertContents;
		try{ 
		  
		   http_request.open('POST',"http://"+T_getDomain()+AJAX.basedir+"posthtml.php", true);
           //http_request.open('POST',url, true);
		}
		catch(e){alert(e);}
	    if(url.substring(0,4)=="http"){//相對與絕對路徑
			param=url+"?"+param;
		}else{
		    param=T_getUrlRout()+url+"?"+param;
		}
		param="url="+encodeURIComponent(param);
		//param=escape(param);
	//	alert("http://"+T_getDomain()+AJAX.basedir+"posthtml.php"+"url="+escape(param));
		http_request.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
     	        http_request.send(param);
		//return AJAX.complete();
    }
	
    function alertContents() {

        if (http_request.readyState == 4) {
		  //alert(http_request.status);
            if (http_request.status == 0 || http_request.status == 200) {//200 上網的話
            //    alert(http_request.responseText);
				ht=http_request;
			//	alert(ht.responseText);
     			//AJAX.setState(1);
				AJAX.setData();
				AJAX.complete(unescape(ht.responseText));
            } else { 
				//alert('There was a problem with the request.');
				AJAX.complete();
               
            }
       }
	   else if(http_request.readyState == 3 && AJAX.stream==1){
       				ht=http_request;
       				AJAX.setData(unescape(ht.responseText));
       				//AJAX.complete();
		}
		else{
		
		}
    }
	
	function T_getDomain(){
		    s=window.location.href;
			var re="//";
			var t=s.search(re);
			s=s.substring(t+2,s.length);		
			t=s.search("[/ \]");
			s=s.substring(0,t);
			return s; 
		 
		 
	}
	
	function T_getUrlRout(){
		 s=window.location.href;
		 for(i=s.length;i>=0;i--){ 
			if(s.substring(i,i-1)=="\\" || s.substring(i,i-1)=="/"){
			s=s.substring(0,i);   
			var re=/localhost/;
			s=s.replace(re,"127.0.0.1");
			return s; }
		 }
		 
	}
