/*
AJAX-spezifische Merkzettel-Funktionen:
mz_requestXyz(): Stellt den Request zum PHP-Script her.
mz_responseXyz(): Wertet die Rückgabe des PHP-Scriptes aus und führt weitere Funktionen aus.
*/

// Wenn true, dann werden alle XML-Rückgaben des AJAX im FrontEnd ausgegeben!
var gbDebug = 0;

// globaler ID-Wert für derzeitiges Angebot
var gsAngebotId = '';
var giAngeboteAusgeblendetContent = 0;

// ########## ADD ANGEBOTE ##########

function mz_requestAddAngebot(sAngebotId, sSearchtype, sPreis)
{
	gsAngebotId = sAngebotId;
	var oAjax = new Ajax.Request(
		'/container/mz/add_angebot.asp', 
		{
			method:'post',
			postBody:'sAngebotId='+ sAngebotId +'&sSearchtype='+ sSearchtype +'&sSessionId='+ getSessionId() + '&sPreis=' + sPreis,
			onComplete:mz_responseAddAngebot,
			onFailure:mz_handleAjaxError
		}
	);
}

function mz_responseAddAngebot(oResponse)
{
  if( gbDebug == 1 )
    alert(unescape(oResponse.responseText));
    
	if( mz_handleError(oResponse) != 1 )
	{
		// Button updaten
		mz_requestChangeMerkenButton(gsAngebotId, 'gemerkt', '');
		
		// Anzahl der Angebote in der Anzeige updaten
		mz_requestUpdateAngeboteAnzahl();
		
		mz_requestChangeTextMeinMerkzettel();
		
		// Anzeige der Angebote links im Context aktualisieren
		mz_requestUpdateContextAngebote();
	}
	
	mz_requestChangeDisplayState(1);
}

// ########## UPDATE ANGEBOTE ANZAHL ##########

function mz_requestUpdateContextAngebote()
{
	var oAjax = new Ajax.Request(
		'/container/mz/update_context_angebote.asp', 
		{
			method:'post',
			postBody:'sSessionId='+ getSessionId(),
			onComplete:mz_responseUpdateContextAngebote,
			onFailure:mz_handleAjaxError
		}
	);
}

function mz_responseUpdateContextAngebote(oResponse)
{
  if( gbDebug == 1 )
    alert(unescape(oResponse.responseText));

	var oMerkzettel = oResponse.responseXML.getElementsByTagName('oMerkzettel');
	var sHtml = unescape(oMerkzettel[0].getElementsByTagName('sHtml')[0].firstChild.data);

	$('mz-scroller').innerHTML = sHtml;
}



// ########## UPDATE ANGEBOTE ANZAHL ##########

function mz_requestUpdateAngeboteAnzahl()
{
	var oAjax = new Ajax.Request(
		'/container/mz/get_angebote_anzahl.asp', 
		{
			method:'post',
			postBody:'sSessionId='+ getSessionId(),
			onComplete:mz_responseUpdateAngeboteAnzahl,
			onFailure:mz_handleAjaxError
		}
	);
}

function mz_responseUpdateAngeboteAnzahl(oResponse)
{
  if( gbDebug == 1 )
    alert(unescape(oResponse.responseText));

	var oMerkzettel = oResponse.responseXML.getElementsByTagName('oMerkzettel');
  var iAnzahlAngebote = unescape(oMerkzettel[0].getElementsByTagName('iAnzahlAngebote')[0].firstChild.data);

	$('mz-gemerkt-anzahl').innerHTML = iAnzahlAngebote;
}

// ########## TEXT BEI 'MEIN MERKZETTEL'  ##########

function mz_requestChangeTextMeinMerkzettel()
{
	var oAjax = new Ajax.Request(
		'/container/mz/change_text_mein_merkzettel.asp', 
		{
			method:'post',
			postBody:'sSessionId='+ getSessionId(),
			onComplete:mz_responseChangeTextMeinMerkzettel,
			onFailure:mz_handleAjaxError
		}
	);
}

