
/*************************************************
* Globale Variablen
*************************************************/
var http_request = createRequestObject();
var queue        = new Array();


/*************************************************
* createRequestObject
* ------------------------------------------------
* Request-Objekt erstellen
*************************************************/
function createRequestObject() {
  var xmlhttp=false;
  /*@cc_on @*/
  /*@if (@_jscript_version >= 5)
  // JScript gives us Conditional compilation, we can cope with old IE versions.
  // and security blocked creation of the objects.
  try {
    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  }
  catch (e) {
    try {
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch (E) {
      xmlhttp = false;
    }
  }

  @end @*/


if (window.XMLHttpRequest) { // Mozilla, Safari,...
  http_request = new XMLHttpRequest();
		if (http_request.overrideMimeType) {
		  http_request.overrideMimeType('text/xml'); // zu dieser Zeile siehe weiter unten
		}
}
else if (window.ActiveXObject) { // IE 
  try {
		  http_request = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e) {
		  try {
				  http_request = new ActiveXObject("Microsoft.XMLHTTP");
				}
				catch (e) {}
		}
}

if (!http_request) {
  alert('Ihr Browser unterstützt die Suche nicht.');
		return false;
}
else return http_request;

//http_request.onreadystatechange = alertInhalt;
//http_request.open('GET', url, true);
//http_request.send(null);


/*
  if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
    try {
      xmlhttp = new XMLHttpRequest();
    }
    catch (e) {
      xmlhttp=false;
    }
  }

  if (!xmlhttp && window.createRequest) {
    try {
      xmlhttp = window.createRequest();
    }
    catch (e) {
      xmlhttp=false;
    }
  }

  return xmlhttp;
*/

}



/*********************************************************
* handleResponse - Funktion zum Abarbeiten der Antwort aufrufen
*********************************************************/
function handleResponse(respFunc) {
  if(respFunc == "handleImgZoom") handleImgZoom(http_request.responseXML);
  else                            handleImgZoom(http_request.responseXML);
}



/******************************************************************
* sendRequest
* -----------------------------------------------------------------
* Absenden eines Http-Requests
* -----------------------------------------------------------------
* url      // URL für die Anfrage
* queryString    // Daten für Post-Anfrage
*      // (var=wert;...)
* respFunc    // Funktion zur Verarbeitung der
*      // Antwort
******************************************************************/
function sendRequest(url, queryString, respFunc) {

  /* Request Daten in die Warteschlange setzen, falls der vorherige noch nicht abgeschlossen ist */
  if (http_request.readyState == 1 || http_request.readyState == 2 || http_request.readyState == 3) {
    queueLength = queue.length;
    queue[queueLength] = new Array();
    queue[queueLength][0] = url;
    queue[queueLength][1] = queryString;
    queue[queueLength][2] = respFunc;

    //showHideLoader(true);
  }

  else {
    if(queryString == "") {
      http_request.open('GET', url, true);
    }
    else {
      http_request.open('POST', url, true);
      http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
      http_request.send(queryString);
    }

    http_request.onreadystatechange = function() {
      if(http_request.readyState == 2) {
        //showHideLoader(true);
      }

      if(http_request.readyState == 4) {
        if(http_request.status == 200) {
          // Funktion handleResponse muss in js-Datei (bsp. ajax_research.js) des jeweiligen Moduls vorhanden sein
          handleResponse(respFunc);
        }
        else if(http_request.status == 404) {
          alert('Bei dem Request ist ein Problem aufgetreten: 404');
          //showHideLoader(false);
        }
      }

      /* Warteschlange abarbeiten */
      queueLength = queue.length;
      if(queueLength != 0) {
        sendRequest(queue[0][0], queue[0][1], queue[0][2]);
        queue.shift(); //Erstes Element entfernen, den Rest eine Position nach vorne rücken
      }
    };

    if(queryString == "") {
      http_request.send(null);
    }
  }
}


/*************************************************
* showHideLoader
* Loader ein-, ausblenden
*************************************************/
function showHideLoader(loaderOn) {
  var loaderbox = "loader";
  var vis       = (loaderOn == true ? 'visible' : 'hidden');
  var mode      = (loaderOn == true ? 'inline' : 'none');
  if (document.getElementById(loaderbox)) document.getElementById(loaderbox).style.display = mode;
  //ShowHideDuplex(mode);
}


function FilterScrollBoxTimeOut(id) {

  var CompBox     = "CompBox" + id;
  var chbox       = "rubric" + id;
  var querybox    = "search" + id;
  var query       = document.getElementById(querybox).value.toLowerCase();
  var loaderbox   = "loader" + id;

  if (query.length >= 0) {
    for (var i=0;i<document.eform2.elements.length;i++) {
      var e      = document.eform2.elements[i];
      if ( (e.name.substr(0,7) == chbox) && (e.type=="checkbox") ) {
        var nr        = e.id.split("_");
        var CompBoxId = CompBox+"_"+nr[1];
        if (e.title.toLowerCase().substr(0,query.length) == query) {
          document.getElementById(CompBoxId).style.display = "inline";
        }
        else {
          document.getElementById(CompBoxId).style.display = "none";
        }
      }
    }
  }
  if (document.getElementById(loaderbox)) document.getElementById(loaderbox).style.display = "none";
}


function sortByName(a, b) {
    var x = a.text.toLowerCase();
    var y = b.text.toLowerCase();
    return ((x < y) ? -1 : ((x > y) ? 1 : 0));
}

function ShowHideDuplex(mode) {
  var wid1 = "waitduplex";
  var wid2 = "waitmsg";
  var vis  = (mode == 'none' ? 'visible' : 'hidden');

  if (document.getElementById(wid1)) document.getElementById(wid1).style.display = mode;
  if (document.getElementById(wid2)) document.getElementById(wid2).style.display = mode;


}



/*********************************************************
* MakeImgZoom - Ziel und Img definieren
*********************************************************/
function MakeImgZoom(container,img,what,size,id) {
  showHideLoader(true);
  // Auswahl abfragen
  var searchvar = "container="+container+"&img="+img+"&what="+what+"&size="+size+"&id="+id;
  sendRequest("../scripts/ajax_MakeImgZoom.php",searchvar,"handleImgZoom");
}


/*************************************************
* handleImgZoom
* ------------------------------------------------
* Neues Bild schreiben
*************************************************/
function handleImgZoom(respData) {
  var container   = respData.getElementsByTagName("container")[0].childNodes[0].nodeValue;
  var img         = respData.getElementsByTagName("img")[0].childNodes[0].nodeValue;
  var name        = respData.getElementsByTagName("name")[0].childNodes[0].nodeValue;
  var text        = respData.getElementsByTagName("text")[0].childNodes[0].nodeValue;
  if (document.getElementById(container)) document.getElementById(container).innerHTML = img;
  if (document.getElementById('SubHeadline') && name != "") document.getElementById('SubHeadline').innerHTML = name;
  if (document.getElementById('TextContainer') && text != "") document.getElementById('TextContainer').innerHTML = text;
  showHideLoader(false);
}


