<!--
/*
XMLHttpRequest async functions
*/

// Keeps XmlHttpRequest Object
var XmlHttp = CreateXmlHttpRequestObject();

function CreateXmlHttpRequestObject() 
{
  var XmlHttp;
  try
  {
    // Create XMLHttpRequest object for browsers != IE<=6
    XmlHttp = new XMLHttpRequest();
  }
  catch(e)
  {
    // Check ActiveX objects for IE<=6 
    var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
                                     "MSXML2.XMLHTTP.5.0",
                                     "MSXML2.XMLHTTP.4.0",
                                     "MSXML2.XMLHTTP.3.0",
                                     "MSXML2.XMLHTTP",
                                     "Microsoft.XMLHTTP");
    for (var i=0; i<XmlHttpVersions.length && !XmlHttp; i++) 
    {
      try 
      { 
        XmlHttp = new ActiveXObject(XmlHttpVersions[i]);
      } 
      catch (e) {}
    }
  }
  if (!XmlHttp)
    alert("Błąd podczas tworzenia obiektu XMLHttpRequest.");
  else 
    return XmlHttp;
}

 
function SendRequest( url, idObj)
{
  if (XmlHttp)
  {
    try
    {
        this.idObj = idObj;
        XmlHttp.open("GET", url, true);
        XmlHttp.onreadystatechange = HandleRequestStateChange;
        XmlHttp.send(null);
    }
    catch (e)
    {
      alert("Nie mogę nawiązać połączenia z serwerem:\n" + e.toString());
    }
  }
}

function HandleRequestStateChange() 
{
  if (XmlHttp.readyState == 4) 
  {
    if (XmlHttp.status == 200) 
    {
     try
      {
        HandleServerResponse();
      }
     catch(e)
      {
        alert("Błąd odczytu odpowiedzi: " + e.toString());
      }
    } 
    else
    {
      alert("Pojawił się problem przy pobieraniu danych:\n" + XmlHttp.statusText);
    }
  }
}


function HandleServerResponse()
{
    var xmlResponse = XmlHttp.responseXML;
  
    if( !xmlResponse || !xmlResponse.documentElement  )
    {
        myDiv = document.getElementById(this.idObj);
        myDiv.innerHTML = XmlHttp.responseText;
    }
    else
    { 
        // Firefox errors
        var rootNodeName = xmlResponse.documentElement.nodeName;
        if (rootNodeName == "parsererror") 
            throw("Niepoprawna struktura XML:\n" + XmlHttp.responseText);
        xmlRoot = xmlResponse.documentElement;
        // Check if there is <response> element
        if (rootNodeName != "response" || !xmlRoot.firstChild)
            throw("Niepoerawna struktura XML:\n" + XmlHttp.responseText);
        type = xmlRoot.getElementsByTagName('type').item(0).firstChild.data.toString();
        if( type = 'validate' )
        {
            name = xmlRoot.getElementsByTagName('name').item(0).firstChild.data.toString();
            line = xmlRoot.getElementsByTagName('line').item(0).firstChild.data.toString();
            
            error = xmlRoot.getElementsByTagName('error').item(0).firstChild.data.toString();
            //set display=none for all div errors where name = 'errors_'+name
            var tab = document.getElementsByName('errors_'+name );
            for(i=0;i<tab.length;i++)
            {
                elem = document.getElementById( tab[i].id )
                elem.style.display = 'none';
            }
            if( error != 'false')
            {
                errorDiv = document.getElementById( 'errors['+name+']['+error+']' );
                errorDiv.style.display = 'block';
                var className = 'error';
            }
            else
            {
                var className = 'pozycja';
            }
            if( line = document.getElementById( 'line_'+line ) )
                line.className = className;
        }
    }
}

-->