function mz_responseChangeTextMeinMerkzettel(oResponse)
{
  if( gbDebug == 1 )
    alert(unescape(oResponse.responseText));

	var oMerkzettel = oResponse.responseXML.getElementsByTagName('oMerkzettel');
	var sHtml = unescape(oMerkzettel[0].getElementsByTagName('sHtml')[0].firstChild.data);

	$('mz-mein-merkzettel').innerHTML = sHtml;
}

// ########## UPDATE ANZAHL DER MARKIERTEN ANGEBOTE ##########

function mz_requestUpdateMarkierteAngeboteAnzahl()
{
	var oAjax = new Ajax.Request(
		'/container/mz/get_markierte_angebote_anzahl.asp', 
		{
			method:'post',
			postBody:'sSessionId='+ getSessionId(),
			onComplete:mz_responseUpdateMarkierteAngeboteAnzahl,
			onFailure:mz_handleAjaxError
		}
	);
}

function mz_responseUpdateMarkierteAngeboteAnzahl(oResponse)
{
  if( gbDebug == 1 )
    alert(unescape(oResponse.responseText));

	var oMerkzettel = oResponse.responseXML.getElementsByTagName('oMerkzettel');
  var iAnzahlAngebote = unescape(oMerkzettel[0].getElementsByTagName('iAnzahlAngebote')[0].firstChild.data);

	$('mz-markiert-anzahl').innerHTML = iAnzahlAngebote;
}

// ########## Bildwechechsel merken auf gemerkt (und umgekehrt) ##########

function mz_requestChangeMerkenButton(sAngebotId, sTo, sSearchtype)
{
	var oAjax = new Ajax.Request(
		'/container/mz/change_button.asp', 
		{
			method:'post',
			postBody:'sTo='+ sTo +'&sAngebotId='+ sAngebotId +'&sSearchtype='+ sSearchtype +'&sSessionId='+ getSessionId(),
			onComplete:mz_responseChangeMerkenButton,
			onFailure:mz_handleAjaxError
		}
	);
}

function mz_responseChangeMerkenButton(oResponse)
{
  if( gbDebug == 1 )
    alert(unescape(oResponse.responseText));

	var oMerkzettel = oResponse.responseXML.getElementsByTagName('oMerkzettel');
	var sTo = oMerkzettel[0].getElementsByTagName('sTo')[0].firstChild.data;
	var sAngebotId = oMerkzettel[0].getElementsByTagName('sAngebotId')[0].firstChild.data;
	var sImageHtml = unescape(oMerkzettel[0].getElementsByTagName('sImageHtml')[0].firstChild.data);

	$('mz_merken_'+sAngebotId).innerHTML = sImageHtml;
}

// ########## Angebot auf markiert setzen (oder nicht markiert) ##########

function mz_requestMark(sAngebotId, sTo)
{
	var oAjax = new Ajax.Request(
		'/container/mz/mark_angebot.asp', 
		{
			method:'post',
			postBody:'sTo='+ sTo +'&sAngebotId='+ sAngebotId +'&sSessionId='+ getSessionId(),
			onComplete:mz_responseMark,
			onFailure:mz_handleAjaxError
		}
	);
}

function mz_responseMark(oResponse)
{
  if( gbDebug == 1 )
    alert(unescape(oResponse.responseText));

if( mz_handleError(oResponse) != 1 )
	{
	var oMerkzettel = oResponse.responseXML.getElementsByTagName('oMerkzettel');
	var sAngebotId = unescape(oMerkzettel[0].getElementsByTagName('sAngebotId')[0].firstChild.data);
	
  if( sAngebotId != 'all' )
  {
    var sHtml = unescape(oMerkzettel[0].getElementsByTagName('sHtml')[0].firstChild.data);
    $('mz-div-but-mark-'+ sAngebotId).innerHTML = sHtml;
  }
  else
  {
    mz_requestChangeMarkAllButton();
    
    // Anzeige der Angebote links im Context aktualisieren
    mz_requestUpdateContextAngebote();
  }
  
  mz_requestUpdateMarkierteAngeboteAnzahl();
}
}


// ########## UPDATE COOKIE STATE ##########

