function createXMLHttpRequest() {
  var xmlReq = false;
  // branch for native XMLHttpRequest object
  if(window.XMLHttpRequest) {
    try {
      xmlReq = new XMLHttpRequest();
    } catch(e) {
      xmlReq = false;
    }
  // branch for IE/Windows ActiveX version
  } else if(window.ActiveXObject) {
    try {
      xmlReq = new  ActiveXObject("Msxml2.XMLHTTP");
    } catch(e) {
      try {
        xmlReq = new  ActiveXObject("Microsoft.XMLHTTP");
      } catch(e) {
        xmlReq = false;
      }
    }
  }
  return xmlReq;
}

var userAgent = { };
userAgent.isAJAX  = (createXMLHttpRequest()?true:false);
userAgent.isMozilla  = (navigator.userAgent.match(/\bGecko\b/));
userAgent.isOpera  = (navigator.userAgent.match(/\bOpera\b/));
userAgent.isInternetExplorer  =
  (navigator.userAgent.match(/\bMSIE\b/) && !userAgent.isOpera);
  
function callServer(method, url, data, dataType, func, arg) {
  if (!method) method='GET';
  var xmlReq = createXMLHttpRequest();
  if(xmlReq) {
    xmlReq.onreadystatechange = function() {
      // only if xmlReq shows "loaded"
	  if (arg=="cartInnerHTML"){
	  	document.getElementById(arg).style.display = 'none'; 
	  	document.getElementById("cartLoading").style.display = 'block';
	  }else if (arg.indexOf("descInnerHTML")>-1){
		i=arg.substr("descInnerHTML".length,arg.length-"descInnerHTML".length);
		document.getElementById(arg).style.display = 'none'; 
	  	document.getElementById("descLoading"+i).style.display = 'block';
	  }
	if (xmlReq.readyState == 4) {
        func(arg, xmlReq.responseText,  xmlReq.responseXML,
             xmlReq.status, xmlReq.statusText);
      }
    };
    xmlReq.open(method, url, true);
    if (data) {
      if (!dataType) dataType='application/xml';
      if (typeof(data)!="string" && dataType.indexOf("charset=")<0
           && userAgent.isMozilla) dataType=dataType+';charset=utf-8';
           // in Mozilla XML always serialized as UTF-8
      xmlReq.setRequestHeader('Content-Type', dataType);
    }
    xmlReq.send(data);
    return false;
  }
  xmlReq=null;
  return true;
}

function serverAnswer(element, responseText, responseXML, statusCode, statusText) {
  
  if (statusCode==200 || statusCode==201) {
   	if (element=="cartInnerHTML"){
		document.getElementById(element).style.display = 'block'; 
	  	document.getElementById("cartLoading").style.display = 'none';
		document.getElementById(element).innerHTML=responseText;
	}else if (element.indexOf("descInnerHTML")>-1){
		i=element.substr("descInnerHTML".length,element.length-"descInnerHTML".length);
		document.getElementById(element).style.display = 'block'; 
	  	document.getElementById("descLoading"+i).style.display = 'none';
		document.getElementById(element).innerHTML=responseText;
	}else{
		document.getElementById(element).style.display='none';
	}
	
  }
  else {
    alert("Загрузить информацию не  удалось: "
          +statusText);
  }
}

