function getNodes(sExpando,sTagName)
{
	var aNodes = new Array();
	if(!sExpando)
		return aNodes;
	sExpando = sExpando.toLowerCase()
	if(sTagName)
		sTagName = sTagName.toUpperCase()
	var aStack = new Array(document.body);
	while(aStack.length != 0)//for every node in stack
	{
		var oNode = aStack.pop();
		if(oNode.nodeType == 1 && (!sTagName || oNode.tagName == sTagName))//html element 	and the tag we want
		{
			for(var i=0;i<oNode.attributes.length;i++)
			{
				var oAttrib = oNode.attributes[i]	
				if(oAttrib.nodeName.toLowerCase().indexOf(sExpando) != -1)
				{
					if(!oNode[sExpando])//set the as prop for moz
						oNode[sExpando] = oAttrib.nodeValue;
					aNodes.push(oNode);
					break;
				}
			}
		}
			
		if(oNode.hasChildNodes) //append childs to stack
			for(var i = 0 ; i < oNode.childNodes.length; i++)
				aStack.push(oNode.childNodes[i]);
	}
	return aNodes;
}

function initDynPopulate(sFolder)
{
	var aLinked = getNodes('populate','select');
	for(var i = 0 ; i < aLinked.length; i++)
	{
		var oNode = aLinked[i];
		oNode.populateFolder = sFolder;
		
		oNode.onchange=function()
		{
			var oPop;
			
			if(this.getAttribute('populateById'))
			{
				oPop= document.getElementById(this.populateById);	
				this.setAttribute('populate',this.source);
			}
			else
			{	
			 	oPop= document.getElementsByName(this.populate);
			 	if(!oPop)
					return;
				
				if(oPop.length && oPop.length>0)
					oPop = oPop[0];	
			}
			
			/*
			for(var i=oPop.options.length-1;i>0;i--)
			{
				if(oPop.options[i].value != '' && oPop.options[i].value != '0')
					oPop.remove(i);
			}
			*/
			
			if(this.value!='' && this.value!='0')
			{
							
				var aProgID = ["Msxml2.DOMDocument.5.0","Msxml2.DOMDocument.4.0","Msxml2.DOMDocument.3.0","Msxml2.DOMDocument.2.0"];
				for(var i = 0;i < aProgID.length; i++)
				{
					try
					{
						var oXml = new ActiveXObject(aProgID[i]);			
					}
					catch(ex)
					{}
				}
				
				var fOp=document.createElement("OPTION");
				fOp.text=oPop.options.item(0).innerHTML;
				fOp.value="";
				oPop.innerHTML='';
								
				oXml.preserveWhiteSpace = false;
	 			oXml.resolveExternals = false;
				oXml.validateOnParse = false;
	 			oXml.async = true;
	 			var val=(this.value=='')?1:this.value;
				oXml.load(this.populateFolder+this.populate+'.htm?'+this.name+'='+val);
				oXml.onreadystatechange=function()
				{
					if(oXml.readyState==4)
					{
						var aRecords = oXml.selectNodes('//data/record');
				
						oPop.options.add(fOp);
						for(var i = 0; i < aRecords.length; i++)
						{
							var oOption = document.createElement("OPTION");
							var oRec = aRecords.item(i);
							oOption.text = oRec.selectSingleNode('name').text;
							oOption.value = oRec.selectSingleNode('id').text;
							oPop.options.add(oOption);
						
						}
						oPop.fireEvent('onchange',window.event); //call the event handler
					}
				}
			}
		}
	}
}

			