function mz_requestUpdateCookieState()
{
	var oAjax = new Ajax.Request(
		'/container/mz/update_cookie_state.asp', 
		{
			method:'post',
			postBody:'sSessionId='+ getSessionId(),
			onComplete:mz_responseUpdateCookieState,
			onFailure:mz_handleAjaxError
		}
	);
}

function mz_responseUpdateCookieState(oResponse)
{
  if( gbDebug == 1 )
    alert(unescape(oResponse.responseText));

	var oMerkzettel = oResponse.responseXML.getElementsByTagName('oMerkzettel');
	var sHtml = unescape(oMerkzettel[0].getElementsByTagName('sHtml')[0].firstChild.data);

	$('mz-30tage-speichern').innerHTML = sHtml;
}

// ########## MARKIERTE MERKZETTEL-ANGEBOTE LÖSCHEN ##########

function mz_requestRemoveAngebote(bMerkzettelView, iAngebotePerPage)
{
  var oAjax = new Ajax.Request(
  	'/container/mz/remove_angebote.asp', 
  	{
  		method:'post',
  		postBody:'sSessionId='+ getSessionId() +'&bMerkzettelView='+ bMerkzettelView +'&iAngebotePerPage='+ iAngebotePerPage,
  		onComplete:mz_responseRemoveAngebote,
  		onFailure:mz_handleAjaxError
  	}
  );
}

function mz_responseRemoveAngebote(oResponse)
{
  if( gbDebug == 1 )
    alert(unescape(oResponse.responseText));
    
  if( mz_handleError(oResponse) != 1 )
	{
    var oMerkzettel = oResponse.responseXML.getElementsByTagName('oMerkzettel');
  	var bRemoved = unescape(oMerkzettel[0].getElementsByTagName('bRemoved')[0].firstChild.data);
    var bMerkzettelView = unescape(oMerkzettel[0].getElementsByTagName('bMerkzettelView')[0].firstChild.data);
  	var iAngebotePerPage = unescape(oMerkzettel[0].getElementsByTagName('iAngebotePerPage')[0].firstChild.data);
  	
  	if( bRemoved == 'true' )
  	{
  	    
      var sRemovedAngebote = unescape(oMerkzettel[0].getElementsByTagName('sRemovedAngebote')[0].firstChild.data);
  
      // Angebote im Content-Bereich aktualisieren
      var aAngebote = sRemovedAngebote.split(",");
      
      var iAngebote = aAngebote.length;
  
      if( iAngebote > 0 )
      {
        for( var iCounter = 0; iCounter < iAngebote; iCounter = iCounter + 2 )
        {
          if( bMerkzettelView == 'true' )
          {
			  document.location.reload();
			  /*
            // Angebote im Content-Bereich entfernen
            if( $('angebot-'+ aAngebote[iCounter]) )
            {
              $('angebot-'+ aAngebote[iCounter]).style.display = 'none';
              giAngeboteAusgeblendetContent++;
            }

            // wenn Angebote alle dieser Seite ausgebelndet wurden, dann auch die Seitennavigation
            // ausblenden
            if( giAngeboteAusgeblendetContent == iAngebotePerPage )
            {
              // entweder Reload
              document.location.reload();
              
              // ODER Ausblenden der Navi
              // Suchnavigation und Abschlusslinie ausblenden
              if( $('suchnavioben') )
                $('suchnavioben').style.display = 'none';
              
              if( $('suchnaviunten') )
                $('suchnaviunten').style.display = 'none';
              
              if( $('abschluss') )
                $('abschluss').style.display = 'none';
            }*/
          }
          else
          {
            if( $('mz_merken_'+ aAngebote[iCounter] ) )
              mz_requestChangeMerkenButton(aAngebote[iCounter], 'merken', aAngebote[iCounter+1]);
          }
        }
      }
  	}
  	document.location.reload();
    // Anzeige der Angebote links im Context aktualisieren
    mz_requestUpdateContextAngebote();
  
    // anzahl der Angebote aktualisieren
    mz_requestUpdateAngeboteAnzahl();
    
	mz_requestChangeTextMeinMerkzettel();
    
    // Anzahl der markierten Angebote aktualisieren
    mz_requestUpdateMarkierteAngeboteAnzahl();
    
    // alle-markieren-Button aktualisieren
    mz_requestChangeMarkAllButton();
	}
}



