function GetXmlHttpObject(target,handler)
{ 
  if (navigator.appVersion.indexOf("MSIE 6.0") >= 0)
    var objXmlHttp = new ActiveXObject('Msxml2.XMLHTTP');
  else
    var objXmlHttp = new XMLHttpRequest();

  objXmlHttp.onreadystatechange = function()
  {
    if (objXmlHttp.readyState == 4 || objXmlHttp.readyState == "complete")
    {
      //alert(objXmlHttp.responseText);  
	  try
	  {
	    document.getElementById('DebugView').value = objXmlHttp.responseText;
	  }
	  catch(e)
	  {}
	  
      if (handler == '')
	    executeScripts(objXmlHttp.responseText,target);
	  else
	    eval(handler(objXmlHttp.responseText,target));
    }
  }
  return objXmlHttp;
} 


//Führt die SCRIPT Blöcke aus
function executeScripts(r,returnDIV)
{	
	reg = '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)';
	var match = new RegExp(reg, 'img');
	var response = r.replace(match, '');
	var scripts = r.match(match);
	match2 = new RegExp(reg, 'im');

	//Die aufbereitete HTML Seite in den DIV schreiben
	document.getElementById(returnDIV).innerHTML = response;
	
    //Alle Script Blöcke ausführen
    if (scripts)
    {
      if (scripts.length != undefined)
      {
        for (var i = 0; i < scripts.length; i++)
          eval(scripts[i].match(match2)[1]);
      }
    }
}


function getHTTPContent(url,returnDIV,handler)
{
  xmlHttp = GetXmlHttpObject(returnDIV,handler);
  xmlHttp.open("GET",encodeURI(url),true);
  xmlHttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"); 
  xmlHttp.setRequestHeader("Expires", "Mon, 26 Jul 1970, 00:00:00 GMT"); 
  xmlHttp.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate"); 
  xmlHttp.setRequestHeader("Cache-Control", "post-check=0, pre-check=0"); 	
  xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  xmlHttp.setRequestHeader("Connection", "close");
  xmlHttp.send(null);
}


//Formular via POST an Server schicken
function saveHTTPContent(formID,site,div)
{	
  //Aus allen Form Elemente die Werte abholen
  formValues = getFormElements(formID);
  
  //Div leeren und Loader Animation anzeigen
  document.getElementById(div).innerHTML = '<img src="images/icons/ajax_loader.gif" class="image-loader" />';

  xmlHttp = GetXmlHttpObject(div,'');
  xmlHttp.open('POST',site,true);
  xmlHttp.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT"); 
  xmlHttp.setRequestHeader("Expires", "Mon, 26 Jul 1970, 00:00:00 GMT"); 
  xmlHttp.setRequestHeader("Cache-Control", "no-store, no-cache, must-revalidate"); 
  xmlHttp.setRequestHeader("Cache-Control", "post-check=0, pre-check=0"); 	
  xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  xmlHttp.setRequestHeader("Content-length", formValues.length);
  xmlHttp.setRequestHeader("Connection", "close");
  xmlHttp.send(formValues);
}


//Ermittelt nach einem Klick auf ein DIV dessen PixelKoordinaten
//Das DIV muss NICHT absolut positioniert sein
function getDIVCoordinates()
{
  xx =- 0;
  yy =- 0;

  if (window.event) // IE
  {
    xx = window.event.offsetX;
    yy = window.event.offsetY;
  }
  else
  {
    if(Ereignis)
	{
      if (Ereignis.target)  // Mozilla?
      {
        xx = Ereignis.pageX-Ereignis.target.x;
        yy = Ereignis.pageY-Ereignis.target.y;
      }
      else
      {
        xx = Ereignis.pageX;
        yy = Ereignis.pageY;
      }
    }
  }
  return xx + ' ' + yy;
}


//Fügt ein HTML Element dazu
function attachNode(parentNodeID,htmlElement,newNodeID,mousePos)
{
  var list = document.getElementById(parentNodeID);
  var newnode = document.createElement(htmlElement);
  newnode.setAttribute("id",newNodeID);
  
  //An Mausposition plazieren
  if (mousePos == true)
  {
    var position = mousePosition.split(" ");
    newnode.style.cssText = 'left:' + parseInt(position[0]-5) + 'px; top:' + parseInt(position[1]-5) + 'px;';
  }
  list.appendChild(newnode);
}


//Entfernt ein HTML Element
function removeNode(id)
{
  var htmlElement = document.getElementById(id);
  htmlElement.parentNode.removeChild(htmlElement);
  document.getElementById('divBlackscreen').style.display = 'none';
}


//Event hinzufügen
function addEvent(obj,type,fn)
{
  if (obj.addEventListener)
  {
    obj.addEventListener( type, fn, false );
  } 
  else if (obj.attachEvent)
  {
    obj["e"+type+fn] = fn;
    obj[type+fn] = function(){ obj["e"+type+fn]( window.event ); }
    obj.attachEvent( "on"+type, obj[type+fn] );
  }
}


//Event entfernen
function removeEvent(obj,type,fn)
{
  if (obj.removeEventListener)
  {
    obj.removeEventListener( type, fn, false );
  } 
  else if (obj.detachEvent)
  {
    obj.detachEvent( "on"+type, obj[type+fn] );
    obj[type+fn] = null;
    obj["e"+type+fn] = null;
  }
}
