//##############################################################################################################
//Layout + Navigation
//##############################################################################################################
//--------------------------------------------------------------------------------------------------------------
//Globale Variablen definieren

//Speichert die aktuelle Navigation ID
currentNavID = '-1';

//Speicher die aktuelle SubNavigation ID
currentSubNavID = '0';

//Speichert den aktuelle Seiten Namen
currentSite = '';


//--------------------------------------------------------------------------------------------------------------
//XMLHTTP benutzen um Daten anzufordern, je nach Browser unterschiedliche Varianten vorhanden
function getXmlHttpObject(target,handler)
{ 
  //Für IE6 und älter die ActiveX XMLHTTP Methode verwenden
  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")
    {
      var strContent = objXmlHttp.responseText;	  
	  
	  //Wie weiter vorgehen?
	  if (target == '')
	    return objXmlHttp.responseText;
	  else
		executeScripts(strContent,target);
    }
  }
  return objXmlHttp;
} 



//##############################################################################################################
//Allgemeine AJAX Funktion um Daten vom Server anzufordern
//##############################################################################################################
//Eine Seite vom Server anfordern
function getHTTPContent(url,returnDIV,handler)
{
  xmlHttp = getXmlHttpObject(returnDIV,handler);
  xmlHttp.open("GET", 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);
}


//Die aufbereitete HTML Seite an den Browser schicken
function receiveHTTPContent() 
{ 
  if (xmlHttp_Content.readyState == 4 || xmlHttp_Content.readyState == "complete")
	executeScripts(xmlHttp_Content.responseText,returnDIV);
} 


//Formular via POST an Server schicken
function saveHTTPContent(formID,site,div)
{	
  //Aus allen Form Elemente die Werte abholen
  formValues = getFormElements(formID);  
  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);
}


//Führt die SCRIPT Blöcke aus
function executeScripts(r,target)
{	
  //Script Blöcke mittels RegEx ermitteln
  var 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');  

  document.getElementById(target).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]);
	}
  }
  
  //Das DIV sichtbar schalten
  document.getElementById(target).style.visibility = 'visible';
  document.getElementById(target).style.zIndex = 99;
}



//########################################################################################################################
// HTML Struktur dynamisch verändern
//########################################################################################################################
//Fügt dynamisch ein HTML Element dazu
function attachNode(parentNodeID,htmlElement,newNodeID,positionTyp,width,height)
{
  var list = document.getElementById(parentNodeID);
  var newnode = document.createElement(htmlElement);
  newnode.setAttribute("id",newNodeID);
  
  //Mittig auf dem Bildschirm
  if (positionTyp == 'center')
  {
	var cssLeft = (document.body.offsetWidth-width)/2;
	var cssTop = ((document.body.offsetHeight-height)/2);
	newnode.style.cssText = 'display:none; width:' + width + 'px; height:' + height + 'px; left:' + cssLeft + 'px; top:' + cssTop + 'px;';
  }

  //An Mausposition plazieren  
  if (positionTyp == 'mouse')
  {
    var position = mousePosition.split(" ");
    newnode.style.cssText = 'display:none; left:' + parseInt(position[0]-5) + 'px; top:' + parseInt(position[1]-5) + 'px;';
  }

  //Normal plazieren
  if (positionTyp == 'standard')
  {
    newnode.style.cssText = 'display:none;';
  }

  list.appendChild(newnode);
  return newnode;
}

//Entfernt dynamisch ein HTML Element
function removeNode(id)
{
  var htmlElement = document.getElementById(id);
  htmlElement.parentNode.removeChild(htmlElement);
}



//########################################################################################################################
// Event Handling
//########################################################################################################################
//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;
   }
}

