function xmlClearSelection(ind,CurElement)
{
	size = document.getElementById(CurElement+'_maxlevel').value;
	for (i = ind + 1; i <= size; i++)
		{
			Doc = document.getElementById(CurElement+'_'+(i));
			Doc.options.length = 0;
			Doc.options[0]=new Option('<--');
			Doc.options[0].value = '';
		}
}

function xmlRequestURL(f,CurElement,ind,name,id, response,tmpDATA,lang,free)
{
	url  = '/request.php?name='+name+'&id='+id+'&lang='+lang+tmpDATA;
	xmlNextSelection = ind + 1;
	xmlCurrentElement = CurElement;
	glbDATA = tmpDATA;
	if (free == false)
		xmlCurrentDoc = document.getElementById(CurElement+'_'+(ind+1));
	else	
		xmlCurrentDoc = document.getElementById(CurElement);
	//alert(url);
	loadXMLDoc(url);
}

function xmlCreateList(f,CurElement,ind,name,id, response,tmpDATA,lang,free)
{   
	if (id != '')
		if (response != '')
			{ 
			// Response mode
				
			} 
			
			else
			{
				// Input mode
				xmlRequestURL(f,CurElement,ind,name,id, response,tmpDATA,lang,free);
			}
	else 	// 
		{
		if (CurElement != '' && ind != '' && free == false)
			if (document.getElementById(CurElement+'_'+ind).value == '')
			{
				xmlClearSelection(ind,CurElement);	
			}
		}

};
function xmlprocessReqChange() 
{
    // only if req shows "complete"
    if (xmlreq.readyState == 4) {
        // only if "OK"
		if (xmlreq.status == 200) {
			// ...processing statements go here...
			
			xmlresponse  = xmlreq.responseXML.documentElement;
			var i;
				if (xmlCurrentDoc != null)
				{
					if (xmlCurrentDoc.type == 'select-one')
					{
						xmlCurrentDoc.options.length = 0;
						xmlCurrentDoc.options[0]=new Option('<--');
						xmlCurrentDoc.options[0].value = '';			
						if (xmlresponse.getElementsByTagName('XMLGSELECT').length > 0) 
						{
							for (i=1; i < xmlresponse.getElementsByTagName('XMLGSELECT').length+1; i++)
							{
									XML_text = xmlresponse.getElementsByTagName('XMLGSELECT')[i-1].firstChild.data;
									XML_id = xmlresponse.getElementsByTagName('XMLGSELECT')[i-1].attributes.getNamedItem('xmlid').value;
									xmlCurrentDoc.options[i]=new Option(XML_text);
									xmlCurrentDoc.options[i].value = XML_id;
							}
							result = 'true';
							eval('xmlCreateList(\'\',\'\',\'\',\'\',\'\',result,\'\',\'\',\'\')');
						}	
						xmlClearSelection(xmlNextSelection,xmlCurrentElement);		
					}
					else
					{
						xmlCurrentDoc.value = '';
						if (xmlresponse.getElementsByTagName('XMLGSELECT').length > 0) 
						{
							for (i=1; i < xmlresponse.getElementsByTagName('XMLGSELECT').length+1; i++)
								{
									XML_text = xmlresponse.getElementsByTagName('XMLGSELECT')[i-1].firstChild.data;
									xmlCurrentDoc.value = XML_text;
								}
							result = 'true';
							eval('xmlCreateList(\'\',\'\',\'\',\'\',\'\',result,\'\',\'\',\'\')');
						}	
												
					}
				}	
        } 
		else 
		{
            alert("There was a problem retrieving the XML data:\n" + xmlreq.statusText);
        }
    }
}

var xmlreq;

function loadXMLDoc(url) 
{
    // branch for native XMLHttpRequest object
    if (window.XMLHttpRequest) {
        xmlreq = new XMLHttpRequest();
        xmlreq.onreadystatechange = xmlprocessReqChange;
        xmlreq.open("GET", url, true);
        xmlreq.send(null);
    // branch for IE/Windows ActiveX version
    } else if (window.ActiveXObject) {
        xmlreq = new ActiveXObject("Microsoft.XMLHTTP");
        if (xmlreq) {
            xmlreq.onreadystatechange = xmlprocessReqChange;
            xmlreq.open("GET", url, true);
			xmlreq.setRequestHeader("If-Modified-Since", Math.random());
            xmlreq.send(null);
        }
    }
}

xmlCurrentDoc = null;
xmlCurrentElement = null;
xmlNextSelection = 0;
glbDATA = null;
