﻿var requests = new Array();
var requestsnum = 0;

var HttpRequest = function()
{
	var request = null;
	if(window.XMLHttpRequest)
	{ 
		request = new XMLHttpRequest();
		if (request.overrideMimeType)   //fire
		{
			request.overrideMimeType("text/xml");
		}
	}
	else
	{  
	    var MSXML = ["Msxml2.XMLHTTP","Microsoft.XMLHTTP"];
        for(var n = 0; n < MSXML.length; n ++)
        {
            try
            {
                request = new ActiveXObject(MSXML[n]);        
                break;
            }
            catch(e)
            {
            }
        }
	}	
	if (!request) { 
		window.alert("不能创建XMLHttpRequest对象实例.");
		return null;
	}
	return request;
}

function request_stop()
{
	for(var i=0; i<requests.length; i++)
	{
		if(requests[i] != null)
			requests[i].obj.abort();
	}
}

function create_request(context)
{
     requestsnum++;
    var ii = requestsnum%20;
  	var pos = requests.length;
  	if(requestsnum<=20||pos<20)
  	{
  	   requests[pos] = Object();
	   requests[pos].obj = new HttpRequest();
	   requests[pos].context = context;
	   return requests[pos];
  	}
  	else
  	{ 
  	    requests[ii].obj = null;
	    requests[ii].obj = new HttpRequest();
  	    requests[ii].context = context;
  	    return requests[ii];
  	}
}

function send_request(method,url,data,callback,context)
{
	var request = create_request(context);
	var async = typeof(callback) == 'function';
	if(async) request.obj.onreadystatechange = function()
	{
		if(request.obj.readyState == 4)
			callback(new response(request));
	}
	if (url.indexOf("?") > 0)
    {
        url += "&randnum=" + Math.random();
    }
    else
    {
        url += "?randnum=" + Math.random();
    }
	request.obj.open(method, url, true);
	request.obj.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	request.obj.setRequestHeader("CharSet","gb2312");
	request.obj.send(data);
	if(!async)
		return new response(request);
}

function response(request)
{
	this.request = request.obj;
	this.error = null;
	this.value = null;
	this.context = request.context;
	
	if(request.obj.status == 200)
	{
		try
		{
		    
			this.value = returnValue(request);
			
			if(this.value && this.value.error)
			{
				this.error = this.value.error;
				this.value = null;
			}
		}
		catch(e)
		{
			this.error = new request_error(e.name, e.description, e.number);
		}
	}
	else
	{
		this.error = new request_error('HTTP request failed with status: ' + request.obj.status, request.obj.status);
	}
	return this;
}

function enc(s)
{
	return s.ToString().Trim().replace(/\%/g, "%26").replace(/=/g, "%3D");
}

function returnValue(request)
{
	if(request.obj.responseXML != null && request.obj.responseXML.xml != null && request.obj.responseXML.xml != '')
		return request.obj.responseXML;
	else
	return request.obj.responseText;

}

function request_error(name, description, number)
{
	this.name = name;
	this.description = description;
	this.number = number;
	return this;
}

request_error.prototype.toString = function()
{
	return this.name + " " + this.description;
}


function KillError() 
{ 
     return false; 
} 
window.onerror=KillError; 

function InitXDom(value){//xml解析
  var obj = null;
  if (typeof(DOMParser) != "undefined") { // Gecko、Mozilla、Firefox
    var parser = new DOMParser();
    obj = parser.parseFromString(value, "text/xml");
  } else { // IE
    try { obj = new ActiveXObject("MSXML2.DOMDocument");} catch (e) { }
    if (obj == null) try { obj = new ActiveXObject("Microsoft.XMLDOM"); } catch (e) { }
    obj.loadXML(value)
  }
  return obj;
};
//信息提示框
function infoWindow(cmd)
{
   var content="";
    //下载等待框
   var infoWairequestst = "";
   var waitHtm = '<marquee style="border:1px solid #000000" direction="right" width="100" scrollamount="5" scrolldelay="10" bgcolor="#ECF2FF">'
               + '<table cellspacing="1" cellpadding="0"><tr height=8><td bgcolor=#3399FF width=8></td><td></td><td bgcolor=#3399FF width=8></td>'
               + '<td></td><td bgcolor=#3399FF width=8></td><td></td><td bgcolor=#3399FF width=8></td><td></td></tr></table></marquee>'
   var waitDiv = document.getElementById("waitDiv");
   if(waitDiv == null)
    {
        //waitDiv = document.createElement('<div id="waitDiv" name="waitDiv" style="DISPLAY:none;Z-INDEX:20;POSITION:absolute"></div>');
        
        var waitDiv=document.createElement("div");
        waitDiv.id="waitDiv";
         //divContent.style.left="0px";
         //divContent.style.top="0px"; 
         waitDiv.style.position="absolute";
         //divContent.style.overflow="hidden";
         waitDiv.style.display="none";

         //divContent.style.width="100%";
         //divContent.style.height="100%";

        document.body.appendChild(waitDiv);
    }
   switch(cmd)
   {
        case "wait":
            infoWait = "数据查询中.请耐心等待...";
            content = infoWait + waitHtm;
            break;
        case "close":
	        waitDiv.innerHTML = "";
	        waitDiv.style.display = "none"; 
	        isStopOperation = false;
            return;
        case "creatLin":
            infoWait = "道路网信息生成中.请耐心等待...";
            content = infoWait + waitHtm;
            break;
        default:
            content = cmd;
            break;
   }
    var htm = '<table border="0" width="160" cellspacing="0" cellpadding="4" style="border-collapse:collapse" bgcolor="#FFFFEC" height="87" >'
        + '<tr height=0><td bgcolor="#3399FF"  align=left width="80" style="font-size:12px;color:#ffffff;" style="margin-top:0">提示'
        + '</td><td bgcolor="#3399FF" align=right><img src="image/close.jpg" width=15 height=15 onclick="closeDiv()" >'
        + '</td></tr><tr height=70><td style="font-size:12px;line-height:200%" align=center colspan=2>'
        + content
        + '</td></tr></table>';
	waitDiv.style.left = parseInt(document.body.clientWidth/2)+100;
	waitDiv.style.top =  parseInt(document.body.clientHeight/2)-10;
	waitDiv.innerHTML = htm;
	waitDiv.style.display = "block";
	isStopOperation = true;              
}
