if(typeof(_sysXml)=="undefined")alert("_sysXml is not defined!");
_sysDom.extend(self);

function ETSOOConfigList(sXml,bUpdate)
{
    if(sXml==null)sXml="Xml/Config.xml";
    var sId=_sysDom.getID();
    this.id=sId
    this.xml=sXml;
    this.update=bUpdate||false;
    this.loaded=false;
    this.document=null;
    this.childNodes=[];
    this.textField=null;
    this.valueField="Value";
}
ETSOOConfigList.prototype.setup=function()
{
    var o=this;
    var oReq=_sysXml.createRequest(this.id,[]);
    oReq._req.onreadystatechange=function()
    {
        if(typeof(_sysXml)=="undefined")return false;
        var oR=oReq.getRequest();
        if(oR)
        {
            if(!oReq.testInterval())return false;
            var oDoc=oReq.getDocument();
            o.document=oDoc
            o.loaded=true;
            
            var iLen=o.childNodes.length;
            for(var i=0;i<iLen;i++)
            {
                var oItem=o.childNodes[i];
                o._read(oItem);
            }
        }
    }
    oReq.loadUrl(this.xml,true,null,null,this.update);
}
ETSOOConfigList.prototype._read=function(oItem)
{
    var oNode=_sysXml.getNode(this.document,oItem.field);
    if(oNode)
    {
        var iType=oItem.type;
        var eT=oItem.target;
        
        if(iType==1)eT.options.length=0;
        else eT.innerHTML="";
        
        var bMultiple=(oNode.getAttribute("Multiple")=="true");
        if(bMultiple)
        {
            if(iType==1)eT.setAttribute("multiple",bMultiple);
            else if(iType==2)oItem.type=3;
        }
        this._doRead(oNode,oItem);
    }
}
ETSOOConfigList.prototype._doRead=function(oNode,oItem,iStep)
{
	if(iStep==null)iStep=0;
	else iStep++;
	
    var iType=oItem.type;
    var iBaseLen=oItem.size;
    var sName=oItem.name;
    var sDefault=oItem.defaultValue;
    var aDelIndex=oItem.delIndex;
 	var aBaseValue=[];
	if(sDefault!=null)aBaseValue=sDefault.toString().split(/,\s*/gi);
	var eT=oItem.target;
	
	var AjaxLanguageText={}
	if(typeof(_sysAjax)!="undefined")AjaxLanguageText=_sysAjax.languageText;
	
	var aNodes=oNode.childNodes;
	var iLen=aNodes.length;
	var iCount=0;
	for(var i=0;i<iLen;i++)
	{
		var oOne=aNodes[i];
		if(oOne.nodeType!=1)continue;
		
		var sValue=oOne.getAttribute(this.valueField);
		var objFNode=oOne.firstChild;
		var blnDown=false;
		
		if(objFNode&&(objFNode.nodeType==1||objFNode.nextSibling!=null))blnDown=true;
		var sText="";
		if(objFNode&&objFNode.nodeType==1)sText="---";
		else
		{
		    if(this.textField)sText=oOne.getAttribute(this.textField);
		    else if(objFNode)sText=objFNode.nodeValue.trimAll();
		    if(sText=="")sText="---";
		}
		if(AjaxLanguageText[sText]!=null)sText=AjaxLanguageText[sText];
		if(sValue==null)sValue=sText;
		
		if(aDelIndex.indexOf(sValue)!=-1)continue;
		
		var bChecked=(aBaseValue.indexOf(sValue)!=-1);
		if(iType==0)
		{
		    if(bChecked)
		    {
		        if(eT.innerHTML!="")eT.innerHTML+=", ";
		        eT.innerHTML+=sText;
		    }
		}
		else if(iType==1)
		{
		    if(iStep>0)
		    {
		        for(var numH=0;numH<iStep;numH++)sText='--- '+sText;
		    }
		    _sysDom.createOption(eT,sText,sValue,bChecked);
		}else{
		    if(iStep>0)
		    {
		        var oSpan=document.createElement("span");
		        oSpan.style.padding=(iStep)*12+"px";
		        eT.appendChild(oSpan)
		    }
		    iCount++;
		    var sId=_sysDom.getID("radio");
		    var oRadio=_sysDom.createInput(document,(iType==2)?"radio":"checkbox",sName);
		    oRadio.value=sValue;
		    oRadio.id=sId;
		    if(bChecked)oRadio.setAttribute("checked",bChecked);
		    eT.appendChild(oRadio);
		    if(bChecked)oRadio.checked=true;
		    
		    var oL=document.createElement("label");
		    oL.innerHTML=sText;
		    oL.setAttribute("for",sId);
		    eT.appendChild(oL);
		    
		    if(iCount%iBaseLen==0)eT.appendChild(document.createElement("br"));
		}
		if(blnDown)this._doRead(oOne,oItem,iStep);
	}
}
ETSOOConfigList.prototype.add=function(oItem)
{
    this.childNodes[this.childNodes.length]=oItem;
    if(this.loaded)
    {
        this._read(oItem);
    }
}
function ETSOOCLItem(sFieldName,iType,sDefault,oContainer,iSize,aDelIndex)
{
	var aNames=sFieldName.split(".");
	var sField=aNames[0];
	var sName=aNames[1];
	if(sName==null)sName=sField;
	if(iType==null)iType=1;
	if(iSize==null)iSize=(iType==1)?1:5;
	
	var sId=_sysDom.getID(sName);
	
	this.id=sId;
	this.field=sField;
	this.name=sName;
	this.type=iType;
	this.defaultValue=sDefault;
	this.size=iSize;
	this.delIndex=aDelIndex||[];
	this.container=oContainer;

	var strL='';
	var sLoadingText="Loading...";
	if(typeof(_sysAjax)=="object")sLoadingText=_sysAjax.getLoadingText(self);
	if(iType==1)
	{
	    strL+='<select name="'+sName+'" id="'+sId+'" size="'+this.size+'" _ETSOOUpdated="Y">';
	    strL+='<option value="">'+sLoadingText+'</option>';
	    strL+='</select>';
	}
	else
	{
	    strL+='<div id="'+sId+'">'+sLoadingText+'</div>';
	}
	if(oContainer==null)
	{
	    document.write(strL);
	    this.target=document.getElementById(sId);
	}
	else
	{
	    oContainer.innerHTML=strL;
	    this.target=oContainer.firstChild;
	}
}