// ########## MERKZETTEL-ANGEBOTE BEI ERSTEM SEITENAUFRUF LADEN ##########

function mz_requestUpdateMerkzettelAngebote()
{
  //alert('Angebote WERDEN aus DB gelesen');
  
  var oAjax = new Ajax.Request(
  	'/container/mz/update_merkzettel_angebote.asp', 
  	{
  		method:'post',
  		postBody:'sSessionId='+ getSessionId(),
  		onComplete:mz_responseUpdateMerkzettelAngebote,
  		onFailure:mz_handleAjaxError
  	}
  );
}

function mz_responseUpdateMerkzettelAngebote(oResponse)
{
  if( gbDebug == 1 )
    alert(unescape(oResponse.responseText));
  
  // Anzeige der Angebote links im Context aktualisieren
  mz_requestUpdateContextAngebote();
  //alert('Angebote GELESEN!!!');
}



// ########## DISPLAY-STATUS DES MERKZETTELS ÄNDERN ##########

function mz_requestChangeDisplayState(iDisplayState)
{
  var oAjax = new Ajax.Request(
  	'/container/mz/change_display_state.asp', 
  	{
  		method:'post',
  		postBody:'sSessionId='+ getSessionId() +'&iDisplayState='+ iDisplayState,
  		onComplete:mz_responseChangeDisplayState,
  		onFailure:mz_handleAjaxError
  	}
  );
}

function mz_responseChangeDisplayState(oResponse)
{
  if( gbDebug == 1 )
    alert(unescape(oResponse.responseText));

    var oMerkzettel = oResponse.responseXML.getElementsByTagName('oMerkzettel');
	var bChanged = unescape(oMerkzettel[0].getElementsByTagName('bChanged')[0].firstChild.data);
    
	// wenn der State wirklich geändert wurde
	if( bChanged == 'true' )
	{
		var iDisplayState = unescape(oMerkzettel[0].getElementsByTagName('iDisplayState')[0].firstChild.data);
		
		if( iDisplayState == '0' )
		{
			$('mz').style.display = 'none';
			if( $('direkteinstieg') )
				$('direkteinstieg').style.display = 'block';
			new Effect.BlindDown($('context-inhalt'));
			
			
		}
		else if( iDisplayState == '1' )
		{
			//$('context-inhalt').style.display = 'none';
		    $('mz').style.display = 'block';
			$('mz-beschreibung-aktionsliste').style.display = 'none';
			$('mz-beschreibung-merkzettel').style.display = 'none';
			new Effect.BlindDown($('mz-angebotsliste'));
		}
		else if( iDisplayState == '2' )
		{
			//$('context-inhalt').style.display = 'none';
		    $('mz').style.display = 'block';
			
			$('mz-beschreibung-merkzettel').style.display = 'none';
			$('mz-angebotsliste').style.display = 'none';
			new Effect.BlindDown($('mz-beschreibung-aktionsliste'));
			
		}
		else if( iDisplayState == '3' )
		{
			//$('context-inhalt').style.display = 'none';
		    $('mz').style.display = 'block';
		    
			$('mz-beschreibung-aktionsliste').style.display = 'none';
			
			$('mz-angebotsliste').style.display = 'none';
			
			new Effect.BlindDown($('mz-beschreibung-merkzettel'));
		}
		
		mz_requestChangeTextMeinMerkzettel();
		mz_requestUpdateMerkzettelAngebote();
		mz_requestUpdateAngeboteAnzahl();
		mz_requestUpdateMarkierteAngeboteAnzahl();
	}
}

// ########## INNERHALB DES MERKZETTELS NAVIGIEREN ##########

function mz_requestMoveAngebote(sDirection)
{
  if( sDirection != 'up' && sDirection != 'down' )
    sDriection = 'down';

  var oAjax = new Ajax.Request(
  	'/container/mz/move_angebote.asp', 
  	{
  		method:'post',
  		postBody:'sSessionId='+ getSessionId() +'&sDirection='+ sDirection,
  		onComplete:mz_responseMoveAngebote,
  		onFailure:mz_handleAjaxError
  	}
  );
}

