/**********************************************************************************
* WLW - JavaScript
* Autocompleteanzeige / Autovorschlaege
*
* bearbeitet von: ermi02 22.01.2009
*
*********************************************************************************/

// globale Variable
var boolAnzeigeAutocomplete; // true = Autocomplete einblenden, false = kein Autocomplete
var boolErstanzeige = true;

var currentSuchfeld = "";
var currentSuchhinweisfeld = "";
var currentEinblendtext = "";
var currentAusblendtext = "";
var currentResultClass = "ac_results"; // Hinweis: muss in der autovorschlag.css hinterlegt sein!

function autocompleteAusfuehren(strAnzeigeModus, strSuchfeld, strAusblendentext, strEinblendentext, strSuchhinweisfeld, strResultClass, strStatistikLink) {
	currentSuchfeld = "#"+strSuchfeld;
	currentSuchhinweisfeld = "#"+strSuchhinweisfeld;
	currentEinblendtext = strEinblendentext;
	currentAusblendtext = strAusblendentext;
	currentResultClass = "."+strResultClass; // Hinweis: muss in der autovorschlag.css hinterlegt sein!
	
	$().ready(function () {
		  $(currentSuchfeld).unautocomplete();
		  $(currentSuchfeld).autocomplete(strServletAutocomplete, {
	      delay: 500,
	      minChars: 2,
	      max: 10,
	      matchContains: true,
	      cacheLength: 0,
	      highlight: false,
	      scroll: false,
	      selectFirst: false,
	      callValidateFunction: validateInput,
	      callListModifier: appendHideLink,
	      resultsClass: strResultClass,
	      extraParams: { land: strLand, sprache: strSprache, anzeige: strAnzeigeModus}
	      });
		  
		  $(":text").result(function(event, data, formatted) {
			 // strStatistikLink = strStatistikLink.replace(/&amp;/g, "&"); // beim Erstaufruf autocompleteAusfuehren wird &amp; nicht sauber uebersetzt, darum hier das Ersetzen
			  if (strStatistikLink != "")  countKlick(strStatistikLink);
			  var strLink = strServletMain + "?sprache=" + strSprache + "&land=" + strLand + "&anzeige=" + strAnzeigeModus + "&suchbegriff=";	
			  if(data) location.href = strLink + data;
		  });
	      
	      if (boolErstanzeige) {
	    	 boolErstanzeige = false;
	    	 boolAnzeigeAutocomplete = true;
	    	 $(currentSuchhinweisfeld).html("");
	    	 // Der Fokus darf nicht gesetzt werden, wenn ein Popup aufgerufen wird
	    	 // und gleichzeitig im Hintergrund eine andere Seite geladen werden wird
	    	 // (Video und Katalog)
    		 var theFokus = getparameter('fokus');
	    	 // beim Betaetigen des Browser-Zurueck-Buttons darf der Focus nicht gesetzt werden
	    	 // da sonst die Seite wieder nach oben springt
	    	 if(window.pageYOffset == 0 || document.documentElement.scrollTop == 0) {
	    	   // Abschneiden des Parameterwertes, da getParameter(...) Fragmente (#xxx) nicht beruecksichtigt
	    		 if(theFokus.substring(0, 5) != "false") {
	    			 $(currentSuchfeld).trigger("focus");
	    		 }
	    	 }
	      } else {
	    	  if(theFokus.substring(0, 5) != "false") {
	    		  $(currentSuchfeld).trigger("focus");
	    	  }
	      }
	});	
}

function validateInput(){
	if(!boolAnzeigeAutocomplete) return false;
	var text = wordTrim($(currentSuchfeld).val()+'');
	if(text.indexOf(" ") > -1) return false;
	for(var i=0; i<text.length; i++) if("!\"#$%&'()*+,./:;<=>?@[\\]^_`{}|~".indexOf(text.charAt(i)) > -1) return false; //nicht bei Bindestrich (-)
	return true;
}

//Anzeige des Ausblenden-Links
function appendHideLink(){
	$("<div>").html("<span onmousedown=\"disableAutoComplete();\" onclick=\"return true;\" class=\"ausblendenlink\">"+currentAusblendtext+"</span>")
	.css("text-align","right")
	.css("margin-top", "5px")
	//.css("float","right")
	.appendTo(currentResultClass);
}

//Autocomplete deaktivieren und Einblenden-Link einblenden
function disableAutoComplete() {
	boolAnzeigeAutocomplete = false;
	//document.cookie = "hideAutoComplete";
	$(currentSuchhinweisfeld).html("<a href=\"javascript:enableAutoComplete();\" class=\"einblendenlink\">"+currentEinblendtext+"</a>");
}

//Autocomplete aktivieren
function enableAutoComplete() {
	boolAnzeigeAutocomplete = true;
	//document.cookie = "";
	$(currentSuchhinweisfeld).html("");
	setTimeout(function() {$(currentSuchfeld).startloading();}, 250);
	$(currentSuchfeld).trigger("focus");
}

function wordTrim(text) {
	var chars = "!\"#$%&'()*+,./:;<=>?@[\\]^_`{}|~\\s";
	return text.replace(new RegExp("[" + chars + "]+$", "g"), "").replace(new RegExp("^[" + chars + "]+", "g"), "");
}
