var ajaxRequest;
//
function ajaxCall(strURL, xmlData, receiveFunction)
{
	if(typeof xmlData == 'undefined')
	{
		xmlData = null;
	}

	if (window.XMLHttpRequest)
	{
		// branch for native XMLHttpRequest object
		ajaxRequest = new XMLHttpRequest();
	}
	else if (window.ActiveXObject)
	{
		// branch for IE6-/Windows ActiveX version
		ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
	}
	
	if (ajaxRequest)
	{   
	
		ajaxRequest.open("POST", strURL, true);
			    
//        ajaxRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        ajaxRequest.setRequestHeader("Content-length", xmlData.length);
        ajaxRequest.setRequestHeader("Connection", "close");	

		ajaxRequest.onreadystatechange = function()
											{
												// only if req shows "complete"
												if (ajaxRequest.readyState == 4)
												{
													// only if "OK"
													if (ajaxRequest.status == 200)
													{
														if(ajaxRequest.responseXML.documentElement != null)
														{
															var objResponse  = ajaxRequest.responseXML.documentElement;															
															eval(receiveFunction + '(objResponse)');
														}
													}
												}
											}

		ajaxRequest.send(xmlData);
	}

}


function ajaxStateHandler()
{
	// only if req shows "complete"
	if (ajaxRequest.readyState == 4)
	{
		// only if "OK"
		if (ajaxRequest.status == 200)
		{
			//debugger;
			if(ajaxRequest.responseXML.documentElement != null)
			{
				var objResponse  = ajaxRequest.responseXML.documentElement;
				var strMethod    = objResponse.getElementsByTagName('method')[0].firstChild.data;
				var objStatus    = objResponse.getElementsByTagName('status')[0];
				var objResults    = objResponse.getElementsByTagName('result');
				var intResultCount = objResults.length;
				var intStatus = 0;
				var strErrorMessage =  '';
				
				if(objStatus != null)
				{
					intStatus = GetXmlNodeText(objStatus.getElementsByTagName('status')[0]);
					strErrorMessage = GetXmlNodeText(objStatus.getElementsByTagName('error_message')[0]);
				}
				
				if(intStatus == 0)
				{
				
					for(var intResultIndex = 0; intResultIndex < intResultCount; intResultIndex++)
					{
						var objResult = objResults[intResultIndex];
						eval(strMethod + '(objResult)');
					}
				}
				else
				{
					raiseMessage('stoperror', strErrorMessage, '');
				}
			}
		}
	}
}

function createXMLDOM()
{
	var xmlDoc;
	
	// code for IE
	if (window.ActiveXObject)
	{
		xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
	}// code for Mozilla, Firefox, Opera, etc.
	else if ((document.implementation) && (document.implementation.createDocument))
	{
		xmlDoc=document.implementation.createDocument("","",null);
	}
	else
	{
		alert('Your browser cannot handle this script');
	}
	xmlDoc.async=false;
	xmlDoc.load('<?xml version="1.0" encoding="ISO-8859-1" ?>');
	return(xmlDoc);
}



function AddNodeToXml(xmlDoc, xmlRow, strName, value)
{

	var xmlNewNode = xmlDoc.createElement(strName);
	xmlNewNode.appendChild(xmlDoc.createTextNode(value));
	xmlRow.appendChild(xmlNewNode);
	
}