
// XML
//load xml DOM

function xml_loadStr(xmlstr){
	 //alert("load xml:"+xmlUrl);
	var mobjXmlDom = new ActiveXObject("microsoft.xmldom");
	 /*var MSXML = ['MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP']; 
           for(var n = 0; n < MSXML.length; n ++) 
           { 
               try 
               { 
                   var mobjXmlDom = new ActiveXObject(MSXML[n]); 
                   break; 
               } 
               catch(e){} 
           }
	*/
		mobjXmlDom.async = false;
		if( !mobjXmlDom.loadXML(xmlstr) )	{			
			return null;			
		}
		//if(mobjXmlDom == null) alert("load xml: fail!");
		//alert("load xml: OK!");
		return mobjXmlDom;
}






function xml_loadXML(xmlUrl){
	 //alert("load xml:"+xmlUrl);
	 var mobjXmlDom = new ActiveXObject("microsoft.xmldom");
	 /*var MSXML = ['MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP']; 
           for(var n = 0; n < MSXML.length; n ++) 
           { 
               try 
               { 
                   var mobjXmlDom = new ActiveXObject(MSXML[n]); 
                   break; 
               } 
               catch(e){} 
           }
	*/
		mobjXmlDom.async = false;
	  //alert(mobjXmlDom+"~~~~~11111111~~~~"+xmlUrl);
		//mobjXmlDom.load(xmlUrl);
		///if(mobjXmlDom ==s null) alert("load xml: fail!");
		//alert("load xml: OK!");  
	if( !mobjXmlDom.load(xmlUrl) )	{	
			return null;			
		}
		/*this.NextStep = function(){
		
		
		if (mobjXmlDom.documentElement==null){ 
            return null;
   	     }
   	      return mobjXmlDom ;
			}
			
			//alert('1');
			//pause (this,5000);*/
		  return mobjXmlDom ;
			 
} 

 function pause(obj,iMinSecond){
  	
 	   if (window.eventList == null) window.eventList = new Array();
 	    var ind=-1;
 	     for (var i=0;i<window.eventList.length;i++){
 	     	   if (window.eventList[i]==null){
 	     	   	   window.eventList[i] = obj;
 	     	   	    ind = i;
 	     	   	     break;
 	     	   	}
 	     	} 
 	     	
 	    if (ind==-1){
 	    	  ind = window.eventList.length;
 	    	  window.eventList[ind]=obj; 	    	  
 	    	} 
 	    	
 	    setTimeout("GoOn("+ind+")",iMinSecond); 	     	
 	}


  function GoOn(ind){
  	   var obj = window.eventList[ind];
  	   window.eventList[ind]=null;
  	   if (obj.NextStep) obj.NextStep();
  	    else obj();
  	}


	


	 
//获取第一个子节点,节点名为name
function xml_getFirstNode(node1,name){
  if (node1 == null) return null;
   var childNodes = node1.childNodes;
   //alert("childNodes.length : "+ childNodes.length);
   for(var i=0 ;i<childNodes.length;i++){
   // alert("name : "+ childNodes[i].nodeName);
      if(childNodes[i].nodeName==name){
	   	   return childNodes[i];
	  }
   }
   return null;
}

//获取第一个子节点,节点属性code匹配
function xml_firstChildNodeCode(node1,code){
  if (node1 == null) return null;
   var childNodes = node1.childNodes;
   //alert("childNodes.length : "+ childNodes.length);
   for(var i=0 ;i<childNodes.length;i++){
   // alert("name : "+ childNodes[i].nodeName);
      if(childNodes[i].getAttribute("code")==code){
	   
	   return childNodes[i];
	  }
   }
   return null;
}

//获取名字为name的子节点的文本值
function xml_elementValue(node2){
  
  if(node2==null)  return null;
  var textnode = node2.firstChild;
  //alert(node2.nodeName +":"+ node2.nodeValue+":"+textnode.nodeValue);
  if(textnode==null) return "";
  return textnode.nodeValue;
}



//获取名字为name的子节点的文本值
function xml_childValue(node1,name){
  var node2 = xml_getFirstNode(node1,name);
  return xml_elementValue(node2);
}

//xmlhttp
function createFormNode(xmlDoc,form1){
   var formNode = xmlDoc.createElement("form");
   formNode.setAttribute("name",form1.name);
   xmlDoc.documentElement.appendChild(formNode);
   //加入元素
   var elements = form1.elements;
   for(var i=0;i<elements.length;i++){
	  // alert( elements[i].name + " : " + elements[i].type );
	  if( elements[i].disabled || elements[i].type == 'button' || elements[i].type == 'reset'){
		continue;  
	  }
	  if( (elements[i].type=="checkbox" || elements[i].type == "radio") && !elements[i].checked ){
		  continue;
	  }
	  
      var paramnode = xmlDoc.createElement("param");
	  paramnode.setAttribute("name",elements[i].name);
	  //attr不能保留回车,text能
	  //paramnode.setAttribute("value",elements[i].value);
	  paramnode.text = xml_getElementValue( elements[i] );
	  formNode.appendChild(paramnode);
   }
   //xmlDoc.appendChild(formNode);
}

function createDom(){
  var xmlDoc=new ActiveXObject("MSXML2.DOMDocument");
  var newNode = xmlDoc.createElement("root");
  xmlDoc.appendChild(newNode);
  return xmlDoc;
}

function postDom(xmlDoc,urlstr){

  //var xmlDoc = createDom();
  //createFormNode(xmlDoc,document.forms['dataform']);
  
  var xh =new ActiveXObject( "MSXML2.XMLHTTP")
  //同步false
  xh.open("POST",urlstr,false)
  xh.setRequestHeader("Content-Type","text/xml")
  xh.setRequestHeader("Content-Type","UTF-8")
  xh.send(xmlDoc);

  return xh.responseText;
  //if(xh.readyState == 4)
  //alert(xh.responseText);
  //alert(xh.responseXML);
}

function postForm(form1){
  var xmldom = createDom();
  createFormNode(xmldom,form1);
  //alert("post form : " + form1.action);
  return postDom(xmldom,form1.action);
}

function xml_getElementValue(ele){
	if(ele.type != 'select-one'){
		return ele.value;
	}else{
			var opsArr = ele.options;
			for(var i=0;i<opsArr.length;i++){
				if(opsArr[i].selected == true){
					return opsArr[i].value;
				}
			}
			return null;
	}
}

 function createXmlHttp(){   
  var xmlhttp,alerted;    
   try {
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
   } catch (E) {
     alert("You must have Microsofts XML parsers available")
   }    
   if (!xmlhttp && !alerted) {
    try {
      xmlhttp = new XMLHttpRequest();
     } catch (e) {
     alert("You need a browser which supports an XMLHttpRequest Object.\nMozilla build 0.9.5 has this Object and IE5 and above!")
      }
    } 
    return xmlhttp;
 }


