// ***  Sample request file **
// <RequestData>
//<Request>
//  <LookupCode>Item</LookupCode> 
//  <KeyValue>131</KeyValue> 
//  </Request>
// <Request>
//  <LookupCode>Customer_Address</LookupCode> 
//  <KeyValue>FCI</KeyValue> 
//  </Request>
//</RequestData>

// <== Begin HC 4307 MD 20060516
// var m_xmlLookupRequest = new ActiveXObject("Microsoft.XMLDOM");  //reserved code
// var m_xmlLookupResponse = new ActiveXObject("Microsoft.XMLDOM");  //reserved code
var m_xmlLookupRequest = getXMLDoc();
var m_xmlLookupResponse = getXMLDoc();
// <== End HC 4307 MD 20060516

var sLookupRequestXMLShell = "<RequestData></RequestData>";		//reserved code
m_xmlLookupRequest.async=false;
m_xmlLookupResponse.async=false;

function initRequest()
{
	m_xmlLookupRequest.loadXML(sLookupRequestXMLShell);
} 
initRequest(); 

function getXMLString(inNode)
{
		var objXMLSerializer = new XMLSerializer;
    
		//get the XML string
		var strXML = objXMLSerializer.serializeToString(inNode);
	   
	    return strXML;
}

function sendRequest(bShowReturnXML)
{
	try
	{	
		
	    // var xmlHTTP= new ActiveXObject("Microsoft.XMLHTTP");	// ==> HC 4307 MD 20060516
	    var xmlHTTP= getHTTPObject();							// <== HC 4307 MD 20060516
	    
	    var sReturnXML;	    	 		
	    
	    //xmlHTTP.Open("POST","/v3system/compass_xml_lookup.aspx",false);	// ==> HC 4307 MD 20060516
	    xmlHTTP.open("POST","/v3system/compass_xml_lookup.aspx",false);		// <== HC 4307 MD 20060516
	    xmlHTTP.setRequestHeader("Content-type", "application/xml")
	    // xmlHTTP.Send(m_xmlLookupRequest);								// <== HC 4307 MD 20060516
	    xmlHTTP.send(m_xmlLookupRequest);									// ==> HC 4307 MD 20060516
		
	    if (xmlHTTP.responseXML.xml)
	    {			
	    	sReturnXML=xmlHTTP.responseXML.xml;	    	
	    }	    
	    else
	    {
	    	showErrorMsg("ResponseText: " + xmlHTTP.responseText);
	    	m_xmlLookupResponse.loadXML('');
	    	return;
	    }	    
	    m_xmlLookupResponse.loadXML(sReturnXML);
	    if (bShowReturnXML==true)
	    {
	    	alert(sReturnXML);
	    }
	    return;
	    
	}
	catch(e)
	{
	  alert("sendRequest:" +e);
	}	
}

function showErrorMsg(sMsg)
{
	try
	{
		// <== Begin HC 4307 MD 20060516
		// The loading of about:blank hits a security restriction in FireFox
		// Easier just to do an alert
		alert("Error: " + sMsg);
/*
		var attributes;
		attributes = "left=0,top=0,height=480,width=480,scrollbars,resizable";
		// var newWindow = window.open("about:blank", null , attributes);
		var newWindow = window.open("/v3system/error.aspx", null , attributes);
		
		
		var sClose = "<span style='cursor: hand' onclick='Javascript:window.close()'>Close Window</span>";
		var sHTML;
		sHTML="<HEAD><TITLE>Error Description</TITLE></HEAD>"
		sHTML=sHTML + "<BODY style='background-color:silver;'><p><hr>"
		sHTML=sHTML + "<SPAN style='color:blue;font: bold 11pt;'>"
		
		alert(newWindow.document);
		
		newWindow.document.write(sHTML);

		newWindow.document.write(sMsg);
		newWindow.document.write("<br><hr>");
		newWindow.document.write("<center>");
		newWindow.document.write(sClose);
		newWindow.document.write("</center>");
		sHTML="</SPAN><hr></BODY>"
		newWindow.document.write(sHTML);
*/
		// <== End HC 4307 MD 20060516
	}
	catch(e)
	{
		alert("showErrorMsg:  "  + e);
	}
}


//************************************************************
function requestXMLLookup(sLookupCode,varLookupKey)
{
	try
	{
		var nodeRequestData=m_xmlLookupRequest.selectSingleNode("RequestData");
		var nodeRequest=m_xmlLookupRequest.createNode("element","Request","");
		var nodeLookupCode=m_xmlLookupRequest.createNode("element","LookupCode","");
		var nodeKeyValue=m_xmlLookupRequest.createNode("element","KeyValue","");				
		
		// <== Begin HC 4307 MD 20060516
		// nodeLookupCode.text=sLookupCode;
		//nodeKeyValue.text=varLookupKey;

		var nodeLookupCodeText = m_xmlLookupRequest.createTextNode(sLookupCode);		
		
		var nodeKeyValueText = m_xmlLookupRequest.createTextNode(varLookupKey);		
		
		nodeLookupCode.appendChild(nodeLookupCodeText);
		nodeKeyValue.appendChild(nodeKeyValueText);		
		// <== End HC 4307 MD 20060516
		
		nodeRequest.appendChild(nodeLookupCode);
		nodeRequest.appendChild(nodeKeyValue);
		nodeRequestData.appendChild(nodeRequest);
		
		
	}
	
	catch(e)
	{
		alert("requestXMLLookup: " + e);

	}
	return;
}

