//------------------------------------------------------------------------------
//
//     Description: basic functions to use ajax technology
//
//     30.05.08 TK: created
//
//------------------------------------------------------------------------------

var httpRequest = getXMLHttpRequest();
var debug       = false;
var debugLevel  = 4;


//------------------------------------------------------------------------------
//   logging
//------------------------------------------------------------------------------

function logDebug(level,description,value)
{
  if (debug && debugLevel <= level)
  {
    alert(level + " - " + description + ": " + value);
  }
}


//------------------------------------------------------------------------------
//   get the XMLHttpRequest object according to the used browser
//------------------------------------------------------------------------------

function getXMLHttpRequest()
{
  var httpRequest = false;
  if (window.XMLHttpRequest) 													// oder if (typeof(XMLHttpRequest) != 'undefined')
  {
    // Mozilla, Opera, Safari sowie Internet Explorer 7
    httpRequest = new XMLHttpRequest();
    if (httpRequest.overrideMimeType)											// default mime type festlegen
    {
      httpRequest.overrideMimeType('text/html');
    }
  }
  else if (window.ActiveXObject) 												// oder if (!httpRequest) ohne else
  {
    try      
    { 
      // Internet Explorer 6 und älter
      httpRequest  = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch(e) 
    { 
      try
      {
        // alte IE Versionen
        httpRequest  = new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
      catch(e)
      {
        httpRequest  = false;
      }
    }
  }
  else
  {
    httpRequest = false;
  }
  return httpRequest;
}


//------------------------------------------------------------------------------
//   get key value pairs from a key1=value1&key2=value2&... string
//------------------------------------------------------------------------------

function getKeyValueField(data)
{
  var result = new Object();
  var aTemp  = data.split("&");
  for (var i=0;i<aTemp.length;i++)
  {
    var aEntry = aTemp[i].split("=");
    result[aEntry[0]] = decodeURIComponent(aEntry[1]);
    logDebug(1,"getKeyValueField() " + aEntry[0],result[aEntry[0]])
  }
  return result;
}


//------------------------------------------------------------------------------
//   write the form values in a key1=value1&key2=value2&... string
//------------------------------------------------------------------------------

function getFormValues(form)
{
  var form_content = "";
  for (var i=0;i<form.elements.length;i++)
  {
//    logDebug(1,"getFormValues() form.elements["+i+"]",form.elements[i].type + "/" + form.elements[i].name + "/" + form.elements[i].value);
    switch(form.elements[i].type)
    {
      case "radio":
      case "checkbox":    if (form.elements[i].checked == true)
                            form_content += form.elements[i].name + "=" + encodeURIComponent(form.elements[i].value) + "&";
                          break;
      case "select-multiple": break; // need some code here!!!
      case "text":
      case "textarea":
      case "select-one":
      case "hidden":
      case "password":
      default:            form_content += form.elements[i].name + "=" + encodeURIComponent(form.elements[i].value) + "&";
                          break;
    }
  }
  form_content = form_content.substr(0,(form_content.length - 1));
  return form_content;
}


//------------------------------------------------------------------------------
//   not used at the moment
//------------------------------------------------------------------------------

function getRights()
{
  alert("getRights(): ")
  if (httpRequest)
  {
    if (typeof netscape != 'undefined' &&
        typeof netscape.security != 'undefined' &&
        typeof netscape.security.PrivilegeManager != 'undefined')
    {
      netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');
    }
    httpRequest.open('GET','http://localhost/javascript/test2005062301.xml', true);
    httpRequest.onreadystatechange = 
      function ()
      {
        if (httpRequest.readyState == 4)
        {
          if (typeof netscape != 'undefined' &&
              typeof netscape.security != 'undefined' &&
              typeof netscape.security.PrivilegeManager != 'undefined')
          {
            netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');
          }
          netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');
          // access responseXML here
          alert(httpRequest.responseXML.getElementsByTagName('*').length);
        }
      };
    httpRequest.send(null);
  }
}
