function createXMLHttpRequest()
	{
	var myRequest=null;
	if(window.XMLHttpRequest)
		{
		myRequest=new XMLHttpRequest();
		}
	else
		{
		myRequest=new ActiveXObject("Microsoft.XMLHTTP");
		}
	if(myRequest!=null)
		{
		return myRequest;
		}
	else
		{
		alert("createXMLHttpRequest - XML Doc Load Failed");
		}
	}
/* http://forum.java.sun.com/thread.jspa?threadID=764626&messageID=4361445 */
function createXmlDOM(request)
	{
	var xmlDocument;
	if (window.ActiveXObject)
		{
		xmlDocument=new ActiveXObject("Microsoft.XMLDOM");
		xmlDocument.async=false;
		// IE uses the loadXML method when the source document is NOT XML
		xmlDocument.loadXML(request.responseText);
		}
	else if (document.implementation.createDocument)
		{
		// Firefox requires a parser object to read the text
		var parser=new DOMParser();
		xmlDocument=parser.parseFromString(request.responseText, "text/xml");
		}
	if(xmlDocument==null) alert("createXmlDOM - XML Doc Load Failed");
	/* */
	//alert(xmlDocument);
	return xmlDocument;
	};
/* */
var myRequestForArea=new createXMLHttpRequest();
if(!myRequestForArea==null) alert('myRequestForArea could not be initialized!');
/* */
function handleResponse()
	{
	//alert('handleResponse is '+myRequestForArea.readyState);
	if(myRequestForArea.readyState==4)
		{
		document.getElementById('pleaseWait_'+myCountryField).style.visibility="hidden";
		document.getElementById(myAreaOptionsListId).style.visibility='hidden';
		/* */
		var xmlString=myRequestForArea.responseText;
		//alert(xmlString);
		var xmlDocument=createXmlDOM(myRequestForArea);
		/* Konqueror considers the processing instruction (type 7) as a node. The firstChild is the PI... */
		var myDiv=xmlDocument.getElementsByTagName('div').item(0);
		var optionsList=myDiv.childNodes;
		/* */
		//alert(optionsList.length);
		if(optionsList.length>0)
			{
			var myAreaNode=document.getElementById(myAreaField);
			while(myAreaNode.childNodes.item(1))
				{
				myAreaNode.removeChild(myAreaNode.childNodes.item(1));
				}
			/* */
			//alert(myAreaField+' is '+myAreaNode.tagName);
			for(i=0;i<optionsList.length;i++)
				{
				//alert(i);
				if(optionsList.item(i).nodeType==1)
					{
					/* Direct node cloning will not work - do not ask why... */
					var myOption=document.createElement('option');
					var j=0;
					while(optionsList.item(i).attributes.item(j))
						{
						myOption.setAttribute(optionsList.item(i).attributes.item(j).name,optionsList.item(i).attributes.item(j).value);
						j++;
						}
					myTextNode=document.createTextNode(optionsList.item(i).firstChild.nodeValue);
					myOption.appendChild(myTextNode);
					myAreaNode.appendChild(myOption);
					}
				}
			//myAreaNode.setAttribute('size',myAreaNode.childNodes.length);
			//myAreaNode.style.display="block";
			/* ------------------------------------------------------ */
			/*
			document.getElementById('default_area').removeAttribute('selected');
			var myAreaNode=document.getElementById(myAreaField);
			for(i=0;i<myAreaNode.getElementsByTagName('option').length;i++)
				{
				if(myAreaNode.getElementsByTagName('option').item(i).value=='kkk')
					{
					myAreaNode.getElementsByTagName('option').item(i).setAttribute('selected','selected');
					myAreaNode.selectedIndex=i;
					}
				}
			*/
			document.getElementById(myAreaOptionsListId).style.visibility='visible';
			}
		//alert(document.getElementById(myAreaOptionsListId).parentNode.innerHTML);
		}
	else
		{
		document.getElementById('pleaseWait_'+myCountryField).style.visibility="visible";
		}
	}
/* */
function sendRequest(areaOptionsListId,countryField,countryCode,areaField,areaCode)
	{
	myAreaOptionsListId=areaOptionsListId;
	myCountryField=countryField;
	myAreaField=areaField;
	/* Safer to set the sync parameter to 'true' for the open method. See : http://www.w3schools.com/dom/dom_http.asp */
	//alert('areaOptionsListId '+areaOptionsListId+'\ncountryField '+countryField+'\ncountryCode '+countryCode+'\nareaField '+areaField+'\nareaCode '+areaCode);
	if(countryCode!="" && countryCode!='undefined')
		{
		myRequestForArea.open('GET','../plugins/getAreaOptionsList.php?countryCode=' + countryCode+'&areaCode=' + areaCode,true);
		myRequestForArea.onreadystatechange=handleResponse;
		myRequestForArea.send(null);
		}
	else
		{
		alert
			(
			'Missing or wrong parameters - Unable to proceed the request!\n'
			+'Parameters '+countryCode+' was : |'+document.getElementById(countryCode).value+'|\n'
			+'Parameters '+areaCode+' was :    |'+document.getElementById(areaCode).value+'|'
			);
		}
	}
/* */
function setAreaOptionList(areaOptionsListId,countryField,countryCode,areaField,areaCode)
	{
	if(countryCode!="" && countryCode!='undefined')
		{
		document.getElementById(areaOptionsListId).style.visibility='hidden';
		sendRequest(areaOptionsListId,countryField,countryCode,areaField,areaCode);
		}
	}