function alertReturnXML()
{
	try
	{
		alert(m_xmlLookupResponse.xml);
	}
	catch(e)
	{
		alert("alertReturnXML: " + e );
	}
}
function alertRequestXML()
{
	try
	{
		alert(m_xmlLookupRequest.xml);
	}
	catch(e)
	{
		alert("alertRequestXML: " + e );
	}

}
function getDatasetNodeByCode(sLookupCode)
{
  try
  {	
	var xmlDoc=m_xmlLookupResponse;
	
	var nodeResult;
	nodeResult=xmlDoc.documentElement.selectSingleNode("Success");
		
	for (var iNodeIndex=0; iNodeIndex<nodeResult.childNodes.length;iNodeIndex++)
	{
		// var nodeDataSet=nodeResult.childNodes(iNodeIndex);	// ==> HC 4307 MD 20060516
		var nodeDataSet=nodeResult.childNodes[iNodeIndex];		// <== HC 4307 MD 20060516
		
	
		if (sLookupCode.toLowerCase()==nodeDataSet.attributes.getNamedItem("lookupcode").text.toLowerCase())
		{
			return nodeDataSet;
		}		
	}
  }
  catch(e)
  {
	alert("getDatasetNodeByCode: " + e.message);
  }	
}


function getFieldValueByName(sLookupCode, sFieldName)
{
	try
	{
		if (m_xmlLookupResponse.xml == '')
		{
			return;
		}
		var nodeDataSet=getDatasetNodeByCode(sLookupCode);
		var returnValue;
		if (nodeDataSet != null)
		{
			switch (nodeDataSet.childNodes.length)
			{
				case 0: 
					{
						//return 'na';
						return null;
					}
				case 1:
					{

						// var nodeRecord=nodeDataSet.childNodes(0);	// ==> HC 4307 MD 20060516
						var nodeRecord=nodeDataSet.childNodes[0];		// <== HC 4307 MD 20060516
						if (nodeRecord.childNodes.length==0)
						{
							return '';
							//return null;
						}
						for (var iFieldIndex=0; iFieldIndex < nodeRecord.childNodes.length; iFieldIndex++)
						{
							// var nodeField=nodeRecord.childNodes(iFieldIndex);	// ==> HC 4307 MD 20060516
							var nodeField=nodeRecord.childNodes[iFieldIndex];		// <== HC 4307 MD 20060516
							if (nodeField.attributes.getNamedItem("name").text.toLowerCase()==sFieldName.toLowerCase())
							{
								return nodeField.text;
							}
						}
						break;
					}
				default:

						// var nodeRecord=nodeDataSet.childNodes(0);	// ==> HC 4307 MD 20060516
						var nodeRecord=nodeDataSet.childNodes[0];		// <== HC 4307 MD 20060516
						var returnCount;
						var count=0;
						if (nodeRecord.childNodes.length==0)
						{
							return null;
						}
						//-------------------------------------------------
						
						for (var iFieldIndex=0; iFieldIndex < nodeRecord.childNodes.length; iFieldIndex++)
						{
							// var nodeField=nodeRecord.childNodes(iFieldIndex);	// ==> HC 4307 MD 20060516
							var nodeField=nodeRecord.childNodes[iFieldIndex];		// <== HC 4307 MD 20060516
							if (nodeField.attributes.getNamedItem("name").text.toLowerCase()==sFieldName.toLowerCase())
							{

								return nodeField.text;
							}
						}
			}
		}
	}
	catch(e)
	{
		alert("getFieldValueByName: sFieldName= " + sFieldName + "/n ResponseXML=" + m_xmlLookupResponse + "/n Error is " + e.message);
	}
}

function getRecordCount()
{
	try
	{
		var xmlDoc=m_xmlLookupResponse;
		var nodeResult;
		if (xmlDoc.documentElement.selectSingleNode("Success").childNodes.length > 0)		
		{
			nodeResult=xmlDoc.documentElement.selectSingleNode("Success/DataSet");
			return nodeResult.childNodes.length;
		}
		else
		{	
			return 0;
		}
	}
	catch(e)
	{
		alert("getRecordCount:"+e);
	}
}

function getFieldValueByNameIndex(sLookupCode, sFieldName, index)
{
	try
	{
		
		var nodeDataSet=getDatasetNodeByCode(sLookupCode);
		var returnValue;
		
		// var nodeRecord=nodeDataSet.childNodes(index);	// ==> HC 4307 MD 20060516
		var nodeRecord=nodeDataSet.childNodes[index];		// <== HC 4307 MD 20060516
		var returnCount;
		var count=0;
		if (nodeRecord.childNodes.length==0)
		{
			return null;
		}
		//-------------------------------------------------
		
				
		for (var iFieldIndex=0; iFieldIndex < nodeRecord.childNodes.length; iFieldIndex++)
		{
			// var nodeField=nodeRecord.childNodes(iFieldIndex);	// <== HC 4307 MD 20060516
			var nodeField=nodeRecord.childNodes[iFieldIndex];		// ==> HC 4307 MD 20060516
		
			if (nodeField.attributes.getNamedItem("name").text.toLowerCase()==sFieldName.toLowerCase())
			{				
				var sFieldValue=replaceSpecialChars(nodeField.text,'&','|');				
				return sFieldValue;
			}
		}

	}
	catch(e)
	{
		alert("getFieldValueByNameIndex: sFieldName= " + sFieldName + "/n ResponseXML=" + m_xmlLookupResponse + "/n Error is " + e);
	}
}
