/*******************************************************************************
 * by MF - AJAX Script  V1.1                                          Aug.2010 *
 *                                                                             *
 * Kompatibilität                                                              *
 *   - IE ab 4.0                                                               *
 *   - Firefox ab 1.0                                                          *
 *   - Mozilla ab 1.3                                                          *
 *   - Safari ab 1.2                                                           *
 *   - Opera ab 7.6                                                            *
 *   - Netscape ab 7.1                                                         *
 *                                                                             *
 * zu Beachtende Nachteile beim Einsatz von AJAX:                              *
 *  - Javascript muss beim Client aktiviert sein                               *
 *  - Browser - Rückwärtsbutton geht nicht richtig                             *
 *  - Browser - Bookmarks zu einer Seite (Objektzustand) nicht möglich         *
 *  - fehlende Feedbacks - Sanduhr / wartezeitanzeige muss Manuell geschehen   *  
 *                                                                             *
 *  macheHTTPRequest(requestParams,Target,Call)                                *
 *  - requestParams: '$_POST Variable'                                         *
 *    - format: key=value&key=value oder Funktion welche dieses format liefert *
 *      (Optional wenn undefinded oder leer, wird Die Variablenübergabe auf    *
 *       GET gesetzt - somit ist übergabe von Varialen mithilfe der in         *
 *       call definierten URL möglich)                                         *
 *  - Target: Ziel der vom Server zurückgegebenen Information                  *
 *    - format: sring (Objekt.ID) oder Objekt (wird an innerHTML übergebn) oder*
 *              eine definierte funktion - wenn nichts angegeben wird          *
 *              default_Target als ziel genommen.                              *
 *  - Call: 'url' auf dem server - script das die Daten verarbeitet            *
 *    - format: script.php - oder inklusive GET variable script.php?id=1       *
 *                                                                             *
 *  Beispiele:                                                                 *  
 *  Aufrufen mit Default variablen                                             *
 *  - macheHTTPRequest()                                                       *
 *  - macheHTTPRequest(null,null,null)                                         *
 *                                                                             *
 *  Aufrufen mit $_POST "string" übergabe                                      *
 *  - macheHTTPRequest("post=1")                                               *
 *                                                                             * 
 *  Aufrufen mit einer $_POST "string" generierender Funktion                  *
 *  - macheHTTPRequest(leseAnmeldeForumlar)                                    *
 *    z.b. function leseAnmeldeForumlar(){return "Form=Ausgelsen"}             *
 *    (eine Variablenübergabe ist ??nicht möglich - aufruf geht nur ohne       *
 *     Klammern - ohne Klammern wird eine Referenz auf die Funktion übergeben  *
 *     mit Klammern wird die funktion usgeführt)                               *
 *                                                                             *
 *  Aufrufen mit einem String als Target (Ziel)                                *
 *  - macheHTTPRequest(null,"ausgabe")                                         *
 *    die Serverrückgabe wird ins Objekt.innerHTML mit der id='ausgabe'gesendet*
 *                                                                             *
 *  Aufrufen mit einem Objekt als Target (Ziel)                                *
 *  - macheHTTPRequest(null,this)                                              *
 *  - macheHTTPRequest(null,document.getElementById("ausgabe"))                *
 *    die Serverrückgabe wird ins Objekt.innerHTML des übergebenen obejkts     *             
 *    gesendet                                                                 *
 *                                                                             *
 *  Aufrufen mit einer Funktion als Ziel, die übergebene Rückgabe              *
 *   weiterverarbeitet                                                         *
 *  - macheHTTPRequest(null,verarbeitedaten)                                   *
 *    die Serverrückgabe wird an die Funktion verarbeitedaten übergeben        *
 *    bsp:                                                                     *
 *      function verarbeitedaten(serverantwort){                               *
 *        .. mach irgendwas damit                                              *
 *      }                                                                      *
 *                                                                             *
 *******************************************************************************/ 

/*******************************************************************************
 * macheHTTPRequest("post=1",null,"var.php?12345=12345") ;)  apache macht      *
 *                                                            POST+GET         *
 *******************************************************************************/ 

