// JavaScript Document
//xml操作
function xmlfile()
{
  var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
  xmlDoc.async = false;
  xmlDoc.load("/datafield.xml");
  
  //用指定节点下的子节点初始列表
  this.initItem=function(obj,node)
  {
	  obj.length=0;
    if(node.hasChildNodes())
    {
      var nodelist=node.childNodes;
      var opt;
      for(var i=0;i<nodelist.length;i++)
      {
        opt=document.createElement("OPTION")
        opt.text=nodelist[i].getAttribute("name");
        opt.value=nodelist[i].nodeName.substr(1);
        try
         {
           obj.add(opt);
         }
        catch(e)
         {
           obj.add(opt,null);
         }
      }
    }
	else//如果没有子节点则用父级初始化
	  {
		opt=document.createElement("OPTION")
        opt.text=node.getAttribute("name");
        opt.value=node.nodeName.substr(1);
		try
         {
           obj.add(opt);
         }
        catch(e)
         {
           obj.add(opt,null);
         }
	  }
  }
  
   //用指定节点下的子节点初始列表并指定初始选定项
  this.initItemSel=function(obj,node,val)
  {
	  obj.length=0;
    if(node.hasChildNodes())
    {
      var nodelist=node.childNodes;
      var opt;
      for(var i=0;i<nodelist.length;i++)
      {
        opt=document.createElement("OPTION")
        opt.text=nodelist[i].getAttribute("name");
        opt.value=nodelist[i].nodeName.substr(1);
        try
         {
           obj.add(opt);
         }
        catch(e)
         {
           obj.add(opt,null);
         }
		 if(opt.value==val)obj.options[obj.length-1].selected=true;
      }
    }
	
	else//如果没有子节点则用父级初始化
	  {
		opt=document.createElement("OPTION")
        opt.text=node.getAttribute("name");
        opt.value=node.nodeName.substr(1);
		try
         {
           obj.add(opt);
         }
        catch(e)
         {
           obj.add(opt,null);
         }
	  }
	
  }
  
  //取指定类别的顶层节点
  this.topnode=function(ddkind)
  {
    return xmlDoc.selectSingleNode("/datafield/"+ddkind);
  }
  //取除顶层节点外的其余单个节点
  this.othnode=function(ddkind,nodeval)
  {
	var nodeval=nodeval.toString();
    var str="";
    for(var i=2;i<=nodeval.length;i=i+2)
    {
      str+="/_"+nodeval.substr(0,i);
    }
    return xmlDoc.selectSingleNode("/datafield/"+ddkind+str);
  }
  //用指定类别的顶级初始化列表
  this.inittop=function(obj,ddkind)
  {
    this.xmlToitem(obj,this.topnode(ddkind));
  }
  //用指定类别的顶级初始化列表,并指定选定值
  this.initoth=function(obj,ddkind,nodeval)
  {
    this.xmlToitem(obj,this.othnode(ddkind,nodeval));
  }
  //取节点的name值
  this.getname=function(ddkind,nodeval)
  {
    var node=this.othnode(ddkind,nodeval);
    return node.getAttribute("name");
  }
    //取节点的size值,如果本节点size为空,则取父级size值
  this.getsize=function(ddkind,nodeval)
  {
    var node=this.othnode(ddkind,nodeval);
	var size=node.getAttribute("size");
	while(!size&&node.nodeName!="datafield")
	{
		node=node.parentNode;
		size=node.getAttribute("size");
	}
    return size;
  }
}

