/**//*
url-loading object and a request queue built on top of it
*/

/**//* namespacing object */
var net=new Object();

net.READY_STATE_UNINITIALIZED=0;
net.READY_STATE_LOADING=1;
net.READY_STATE_LOADED=2;
net.READY_STATE_INTERACTIVE=3;
net.READY_STATE_COMPLETE=4;


/**//*--- content loader object for cross-browser requests ---*/
net.ContentLoader=function(url,onload,onerror,method,params,contentType){
  this.req=null;
  this.onload=onload;
  this.onerror=(onerror) ? onerror : this.defaultError;
  this.loadXMLDoc(url,method,params,contentType);
}

net.ContentLoader.prototype.loadXMLDoc=function(url,method,params,contentType){
  if (!method){
    method="GET";
  }
  if (!contentType && method=="POST"){
     contentType='application/x-www-form-urlencoded;charset=GBK';
	//contentType='application/x-www-form-urlencoded';
  }
  try {
	  this.req = new ActiveXObject("Msxml2.XMLHTTP");
  }
  catch(e0){
	  try{
		  this.req = new ActiveXObject("Microsoft.XMLHTTP");
	  }
	  catch (e1){
	  }
  }
  if (!this.req && typeof XMLHttpRequest != 'undefined') { 
	  this.req = new XMLHttpRequest(); 
  } 
  if (this.req){
    try{
      var loader=this;
      this.req.onreadystatechange=function(){
        net.ContentLoader.onReadyState.call(loader);
      }
      this.req.open(method,url,false);
      if (contentType){
        this.req.setRequestHeader('Content-Type', contentType);
      }
      this.req.send(params);
    }catch (err){
      this.onerror.call(this);
    }
  }
}


net.ContentLoader.onReadyState=function(){
  var req=this.req;
  var ready=req.readyState;
  if (ready==net.READY_STATE_COMPLETE){
    var httpStatus=req.status;
    if (httpStatus==200 || httpStatus==0){
      this.onload.call(this);
    }else{
      this.onerror.call(this);
    }
  }
}

net.ContentLoader.prototype.defaultError=function(){
	alert("error fetching data!"
    +"\n\nreadyState:"+this.req.readyState
    +"\nstatus: "+this.req.status
    +"\nheaders: "+this.req.getAllResponseHeaders());
}

var fillDropDownToSelect=function(selectElement,entry){
	return function () { 
		if(selectElement==null)selectElement='selectElement';
		if(entry==null)entry='entry';
	    var xmlDoc = this.req.responseXML.documentElement;
	    var xSel = xmlDoc.getElementsByTagName(selectElement)[0];
		var strFName = xSel.childNodes[0].firstChild.nodeValue;
		var strEName = xSel.childNodes[1].firstChild.nodeValue; 
		var objDDL = document.forms[strFName].elements[strEName];
		objDDL.options.length = 0;
		var xRows = xmlDoc.getElementsByTagName(entry);
	    for(i=0;i<xRows.length;i++){
			var theText = xRows[i].childNodes[0].firstChild.nodeValue;
			var theValue = xRows[i].childNodes[1].firstChild.nodeValue;
			var option = new Option(theText,theValue);
			objDDL.options.add(option,objDDL.options.length);
		}
	}                                                     
}     

/****************************************************************
//下面是针对select更新的类的xml构件方式
****************************************************************/
/*
		response.setContentType("text/xml; charset=UTF-8");
        PrintWriter out = response.getWriter();
        String strQuery = request.getParameter("q");
        String strForm = request.getParameter("f");
        String strElem = request.getParameter("e");
        String strSql = "select * from Territories where regionid=" + strQuery;
        Connection connection = null;
        PreparedStatement pstm = null;
        ResultSet rs = null;
        try {
            Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
            connection = DriverManager.getConnection(
                            "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=ajax",
                            "", "");
            pstm = connection.prepareStatement("select * from Territories where regionid=" + strQuery);
			rs = pstm.executeQuery();
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        StringBuffer strXML = new StringBuffer();
        strXML.append("<?xml version=\"1.0\" ?>");
        strXML.append("<selectChoice>");
        strXML.append("<selectElement>");
        strXML.append("<formName>" + strForm + "</formName>");
        strXML.append("<formElem>" + strElem + "</formElem>");
        strXML.append("</selectElement>");
        try {
            if (!rs.wasNull()) {
                strXML.append("<entry>");
                strXML.append("<optionText>Select A Territory</optionText>");
                strXML.append("<optionValue>-1</optionValue>");
                strXML.append("</entry>");
                while (rs.next()) {
                    strXML.append("<entry>");
                    strXML.append("<optionText>" + rs.getString("TerritoryDc") + "</optionText>");
                    strXML.append("<optionValue>" + rs.getInt("TerritoryID") + "</optionValue>");
                    strXML.append("</entry>");
                }
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        strXML.append("</selectChoice>");
        out.write(strXML.toString());
        out.close();
*/

/****************************************************************
//下面是未采用net.js封装的xmlhttp应用;如果用到xmlhttp的地方较多采用net.js较好
****************************************************************/
/*
function InitAjax()
{
　var ajax=false; 
　try { 
　　ajax = new ActiveXObject("Msxml2.XMLHTTP"); 
　} catch (e) { 
　　try { 
　　　ajax = new ActiveXObject("Microsoft.XMLHTTP"); 
　　} catch (E) { 
　　　ajax = false; 
　　} 
　}
　if (!ajax && typeof XMLHttpRequest!='undefined') { 
　　ajax = new XMLHttpRequest(); 
　} 
　return ajax;
} 
function postmessage(thisform)
{
	//return true;
	
　//获取接受返回信息层
　//var msg = $("msg");

　//获取表单对象和用户信息值

　//接收表单的URL地址
	var url=thisform.action;

    
　//需要POST的值，把每个变量都通过&来联接
var params="";    
    for(var i=0;i<thisform.elements.length;i++){//encodeURIComponent
     params+=(thisform.elements[i].name+"="+encodeURIComponent(thisform.elements[i].value.trim()));	
     if(i!=(thisform.elements.length-1))params+="&";
    }  

　//实例化Ajax
　var ajax = InitAjax();
　
　//通过Post方式打开连接
　ajax.open("POST", url, true); 

　//定义传输的文件HTTP头信息
　ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=GBK"); 

　//发送POST数据
  params=(params);
　ajax.send(params);

　//获取执行状态
　ajax.onreadystatechange = function() { 
　　//如果执行状态成功，那么就把返回信息写到指定的层里
　　if (ajax.readyState == 4 && ajax.status == 200) { 
　　　alert(ajax.responseText); 
　　} 
　} 
  return false;
} 
*/