/*******************************************************************************
 * nach dem Testen alle Zeilen die debug_http_request enthalten löschen oder   * 
 * auskommentieren)                                                            *
 *******************************************************************************/ 

/*******************************************************************************
 * BEISPEILE:                                                                  *
 *  var default_http_Call   = "var.php&ID="+document.getElementById("ausgabe").value*
 *  var default_http_Target = document.getElementById("ausgabe");                   *
 *  var default_http_Target = "ausgabe";
 *  var default_http_Target = function(httpAntwort) {test(httpAntwort);};;          *
 *        function test(text){                                                 *
 *          alert("test:\n"+text);                                             *
 *        }                                                                    *
 *******************************************************************************/ 


var debug_http_request    = true;    
var debug_http_request    = false;    
var default_http_Call     = "loadContent.php";
var default_http_Target   = function(httpAntwort) {ausgabe(httpAntwort);};; 
var Form_http_Target      = function(httpAntwort) {showForm(httpAntwort);};; 
var download_http_Target  = function(httpAntwort) {offerdownload(httpAntwort);};; 

var default_slide1_Target   = function(httpAntwort) {ausgabe_slide(httpAntwort,"slide1_innercontent");};; 
var default_slide2_Target   = function(httpAntwort) {ausgabe_slide(httpAntwort,"slide2_innercontent");};; 

var default_slideshow_Target   = function(httpAntwort) {ausgabe_slideshow(httpAntwort);};; 


function macheHTTPRequest(RequestParams,Target,Call) {
  document.body.style.cursor='wait';
  var Params;

  if (debug_http_request) alert("macheHTTPRequest *start*\n übergebene Parameter\n\n" + 
                                "RequestParams: "+ RequestParams + "\n" +
                                "Target: " + Target  + "\n" +  
                                "Call: " + Call);
  var method = 'POST';
  if (RequestParams == undefined) 
    {
      Params = ""; method = 'GET';
    }
  else  if (typeof(RequestParams)=='function') 
          {
            Params=RequestParams();
          }
        else 
          {
            Params=RequestParams;
          }
   
  if (Target == undefined || Target=="") Target        = default_http_Target;
 
  if (Call          == undefined) Call          = default_http_Call;
  if (debug_http_request) alert("macheRequest nach default\n\n" + 
                                "RequestParams: "+ RequestParams + "\n" +
                                "Target: " + Target  + "\n" +  
                                "Call: " + Call + "\n" +
                                "methode: " + method);
  var http_request = false;
  // window.XMLHttpRequest = Mozilla, Safari, Opera... 
  if (window.XMLHttpRequest) 
    {
      http_request = new XMLHttpRequest();
      // Mozilla Header Korrektur
      /*(Mozilla hat probleme wenn der Server seine Antwort nicht mit dem richtigen
         Header versieht) - um sicher zu gehen, Header Manuell setzen*/
/* 
        {
          http_request.overrideMimeType('text/xml');
        } */
    } 
  // window.ActiveXObject = Internet Explorer
  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('Die Anfrage an den Server ist Fehlgeschlagen');
      return false;
    }
  if (debug_http_request) alert("httpRequest next call: " + http_request + "\n method: " + method + "\n" );  
  //http_request.open(Methode, zielURL, Asynchron);
  /* Asynchron: true=mehrere Request können gleichzeitig abgearbeitet werden
                false=Script Stopt bis empfang Komplett (!!Vorsicht, bei Fehler
                in der Verarbeitung bleibt bei false das Script komplett haengen)*/ 
  http_request.open(method, Call, true);
  if (debug_http_request) alert("request.open ausgeführt");
  //http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=iso-8859-1");
  http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
  http_request.setRequestHeader("Content-length", Params.length);
  http_request.setRequestHeader("Connection", "close");
  /* Aufruf über Function anstatt direkt -show-, ermglicht Parameterübergabe an Show
     Vorteil: Objekt http_request ist nicht Gloabal und kann somit nicht von einem
     weiteren macheRequest überschrieben werden */  
  if (debug_http_request) alert("header gesendet");
    http_request.onreadystatechange = function() {httpResponse(http_request,Target);};;
  if (debug_http_request) alert("onreadychange zugewiesen");
  http_request.send(Params);
  if (debug_http_request) alert("macheHTTPRequest *end*");  
}

