/***********************************************
* Dynamic Ajax Content- (C) Dynamic Drive DHTML code library (www.dynamicdrive.com)
* This notice MUST stay intact for legal use
* Visit Dynamic Drive at http://www.dynamicdrive.com/ for full source code
* http://www.dynamicdrive.com/dynamicindex17/ajaxcontent.htm
* Erweiterungen: 
*  - Ausgabe von Status- und Fehlermeldungen, pk [03.04.2007]
*  - Uebergabe des Statustexts beim Aufruf der Funktion ajaxpage, pk [17.09.2007]
*  - Funktion evalScript fuer die Ausfuehrung von JavaScript innerhalb der mit Ajax geladenen Seite, pk [01.12.2007]
***********************************************/

var bustcachevar=1 //bust potential caching of external pages after initial request? (1=yes, 0=no)
var loadedobjects=""
var rootdomain="http://"+window.location.hostname
var bustcacheparameter=""
var errortext="<span class='error'>Fehler: Seite konnte nicht geladen werden.</span>"

function ajaxpage(url, containerid, statustext) {
  var loadstatustext="<img src='USB/img/loading.gif' style='margin:0.25em 0.7em 0 0;vertical-align:text-bottom;'/><span style='font-size:0.9em;font-style:italic;color:#666666;'>"+statustext+" ...</span>"
  var page_request = false
  if (window.XMLHttpRequest) // if Mozilla, Safari etc
    page_request = new XMLHttpRequest()
  else if (window.ActiveXObject) { // if IE
    try {
      page_request = new ActiveXObject("Msxml2.XMLHTTP")
    } catch (e) {
      try {
        page_request = new ActiveXObject("Microsoft.XMLHTTP")
      } catch (e) {}
    }
  } else
    return false
    page_request.onreadystatechange=function(){
      loadpage(page_request, containerid, loadstatustext)
    }
    if (bustcachevar) //if bust caching of external page
      bustcacheparameter=(url.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime()
      page_request.open('GET', url+bustcacheparameter, true)
      page_request.send(null)
}

function loadpage(page_request, containerid, loadstatustext) {
  if (page_request.readyState == 1) {
    document.getElementById(containerid).innerHTML=loadstatustext;
  }
  if (page_request.readyState == 4) {
    if (page_request.status==200 || window.location.href.indexOf("http")==-1) {
      document.getElementById(containerid).innerHTML=page_request.responseText;
      evalScript(document.getElementById(containerid).innerHTML);
    } else {
      document.getElementById(containerid).innerHTML=errortext;
    }
  }
}

function loadobjs() {
  if (!document.getElementById)
    return
  for (i=0; i<arguments.length; i++) {
    var file=arguments[i]
    var fileref=""
    if (loadedobjects.indexOf(file)==-1) { //Check to see if this object has not already been added to page before proceeding
      if (file.indexOf(".js")!=-1) { //If object is a js file
        fileref=document.createElement('script')
        fileref.setAttribute("type","text/javascript");
        fileref.setAttribute("src", file);
      } else 
        if (file.indexOf(".css")!=-1) { //If object is a css file
          fileref=document.createElement("link")
          fileref.setAttribute("rel", "stylesheet");
          fileref.setAttribute("type", "text/css");
          fileref.setAttribute("href", file);
        }
      }
      if (fileref!="") {
        document.getElementsByTagName("head").item(0).appendChild(fileref)
        loadedobjects+=file+" " //Remember this object as being already added to page
      }
   }
}

function evalScript(scripts) { 
  try { 
    if (scripts != '') { 
      var script = "";
      scripts = scripts.replace(/&amp\;/gi, "&");
      scripts = scripts.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi, function() {
                  if (scripts !== null) script += arguments[1] + '\n';
                  return '';});
      if (script) (window.execScript) ? window.execScript(script) : window.setTimeout(script, 0);
    }
    return false;
  } catch (e) { 
    alert (e);
  }
}