function mz_responseMoveAngebote(oResponse)
{
  if( gbDebug == 1 )
    alert(unescape(oResponse.responseText));

	var oMerkzettel = oResponse.responseXML.getElementsByTagName('oMerkzettel');
	var bMoved = unescape(oMerkzettel[0].getElementsByTagName('bMoved')[0].firstChild.data);

	if( bMoved == 'true' )
	{
    // Anzeige der Angebote links im Context aktualisieren
    mz_requestUpdateContextAngebote();
	}
}



// ########## MARKIERTE ANGEBOTE BUCHEN ##########

function mz_requestBook(bMerkzettelView, sKey)
{
  var oAjax = new Ajax.Request(
  	'/container/mz/book_angebote.asp', 
  	{
  		method:'post',
  		postBody:'sSessionId='+ getSessionId() +'&bMerkzettelView='+ bMerkzettelView +'&sKey='+ sKey,
  		onComplete:mz_responseBook,
  		onFailure:mz_handleAjaxError
  	}
  );
}

function mz_responseBook(oResponse)
{
  if( gbDebug == 1 )
    alert(unescape(oResponse.responseText));

  if( mz_handleError(oResponse) != 1 )
	{
  	var oMerkzettel = oResponse.responseXML.getElementsByTagName('oMerkzettel');
  	var sLink = unescape(oMerkzettel[0].getElementsByTagName('sLink')[0].firstChild.data);

  	if( sLink.length > 0 )
  	{
      top.location.href = sLink;
  	}
	}
}


// ########## MERKZETTEL-ANGEBOTE DRUCKEN ##########

function mz_requestMerkzettelDrucken()
{
  var oAjax = new Ajax.Request(
  	'/container/mz/print_angebote.asp', 
  	{
  		method:'post',
  		postBody:'sSessionId='+ getSessionId(),
  		onComplete:mz_responseMerkzettelDrucken,
  		onFailure:mz_handleAjaxError
  	}
  );
}

function mz_responseMerkzettelDrucken(oResponse)
{
  if( gbDebug == 1 )
    alert(unescape(oResponse.responseText));

   if( mz_handleError(oResponse) != 1 )
	{
	 	var oMerkzettel = oResponse.responseXML.getElementsByTagName('oMerkzettel');
		var sDrucken = unescape(oMerkzettel[0].getElementsByTagName('sDrucken')[0].firstChild.data);
		window.open(sDrucken,'Drucken','width=745, height=650, resizable=yes, location=no, scrollbars=yes, menubar=no, status=no, toolbar=no');   
	}
}

function mz_requestMerkzettelDruckenStatistic()
{
  var oAjax = new Ajax.Request(
  	'templates/merkzettel/print_angebote_statistic.php', 
  	{
  		method:'post',
  		postBody:'sSessionId='+ getSessionId(),
  		onComplete:mz_responseMerkzettelDruckenStatistic,
  		onFailure:mz_handleAjaxError
  	}
  );
}

function mz_responseMerkzettelDruckenStatistic(oResponse)
{
}

// ########## MERKZETTEL-ANGEBOTE EMPFEHLEN ##########

function mz_requestMerkzettelEmpfehlen()
{
  var oAjax = new Ajax.Request(
  	'/container/mz/send_angebote.asp', 
  	{
  		method:'post',
  		postBody:'sSessionId='+ getSessionId(),
  		onComplete:mz_responseMerkzettelEmpfehlen,
  		onFailure:mz_handleAjaxError
  	}
  );
}

function mz_responseMerkzettelEmpfehlen(oResponse)
{
  if( gbDebug == 1 )
    alert(unescape(oResponse.responseText));

   if( mz_handleError(oResponse) != 1 )
	{
	 	var oMerkzettel = oResponse.responseXML.getElementsByTagName('oMerkzettel');
		var sEmpfehlen = unescape(oMerkzettel[0].getElementsByTagName('sEmpfehlen')[0].firstChild.data);
		window.open(sEmpfehlen,'empfehlen','width=745, height=650, resizable=yes, location=no, scrollbars=yes, menubar=no, status=no, toolbar=no');   
	}
}