/*******************************************************************************/
/*******************************************************************************/
function httpResponse(http_request,Target) 
{
  /* readystates:
        0 nicht initialisiert
        1 lade
        2 geladen
        3 interaktiv
        4 vollständig (vollständig geladen - alle Daten erhalten)   */
  if (http_request.readyState == 4) 
    {
      if (debug_http_request) alert("httpResponse *start*");
        
      /* status
            200 OK
            404 nicht gefunden
            500 internal server error
            ......                                                  */
      if (http_request.status == 200) 
        {
          //alert("httpResponse Status OK\n" + http_request.responseText);
          if (debug_http_request) alert("httpResponse Status OK\n" + http_request.responseText);
          if (debug_http_request) alert("call (type): " + typeof(Target));
          if (typeof(Target)=='function') Target( http_request.responseText ); 
          if (typeof(Target)=='string'  ) document.getElementById(Target).innerHTML = http_request.responseText; 
          if (typeof(Target)=='object'  ) Target.innerHTML = http_request.responseText;
        } 
      else
        {
          if (debug_http_request) alert("macheRequest status<>OK : "+http_request.status);
          alert('Ihre Anfrage konnte nicht ausgeführt werden');
        }  
      document.body.style.cursor='default';
    }// end of if readystate==4   
}// end of function show


//************************* PROJECT INDIVIDUAL CODE ****************************

function ausgabe(responseText)
	{ 
		if (debug_http_request) alert("function ausgabe");
      if (responseText.indexOf("<!--IMG")>=0)
        { 
          pos1= responseText.indexOf("<!--IMG");
          pos2= responseText.indexOf("IMG-->",pos1+1);
          tmptxt=responseText.slice(pos1,pos2+6);
          responseText=responseText.slice(0,pos1)+responseText.slice(pos2+6);
          tmptxt=tmptxt.slice(7,tmptxt.length-7);
          document.getElementById('background_image').src=tmptxt;
        }
      if (responseText.indexOf("<title>")>=0)
        { 
          pos1= responseText.indexOf("<title>");
          pos2= responseText.indexOf("</title>",pos1+1);
          tmptxt=responseText.slice(pos1,pos2+8);
          responseText=responseText.slice(0,pos1)+responseText.slice(pos2+8);
          tmptxt=tmptxt.slice(7,tmptxt.length-8);
          //document.getElementById('background_image').src=tmptxt;
          document.title=tmptxt;
        }
      if (responseText.indexOf("<!--LOADSLIDE-->")>=0)
        {
					  macheHTTPRequest("seite=slideshow1",default_slideshow_Target);
				}        
        
      if (responseText.indexOf("<body>")>=0)
        { 
          pos1= responseText.indexOf("<body>");
          pos2= responseText.indexOf("</body>",pos1+1);
          responseText=responseText.slice(pos1,pos2+13);
        }
		document.getElementById('content').innerHTML= responseText;
		window.clearInterval(slideshow_timer);
	}


function ausgabe_slide(responseText,conatiner)
	{ 
		//alert("slide");
		//alert(conatiner);
      if (responseText.indexOf("<body>")>=0)
        { 
          pos1= responseText.indexOf("<body>");
          pos2= responseText.indexOf("</body>",pos1+1);
          responseText=responseText.slice(pos1,pos2+13);
        }
        
	/*	responseText=responseText.replace(/typo3temp\//g,"cms/typo3temp/");   
		responseText=responseText.replace(/uploads\//g,"cms/uploads/"); */   
		document.getElementById(conatiner).innerHTML= responseText;
	}


