﻿/********************************************************************************************************
/*
/* Вспомогательные фуккции для работы AJAX вызовов
/*
/**/


/********************************************************************************************************
/* Создает и возвращает пригодный к использованию DOM документ
/* 
/* @param XML string необязательный параметр, заполнение для документа, если оно надо
/*/

function CreateXmlDoc(xml)
{
  if (window.ActiveXObject)
  {
    var xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
    xmlDoc.async=false;
    if(xml) xmlDoc.loadXML(xml);
    return xmlDoc;
  }
  
  if (document.implementation && document.implementation.createDocument)
  {
    if(xml)
    {
      var parser=new DOMParser();
      return parser.parseFromString(text,"text/xml");
    }

    return document.implementation.createDocument("","",null);
  }
  else
  {
    return null;
  }
}

/********************************************************************************************************
/* Создает и возвращает пригодный к использованию XmlHttp
/*
/*/
function CreateXmlHttp()
{
  if (window.XMLHttpRequest)
  {
    return new XMLHttpRequest();
  }
  else if (window.ActiveXObject)
  {
    return new ActiveXObject("Microsoft.XMLHTTP")
  }
  
  return null;
}


/********************************************************************************************************
/* Подрезает строку - полезно бывает
/*
/**/
function Trim(str)
{
  return str.replace(/^\s*/ig,"").replace(/\s*$/ig,"");
}

/********************************************************************************************************
/* Производит ансинхронный вызов функции, бывает полезно
/*
/**/
function AsyncCall(func)
{
  setTimeout(func, 10);
}

/********************************************************************************************************
/* Ээээ - вроде создает чилда в ДОМ документе - вобщем гдето использыется - пусть будет
/*
/**/
function SetElementText(parent, tag, text)
{
  var velem = parent.ownerDocument.createElement(tag);
  velem.text = text;
  parent.appendChild(velem);
}



/********************************************************************************************************
/* 
/*  УСТАРЕВШИЕ ВЫЗОВЫ - ПОЛЬЗУЕМ ОБЬЕКТ AJAX
/*
/********************************************************************************************************/



/********************************************************************************************************
/* Производит прямой вызов - устаревшая 
/*
/**/
function SendRequestXML(URL, isPost, postbody, showError)
{
  var xmlhttp = CreateXmlHttp();
  xmlhttp.open((isPost)?"POST":"GET", URL, false);
  xmlhttp.setRequestHeader("RequestTarget","XmlService");
  if((isPost) && (postbody))
  {
		xmlhttp.send(postbody);
	}
	else
	{
		xmlhttp.send();
	}
  
  if((showError) && (xmlhttp.status != 200))
	{
	  alert("Ошибка выполнения: " +xmlhttp.statusText);
	  return null;
	}
	
  if(xmlhttp.status != 200)
  {
	  return null;
	}

  var xmlDoc = CreateXmlDoc(xmlhttp.responseText);

	if(xmlDoc.parseError.errorCode != 0) 
	{
		var myErr = xmlDoc.parseError;
//		alert("You have error " + myErr.reason);
		return null;
	}
  return xmlDoc;
}


/********************************************************************************************************
/* Производит прямой вызов - устаревшая 
/*
/**/
function SendRequestText(URL, isPost, postbody, showError)
{
  var xmlhttp = CreateXmlHttp();
  xmlhttp.open((isPost)?"POST":"GET", URL, false);
  xmlhttp.setRequestHeader("RequestTarget","XmlService");

  if((isPost) && (postbody))
  {
		xmlhttp.send(postbody);       
	}
	else
	{
		xmlhttp.send();
	}

  if((showError) && (xmlhttp.status != 200))
	{
	  alert("Ошибка выполнения: " +xmlhttp.statusText);
	  return null;
	}
	
  if(xmlhttp.status != 200)
  {
	  return null;
	}
 
  return xmlhttp.responseText;
}