// ########## MERKZETTEL-PDF erstellen ##########

function mz_requestMerkzettelKatalog()
{
  var oAjax = new Ajax.Request(
  	'/customer/templates/merkzettel/pdf_angebote.php', 
  	{
  		method:'post',
  		postBody:'sSessionId='+ getSessionId(),
  		onComplete:mz_responseMerkzettelKatalog,
  		onFailure:mz_handleAjaxError
  	}
  );
}

function mz_responseMerkzettelKatalog(oResponse)
{
  if( gbDebug == 1 )
    alert(unescape(oResponse.responseText));

   if( mz_handleError(oResponse) != 1 )
	{
	 	var oMerkzettel = oResponse.responseXML.getElementsByTagName('oMerkzettel');
		var sKatalog = unescape(oMerkzettel[0].getElementsByTagName('sKatalog')[0].firstChild.data);
		document.location.href = sKatalog;
	}
}


// ########## Bildwechechsel merken auf gemerkt (und umgekehrt) ##########

function mz_requestChangeMarkAllButton()
{
	var oAjax = new Ajax.Request(
		'/container/mz/change_markall_button.asp', 
		{
			method:'post',
			postBody:'sSessionId='+ getSessionId(),
			onComplete:mz_responseChangeMarkAllButton,
			onFailure:mz_handleAjaxError
		}
	);
}

function mz_responseChangeMarkAllButton(oResponse)
{
  if( gbDebug == 1 )
    alert(unescape(oResponse.responseText));

	var oMerkzettel = oResponse.responseXML.getElementsByTagName('oMerkzettel');
	var sHtml = unescape(oMerkzettel[0].getElementsByTagName('sHtml')[0].firstChild.data);

	$('mz-div-but-mark-all').innerHTML = sHtml;
}

// ########## ANGEBOTE IM CONTENT ANZEIGEN ##########

function mz_requestShowAngeboteContent(sContentMapid)
{
	var oAjax = new Ajax.Request(
		'/container/mz/show_angebote_content.asp', 
		{
			method:'post',
			postBody:'sSessionId='+ getSessionId() +'&sContentMapid='+ sContentMapid,
			onComplete:mz_responseShowAngeboteContent,
			onFailure:mz_handleAjaxError
		}
	);
}

function mz_responseShowAngeboteContent(oResponse)
{
  if( gbDebug == 1 )
    alert(unescape(oResponse.responseText));
   if( mz_handleError(oResponse) != 1 )
	{
	 
	 	var oMerkzettel = oResponse.responseXML.getElementsByTagName('oMerkzettel');
		var sLink = unescape(oMerkzettel[0].getElementsByTagName('sLink')[0].firstChild.data);
		
		top.location.href = sLink;
	}
}

function mz_hotelfinderUpdateMerkzettel()
{
	mz_requestUpdateContextAngebote();
	mz_requestUpdateAngeboteAnzahl();
	mz_requestChangeTextMeinMerkzettel();
	mz_requestUpdateMarkierteAngeboteAnzahl()
}

// ########## ALLGEMEINGÜLTIGE FUNKTIONEN ##########

function mz_handleError(oResponse)
{
  if( oResponse.responseXML && oResponse.responseXML.getElementsByTagName('oMerkzettel').length > 0 )
  {
  	if( oResponse.responseXML.getElementsByTagName('oMerkzettel').length > 0 )
  	{
  	  oMerkzettel = oResponse.responseXML.getElementsByTagName('oMerkzettel')
  	  
  		if( oMerkzettel[0].getElementsByTagName('error').length > 0 )
  		{
  		  
  		  oError = oMerkzettel[0].getElementsByTagName('error')
  		  
        $('mz-error').innerHTML = unescape(oError[0].getElementsByTagName('sError')[0].firstChild.data);

        if( giErrorIsVisible != 1 )
          new Effect.Appear($('mz-error'));

        var giErrorIsVisible = 1;
        
        return 1;
  		}
  	}
  }
  
	return 0;
}

function mz_handleAjaxError(oResponse)
{
	if( gbDebug == 1 )
		alert('AJAX-Request-Error: '+ oResponse.status +'/t'+ oResponse.statusText);
}