function ausgabe_slideshow(responseText)
	{ 
	//	var slideshow_pic = new Array();
	//	var slideshow_text = new Array();
		if (responseText.indexOf("<body>")>=0)
        { 
          pos1= responseText.indexOf("<body>");
          pos2= responseText.indexOf("</body>",pos1+1);
          responseText=responseText.slice(pos1,pos2+13);
        }
      //alert(responseText);
			found=true;
			while (found)
				{
					found=false;
					//alert(responseText.indexOf("<!--SLIDESHOW-->"));
		      if (responseText.indexOf("<!--SLIDESHOW-->")>=0)
		        { 
		        	found=true;
		          pos1= responseText.indexOf("<!--SLIDESHOW-->");
		          pos2= responseText.indexOf("<!--SLIDESHOW-->",pos1+10);
		          slide_txt=responseText.slice(pos1,pos2+13);
		          responseText=responseText.slice(0,pos1)+responseText.slice(pos2+16);
		          //alert(responseText);
		          var mySplitResult = slide_txt.split("<!--SLIDESHOW-->");
							
			        pos1= mySplitResult[1].indexOf("src");
		          pos2= mySplitResult[1].indexOf("\"",pos1+5);
		          pic=mySplitResult[1].slice(pos1+5,pos2);
		          slideshow_pic.push(pic);
							//alert("aa:"+pic);
		
			        pos1= mySplitResult[1].indexOf("<h1");
			        pos1= mySplitResult[1].indexOf(">",mySplitResult[1].indexOf("<h1")+1);
		          pos2= mySplitResult[1].indexOf("</h",pos1+5);
		          text=mySplitResult[1].slice(pos1+1,pos2);
		          slideshow_text.push(text);
							//alert("bb:"+text);
		        }
				}
	 slideshow_start();
	}

var slideshow_pic = new Array();
var slideshow_text = new Array();	
var slideshow_pos=0;
var slideshow_interval=2500;
var slideshow_timer='';
function slideshow_start()
	{
			   //   alert(2);
       var newDiv = document.createElement("div");
       newDiv.id = "slideshow";
       newDiv.innerHTML= "<div id='slideshow_back' onmousedown='slideshow_changepic(\"-\");clear_autoslide();'><a href='previous' alt='vorheriges Bild' onclick='return false;'><img class='slideshow_button' alt='' src='layout_images/slideshow-arrowleft.png'/></a></div>"+
       									"<div id='slideshow_image_wrap' style=''><a href='zoom' onclick='return false' alt='Zoom'><IMG onmousedown='slideshow_show()' id='slideshow_image' src='' alt='' style='width:350px;height:250px;'></a></div>"+
       									"<div id='slideshow_next' onmousedown='slideshow_changepic(\"+\");clear_autoslide();'><a href='next' alt='nächstes Bild' onclick='return false;'><img class='slideshow_button' alt='' src='layout_images/slideshow-arrowright.png'/></a></div>"+
       									"<div id='slideshow_text'>text</div>";
      newDiv.style.visibility='hidden';
      document.getElementById('content').appendChild(newDiv);
    	newDiv.style.visibility="visible";
    	slideshow_changepic("+");	
    	slideshow_timer=setInterval('slideshow_changepic("+")',slideshow_interval);
    	
	}



function make_map_IFrame(ort)
  {
    if (document.getElementById('mapsframe'))
      {
         document.getElementById('maps').src="loadContent.php?map="+ort;
      }
    else
      {
        var newDiv = document.createElement("div");
        newDiv.id='mapsframe';
        newDiv.style.position='absolute';
//        newDiv.style.border="1px solid black";
        newDiv.style.width="400px";
        newDiv.style.height="400px";
        newDiv.style.backgroundColor ="#FFFFFF";
        newDiv.style.top="200px";
        newDiv.style.left="700px";
        newDiv.style.padding='15px';
        newDiv.style.paddingTop='30px';
        newDiv.innerHTML='<div style="position:absolute;right:20px;top:10px;cursor:pointer;" onclick="document.getElementById(\'mapsframe\').parentNode.removeChild(document.getElementById(\'mapsframe\'))">X Fenster Schliessen</div><div style="width:100%;height:100%"><iframe id="maps" width="100%" height="100%" frameborder="0" style="marguin:0px;padding:0px;" src="loadContent.php?map='+ort+'"></iframe></div>';
        document.body.appendChild(newDiv);
      }
  }
  

