﻿var request = null;
var xmlDom = null;

/*
    构造一个XMLHttpRequest对象的封装
    参数：
    reqType：HTTP请求类型，例如get或者是post
    url：服务器端程序的url
    asynch：是否异步发送请求
*/

function httpRequest(reqType,url,asynch,respHandle)
{   
   ///<summary>构造一个XMLHttpRequest对象的封装<summary/>
   /// <returns type="http对象"/>
   ///<param name="requType" type="HTTP请求类型，例如get或者是post"/>
   ///<param name="url" type="服务器端程序的url"/>
   ///<param name="asynch" type="是否异步发送请求"/>

    if(window.XMLHttpRequest)
    {
        request = new XMLHttpRequest();
    }
    else if(window.ActiveXObject)
    {
        request = new ActiveXObject("Msxml2.XMLHTTP");
        if(!request)
        {
            request = new ActiveXObject("Microsoft.XMLHTTP");
        }
    }
    
    if(request)
    {
        if(reqType.toLowerCase() != "post")
        {
            initReq(reqType,url,asynch,respHandle);
        }
        else
        {
            var args = arguments[4];
            if(args != null && args.length > 0)
            {
                initReq(reqType,url,asynch,respHandle,args);
            }
        }
    }
    else
    {
        alert("抱歉，您的浏览器不支持该应用程序的全部功能");
    }

}

//初始化已经创建的request对象
function initReq(reqType,url,bool,respHandle)
{
    try
    {
        //指定处理HTTP响应的函数
        request.onreadystatechange = respHandle;
        request.open(reqType,url,bool);
        
        //如果reqType参数是post，那么函数的第五个参数是posted的数据
        if(reqType.toLowerCase() == "post")
        {
            request.setRequestHeader("Content-type",
                "application/x-www-form-urlencoded;charset=UTF-8");
            request.send(arguments[4]);     
        }
        else
        {
            request.send(null);
        }
    }
    catch(err)
    {
        alert("错误信息：\n" + err.message);
    }
}
//将表单构造成一个字符串的形式
function setQueryString()
{
    var frm = document.forms[0];
    var count = frm.elements.length;
    
    for(var i=0;i<count;i++)
    {
        if(i<count-1)
        {
            queryString += frm.elements[i].id + "=" +
            encodeURIComponent(frm.elements[i].value) + "&"; 
        }
        else
        {
            queryString += frm.elements[i].id + "=" +
            encodeURIComponent(frm.elements[i].value);
        }
    }
}


//创建客户端的XML DOM
function createXmlDom()
{ 
     if (!window.DOMParser  && window.ActiveXObject){
       var arrXmlDomTypes = ['MSXML2.DOMDocument.6.0','MSXML2.DOMDocument.3.0','Microsoft.XMLDOM'];
        for(var i = 0;i<arrXmlDomTypes.length;i++){
           try{
                 xmlDom = new ActiveXObject(arrXmlDomTypes[i]);
             }catch(ex){}//不支持MSXML.XMLDOM对象的IE
        }
     }else{// Mozilla browsers have a DOMParser
        try{
            if(xmlDom == null && document.implementation && document.implementation.createDocument){
                xmlDom = document.implementation.createDocument("","",null);

   Document.prototype.loadXML = function(sXml){
    var oParser= new DOMParser();
    var xmlDom = oParser.parseFromString(sXml, "text/xml");
        while(this.firstChild){
        this.removeChild(this.firstChild);
        }

            for(var i=0;i<xmlDom.childNodes.length;i++){
            var oNewNode = this.importNode(xmlDom.childNodes[i],true);
                this.appendChild(oNewNode);
        }
  
}


 Element.prototype.__defineGetter__("text",function(){ return this.textContent; });

Element.prototype.selectSingleNode=function(sXPath){
                    var oEvaluator = new XPathEvaluator();
                   var oResult = oEvaluator.evaluate(sXPath,this,null, XPathResult.FIRST_ORDERED_NODE_TYPE,null);
                    if(null != oResult){
                        return oResult.singleNodeValue;
                    }
                    return null;
                }
                
                Element.prototype.selectNodes = function(sXPath){
                    var oEvaluator = new XPathEvaluator();
                    var oResult = oEvaluator.evaluate(sXPath,this,null, XPathResult.ORDERED_NODE_ITERATOR_TYPE,null);
                    var aNodes = new Array();
                    if(null != oResult){
                        var oElement = oResult.iterateNext();
                        while(oElement){
                            aNodes.push(oElement);
                            oElement = oResult.iterateNext();
                        }
                    }
                    return aNodes;
                }
            }
            isIE = false;
        }
        catch (ex)
        {
            alert(ex);
        }
    }
}

function isFireFox()
{
///<summary>判断是否火狐浏览器</summary>
    var i=navigator.userAgent.toLowerCase().indexOf("firefox");
return i>=0;
}
