//-------- Anzeige ggf. vorhandener Keywords in der Rezeptanzeige, wenn der Aufruf ueber eine Suchmaschine (z.B. Google) erfolgt ---------//

//-------------------//
// Globale Variablen //
//-------------------//

var browser             = navigator.userAgent;
var search_tags         = '';
var exclude_list_array  = new Array();

var search_engine_regex = new Array();
search_engine_regex[0] = ".*[?&]{1}q\=([^&]+)\&{0,1}";     // Google und MSN
search_engine_regex[1] = ".*[?&]{1}as_q\=([^&]+)\&{0,1}";  // Google erweiterte Suche
search_engine_regex[2] = ".*[?&]{1}p\=([^&]+)\&{0,1}";     // Yahoo

/* Aktuelle Browser-Version ermitteln ! */
if (browser.indexOf("Gecko") >= 0) {
	var ns = true;
	var ie = false;
} else {
	var ie = true;
	var ns = false;
};

/**
 * Die Analyse der Suchfelder, wenn man von einer Suchengine zum Chefkoch weitergeleitet wird, soll zeitversetzt gestartet werden.
 */
function initSearchEngineLookup(search_referer_exclude_list) {
	window.setTimeout("analyze_search_flags('" + search_referer_exclude_list + "');", 1000);
}

/**
 * Analysiert ob der Referer Suchmaschinen-Keywords enthaelt (Google, Yahoo oder MSN) und
 * blendet ggf. eine Meldung mit den Suchbegriffen ein, so dass der User
 * komfortabel weiter suchen kann.
 */
function analyze_search_flags(search_tags_exclude_list) {

	if ( !document.referrer || document.referrer == "" ) {
		return;
	}

	// String der nicht zu beachtenden Keywords in Kleinbuchstaben konvertieren
	search_tags_exclude_list = search_tags_exclude_list.toLowerCase();
	
	// Ausschluss-String in Array splitten
	exclude_list_array = search_tags_exclude_list.split(" ");
	
	// Vom Browser uebergebenen Referrer speichern
	var search_referrer = document.referrer;

	// Scannen und Auswerten des Referers starten 
	scan_search_flags(search_referrer);
}

/**
 * Durchsucht einen Referrer nach Suchmaschinen-Parametern und extrahiert
 * ggf. vorhandene Keywords.
 */
function scan_search_flags(search_string_url) {

	// Nur wenn eine Suchmaschine im Referer enthalten ist wird geparsed... 
	if ( search_string_url.search(/(google)+/ig) > -1 || 
	     search_string_url.search(/(search.yahoo)+/ig) > -1 || 
	     search_string_url.search(/(search.live)+/ig) > -1) {
	
		var regex_search  = new RegExp();
		var such_begriffe = '';
		var such_flags    = '';

		// Die im Array search_engine_regex hinterlegten RegExp der Suchmaschinen werden auf den Referrer angewendet...
		for ( var i = 0; i < search_engine_regex.length; ++i) {

			regex_search  = new RegExp(search_engine_regex[i], "i");
			such_begriffe = regex_search.exec(search_string_url);
			
			if ( such_begriffe != null ) {
				
				such_flags   = such_begriffe[1];
				regex_search = new RegExp("[+]", "g");
				
				search_tags = such_flags.replace(regex_search, " ");

				// Alle Suchmaschinen arbeiten mit UTF-8
				search_tags = decode_utf8( search_tags );
				
				// Damit der vergleich mit den in der Prepend hinterlegten Ausschusswoertern keine Probleme macht erstmal in
				// Kleinschrift wandeln
				search_tags = search_tags.toLowerCase();

				// Umlaute wieder encoden
				search_tags = unescape(search_tags)

				// Die EXCLUDE Begriffe aus der Konstanten herausparsen
				search_tags = exclude_strings_from_search_tags(search_tags, exclude_list_array);

				// Wenn noetig dann den Suchbegriff abschneiden damit er nicht das DIV im Layout sprengt
				if ( search_tags.length > 150 ) {

					// Nach 150 Zeichen abschneiden
					search_tags = search_tags.substring(0, 150);

					// Nach dem letzten Leerzeichen abschneiden damit nicht ein halbes Wort "stehen bleibt"
					search_tags = search_tags.substring(0, search_tags.lastIndexOf(" "));
				}

				// Die Suchtags in die CK-Suche schreiben 
				document.getElementById('inputfield_quicksearch').value = search_tags;

				// Meldung ausgeben
				show_keyword_message(search_tags);

				// Beim Treffer sofort abbrechen...
				return
			}
		}
	}
}

