var SourceSQL = 0;

function ChangeDynamicDropdownSource(source)
{
	SourceSQL = source;
}

function createXMLDoc(xmlData)
{
	// code for IE
	if (window.ActiveXObject)
	{
		var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async=false;
		xmlDoc.loadXML(xmlData);
	}
	// code for Mozilla, etc.
	else if (document.implementation && document.implementation.createDocument)
	{
		var parser = new DOMParser();
 		var xmlDoc = parser.parseFromString(xmlData,"text/xml");		
	}
	else
	{
		alert('Your browser cannot handle this script');
	}
	
	return xmlDoc;
}

function AJAX_DynamicDropdown(DataID, ReturnID, SQLToRunIn)
{
	var SQLToRun = SQLToRunIn || SourceSQL;
	if(document.getElementById(DataID).value.replace(/^\s+|\s+$/g, '') == '')
	{
		document.getElementById(ReturnID).innerHTML = '';
		document.getElementById(ReturnID).style.display = 'none';
	}
	else
	{
		if (window.ActiveXObject)
		{
			var xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
		}
		else if (window.XMLHttpRequest)
		{
			var xmlHttp = new XMLHttpRequest();
		}
		var POSTData = "Data="+encodeURIComponent(document.getElementById(DataID).value)+"&SQLToRun="+SQLToRun;
		if(document.getElementById('manufacturer'))
			POSTData += "&Manufacturer="+encodeURIComponent(document.getElementById('manufacturer').value);
		var workingPostPage = "/php/libs/dynamicDropdown.php";
		xmlHttp.onreadystatechange = function ()
		{
			if(xmlHttp.readyState == 4)
			{
				if(xmlHttp.status == 200)
				{
					var XMLDoc = createXMLDoc(xmlHttp.responseText);
					var elementsArray = XMLDoc.getElementsByTagName('DropdownElement');
					if(elementsArray.length == 0)
					{
						document.getElementById(ReturnID).innerHTML = '';
						document.getElementById(ReturnID).style.display = 'none';	
					}
					else
					{
						var returnElementArray = DataID.split('-');
						if(window.ActiveXObject)
							var firstValue = elementsArray[0].text;
						else
							var firstValue = elementsArray[0].textContent;
						var firstValueArray = firstValue.split('|');
						if(elementsArray.length == 1 && firstValueArray[1] == document.getElementById(DataID).value)
						{
							if(firstValueArray[0] != "")
							{
								document.getElementById(returnElementArray[0]).value = firstValueArray[0];
							}
							document.getElementById(ReturnID).innerHTML = "";
							document.getElementById(ReturnID).style.display = 'none';
						}
						else
						{
							var tableHTML = '<table border="0" cellspacing="0" cellpadding="6" class="DynamicDropdownTable">';
							for(var i=0; i<elementsArray.length; i++)
							{
								if(window.ActiveXObject)
									var elementData = elementsArray[i].text;
								else
									var elementData = elementsArray[i].textContent;
								var elementDataArray = elementData.split('|');
								if(elementDataArray[0] != "") // there is a PK returned
								{
									tableHTML += '<tr onmouseover="this.className=\'DynamicDropdownTableSelectedTR\';" onmouseout="this.className=\'\';" onclick="document.getElementById(\''+DataID+'\').value = this.childNodes[0].innerHTML; document.getElementById(\''+ReturnID+'\').innerHTML = \'\'; document.getElementById(\''+ReturnID+'\').style.display = \'none\'; document.getElementById(\''+returnElementArray[0]+'\').value = \''+elementDataArray[0]+'\';"><td nowrap="nowrap">'+elementDataArray[1]+'</td></tr>';
								}
								else // no PK to worry about
								{
									tableHTML += '<tr onmouseover="this.className=\'DynamicDropdownTableSelectedTR\';" onmouseout="this.className=\'\';" onclick="document.getElementById(\''+DataID+'\').value = this.childNodes[0].innerHTML; document.getElementById(\''+ReturnID+'\').innerHTML = \'\'; document.getElementById(\''+ReturnID+'\').style.display = \'none\';"><td nowrap="nowrap">'+elementDataArray[1]+'</td></tr>';
								}
							}
							tableHTML += '</table>';
							document.getElementById(ReturnID).innerHTML = tableHTML;
							document.getElementById(ReturnID).style.display = '';
						}
					}
				}
				else if (xmlHttp.status == 404)
				{
					alert("404 : Page Not Found");
				}
				else
				{
					alert("Unknown Error: "+xmlHttp.status);	
				}
			}
		};
		xmlHttp.open("POST",workingPostPage,true);
		xmlHttp.setRequestHeader("Method", "POST " + self.location + " HTTP/1.1");
		xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		xmlHttp.send(POSTData);
	}
}