var XmlHttpObj;
var XmlHttpObj1;

function CreateXmlHttpObj()
{
	try
	{
		XmlHttpObj = new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch(e)
	{
		try
		{
			XmlHttpObj = new ActiveXObject("Microsoft.XMLHTTP");
		} 
		catch(oc)
		{
			XmlHttpObj = null;
		}
	}
	if(!XmlHttpObj && typeof XMLHttpRequest != "undefined") 
	{
		XmlHttpObj = new XMLHttpRequest();
	}
}

function CreateXmlHttpObj1()
{
	try
	{
		XmlHttpObj1 = new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch(e)
	{
		try
		{
			XmlHttpObj1 = new ActiveXObject("Microsoft.XMLHTTP");
		} 
		catch(oc)
		{
			XmlHttpObj1 = null;
		}
	}
	if(!XmlHttpObj1 && typeof XMLHttpRequest != "undefined") 
	{
		XmlHttpObj1 = new XMLHttpRequest();
	}
}

function getData( srcField, srcField1, sqlStr, targetField1, targetField2 )
{
	var theList1 = null;
	var selectedItem1 = null;

    var theList = document.getElementById( srcField );
    var selectedItem = theList.options[theList.selectedIndex].value;
    var requestUrl;

    requestUrl = "ajax/xml_data_provider.php" + "?sql="+encodeURIComponent(sqlStr)+"&filter1=" + encodeURIComponent(selectedItem)+"&target1=" + encodeURIComponent(targetField1)+"&srcField="+encodeURIComponent(srcField);
    
   if (srcField1 != null )
	{
		theList1 = document.getElementById( srcField1 );
      selectedItem1 = theList1.options[theList1.selectedIndex].value;
		requestUrl += "&filter2="+encodeURIComponent(selectedItem1);
	}	
    
   if (targetField2 != null )
	{
		requestUrl += "&target2="+encodeURIComponent(targetField2);
	}

    CreateXmlHttpObj();
	
    if(XmlHttpObj)
    {
    		var waitImgDiv = document.getElementById( srcField+"__Response" );
       	waitImgDiv.innerHTML="<img alt=\"\" src=\"components/com_comprofiler/images/wait.gif\" /> Retrieving...";
         XmlHttpObj.onreadystatechange = StateChangeHandler;	
			XmlHttpObj.open("GET", requestUrl,  true);	
			XmlHttpObj.send(null);		
    }
}

function getData1( srcField, srcField1, sqlStr, targetField1, targetField2 )
{
	var theList1 = null;
	var selectedItem1 = null;

    var theList = document.getElementById( srcField );
    var selectedItem = theList.options[theList.selectedIndex].value;
    var requestUrl;

    requestUrl = "ajax/xml_data_provider.php" + "?sql="+encodeURIComponent(sqlStr)+"&filter1=" + encodeURIComponent(selectedItem)+"&target1=" + encodeURIComponent(targetField1)+"&srcField="+encodeURIComponent(srcField);
    
   if (srcField1 != null )
	{
		theList1 = document.getElementById( srcField1 );
      selectedItem1 = theList1.options[theList1.selectedIndex].value;
		requestUrl += "&filter2="+encodeURIComponent(selectedItem1);
	}	
    
   if (targetField2 != null )
	{
		requestUrl += "&target2="+encodeURIComponent(targetField2);
	}

    CreateXmlHttpObj1();
	
    if(XmlHttpObj1)
    {
    	var waitImgDiv = document.getElementById( srcField+"__Response" );
       	waitImgDiv.innerHTML="<img alt=\"\" src=\"components/com_comprofiler/images/wait.gif\" /> Retrieving...";
        XmlHttpObj1.onreadystatechange = StateChangeHandler1;	
	XmlHttpObj1.open("GET", requestUrl,  true);	
	XmlHttpObj1.send(null);		
    }
}

function StateChangeHandler()
{
	if(XmlHttpObj.readyState == 4)
	{
		if(XmlHttpObj.status == 200)
		{			
			processReturnList(XmlHttpObj.responseXML.documentElement);
		}
		else
		{
			alert("problem retrieving data from the server, status code: "  + XmlHttpObj.status);
		}
	}
}

function StateChangeHandler1()
{
	if(XmlHttpObj1.readyState == 4)
	{
		if(XmlHttpObj1.status == 200)
		{			
			processReturnList(XmlHttpObj1.responseXML.documentElement);
		}
		else
		{
			alert("problem retrieving data from the server, status code: "  + XmlHttpObj1.status);
		}
	}
}

function processReturnList(theNode)
{
	var targetField1 = theNode.getAttribute("target1");
	var targetField2 = theNode.getAttribute("target2");
	var srcField = theNode.getAttribute("srcField");
    	var theNodes = theNode.getElementsByTagName("item");
    	var returnList = document.getElementById(targetField1);
    	var waitImgDiv = document.getElementById(srcField+"__Response");

	if (waitImgDiv)
	{
  		waitImgDiv.innerHTML = "";  
	}

	for (var count = returnList.options.length-1; count >-1; count--)
	{
		returnList.options[count] = null;
   	}

	// var idValue;
	var textValue; 
	var optionItem;
	for (var count = 0; count < theNodes.length; count++)
	{
   		textValue = GetInnerText(theNodes[count]);
		// idValue = theNodes[count].getAttribute("id");
		optionItem = new Option( textValue, textValue,  false, false);
		returnList.options[returnList.length] = optionItem;
	}
	
	if ( (targetField2 != null) && (targetField2 != "") )
	{
		returnList.onchange();
	}
}

function GetInnerText (node)
{
	return (node.textContent || node.innerText || node.text) ;
}