/**
 * Zeigt nach einer kurzen Pause dem User eine Meldung an woraus er die Suche
 * nach weiteren Rezepten starten kann
 */
function show_keyword_message(suche_tags) {

	// DIV sichtbar schalten
	document.getElementById('keywordMessage').style.display = 'block';

	document.getElementById('keywordMessageText').innerHTML = js_htmlspecialchars(suche_tags);

	search_tag_div_slider(0);

}

/**
 * Das DIV mit der Meldung wird langsam aufgescrollt in dem der "height" im
 * Style langsam hochgezaehlt wird.
 */
function search_tag_div_slider(height) {

	document.getElementById("keywordMessage").style.height = height;

	if (height < 95) {

		// Pixel hochzaehlen und Funktion erneut aufrufen...
		height = height + 5;

		// search_tag_div_slider(height);
		window.setTimeout("search_tag_div_slider(" + height + ");", 1);

	}

}

/**
 * Wenn durch den Button in der Meldung die Suche aktiviert wird dann wird die
 * Ueberallsuche auf "Rezept" geschaltet und die Suche ausgefuehrt !
 */
function execute_search_form() {

	var elements_from_select_options = document.searchform.wo;
	
	for ( var i = 0; i < elements_from_select_options.length; ++i) {

		if ( elements_from_select_options[i].value == '2' ) {
			
			elements_from_select_options[i].selected = 'selected';
			
		}
	}

	// Inputfeld wird ueber die ID angesprochen 
	document.getElementById('inputfield_quicksearch').value = trim(search_tags, ' ');
	
	document.searchform.submit();
}

/**
 * Suchbegriffe welche NICHT in den CK-Suche uebernomnmen werden sollen 
 * werden herausgeparsed.
 */
function exclude_strings_from_search_tags(search_tags, exclude_strings) {

	for ( var i = 0; i < exclude_strings.length; ++i) {

		search_tags = search_tags.replace(exclude_strings[i], "");

	}
	
	return trim(search_tags, ' ');
}

/**
 * Entspricht der PHP Funktion "htmlspecialchars"
 */
function js_htmlspecialchars(string_to_convert) {
	
	regex_search = new RegExp('[&]', 'g');
	string_to_convert = string_to_convert.replace(regex_search, '&amp;');

	regex_search = new RegExp('["]', 'g');
	string_to_convert = string_to_convert.replace(regex_search, '&quot;');

	regex_search = new RegExp("[']", 'g');
	string_to_convert = string_to_convert.replace(regex_search, '&#039;');

	regex_search = new RegExp('[<]', 'g');
	string_to_convert = string_to_convert.replace(regex_search, '&lt;');

	regex_search = new RegExp('[>]', 'g');
	string_to_convert = string_to_convert.replace(regex_search, '&gt;');

	return string_to_convert;
}

/**
 * Fuehrt ein Decoding durch wenn der Suchstring im UTF8 Format vorliegt 
 */
function decode_utf8(utftext) {
	
	var decoded_string = '';
	
	try { 
		decoded_string = decodeURIComponent(utftext);
	} 
	catch (e) { 
		decoded_string = utftext;
	} 
	    
	return decoded_string;
}

function trim(str, chars) {
	return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {
	chars = chars || "\\s";
	return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}
