// holds an instance of XMLHttpRequest
var xmlHttp = createXmlHttpRequestObject();

// creates an XMLHttpRequest instance
function createXmlHttpRequestObject()
 {
  // will store the reference to the XMLHttpRequest object
  var xmlHttp;

  // this should work for all browsers except IE6 and older
  try
   {
    // try to create XMLHttpRequest object
    xmlHttp = new XMLHttpRequest();
   }
  catch(e)
   {
    // assume IE6 or older
	var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
									"MSXML2.XMLHTTP.5.0",
									"MSXML2.XMLHTTP.4.0",
									"MSXML2.XMLHTTP.3.0",
									"MSXML2.XMLHTTP",
									"Microsoft.XMLHTTP");
    // try every prog id until one works
	for (var i=0; i<XmlHttpVersions.length && !xmlHttp; i++)
	 {
	  try
	   {
	    // try to create XMLHttpRequest object
		xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
	   }
	  catch (e) {}
	 }
   }
  // return the created object or display an error message
  if (!xmlHttp) return false;
    else return xmlHttp;
 }

// called to read a file from the server
function process(link)
 {
  // only continue if xmlHttp isn't void
  if (xmlHttp)
   {
    // try to connect to the server
	try
	 {
	  xmlHttp.open("GET", link+"&alert", false);
      xmlHttp.send(null);
	  return handleRequestStateChange();
	 }
	// display the error in case of failure
	catch (e)
     {
	  return true;
	 }
   }
    else
	  {
	   return true;
	  }
 }

// function called when the state of the HTTP request changes
function handleRequestStateChange()
 {
  // when readyState is 4, we are ready to read the server response
  if (xmlHttp.readyState == 4)
   {
    // continue only if HTTP status is "OK"
	if (xmlHttp.status == 200)
	 {
	  try
	   {
	    // do something with the response from the server
		return handleServerResponse();
	   }
	  catch(e)
	   {
	    // display error message
		return true;
	   }
	 }
	  else
	    {
		 // display status message
		 return true;
		}
	}
	 else
	   {
	    return false;
	   }
 }

// handles the response received from the server
function handleServerResponse()
 {
  // read the message from the server
  var textResponse = new String;
  textResponse = xmlHttp.responseText;
  // catching potential errors with IE and Opera
  if (!textResponse) return true;

  alert('Товар добавлен в корзину');

  return false;
 }
