/*jQuery.noConflict();*/

jQuery(document).ready(function() {	

	/* address plugin for browser back and forward */
	jQuery.address.crawlable(true);
	jQuery.address.externalChange(function(event) {    	
    	epoq_processChange(event);   
    	if (event.parameterNames.length > 0) {
    		if (epoq_target.length == 0  || window.location.href.indexOf(epoq_target) != -1) {
    			epoq_getSearchResult();
    		}	
    	}    
    });   
    
    jQuery.address.internalChange(function(event) {    	
    	epoq_processChange(event);  
    	if (event.parameterNames.length > 0) {
    		if (epoq_target.length == 0  || window.location.href.indexOf(epoq_target) != -1) {    			
				if (jQuery(".epoq_navigate").length > 0 && jQuery("#epoq_resultrows").length > 0 && epoq_animateResult){
					/*animate hiding of results*/
					jQuery(".epoq_navigate").last().css("display", "none");
					jQuery("#epoq_resultrows").hide(epoq_animationType,epoq_animationOptionsOut,epoq_animationSpeed,epoq_getSearchResult);
				} else {
					epoq_getSearchResult();
				}    			
    		} else {    			
    			window.location = epoq_target + "#" + jQuery.address.value();
    		}    		
    	}    
    });   
    
    /* search on mouseclick on button */
    jQuery("#epoq_submit").click(function(event) {
		event.preventDefault();
		jQuery("#epoq_typeaheadbox").autocomplete("close");
		epoq_query = jQuery("#epoq_typeaheadbox").val();
		if (!epoq_parsePriceFromQuery) {
			epoq_resetParameters();		
		} else {			
			epoq_parseQueryForPrice();
		}			
	});
	
    /* search on enter event on searchbox*/
	jQuery("#epoq_typeaheadbox").keypress(function(event) {		
		if (event.keyCode == '13') {
			event.preventDefault();
			jQuery("#epoq_submit").click();			
		}		
	});
	
	/* autocomplete for searchbox*/
	if (useAutocomplete == true) {		
		jQuery('#epoq_typeaheadbox').keyup(function(event) {
			epoq_nochange = false;
			jQuery("#epoq_typeaheadbox").autocomplete( "option", "enabled", true );
			if (epoq_instantResults) {			
				var currentSug = jQuery("#epoq_suggbox").val();			
				var boxVal = jQuery('#epoq_typeaheadbox').val();
				if (typeof(currentSug) != 'undefined' && currentSug.indexOf(boxVal) != 0 || boxVal == "") {
					jQuery("#epoq_suggbox").val("");							
				}
			}
		});
		
		jQuery("#epoq_typeaheadbox").autocomplete({
			source:  function(request, response) {
				epoq_executeAutocomplete(request, response);			
			},	
			search: function(event, ui) {
				if (epoq_nochange) {					
					return false;
				}
			},
			focus: function(event, ui) {
				if (epoq_instantResults) {	
					epoq_query = ui.item.value;
					epoq_getSearchResult();
				}
			},
			delay: epoq_autocompleteDelay,			
			minLength: 1,
			select: function(event, ui) {				
				if ((typeof(event.keyCode) == 'undefined' || event.keyCode == 0) && typeof(ui.item.value) != 'undefined') {
					/* select by mouse */
					jQuery("#epoq_typeaheadbox").val(ui.item.value);						
				} 
				
				epoq_query = jQuery("#epoq_typeaheadbox").val();
				epoq_nochange = true;
				if (!epoq_parsePriceFromQuery) {			
					epoq_resetParameters();		
				} else {			
					epoq_parseQueryForPrice();
				}
				/* dont trigger submit event on "enter" key */
				event.preventDefault();
			}
		})
		
		.data( "autocomplete" )._renderItem = function( ul, item ) {
			if (item.value == 'suggestionsHeader') {
				var epoq_suggLabel2 = "";
				if (epoq_showFieldsInTa) {
					epoq_suggLabel2 = "<span class=\"epoq_sugg_label2\">" + item.label2 + "</span>"; 
				} else if (epoq_showAcHitcount) {
					epoq_suggLabel2 = "<span class=\"epoq_sugg_label2\">" + epoq_hitCountLabel + "</span>"; 
				}
				return jQuery( "<li class=\"epoq_sugg_label\">" + item.label + epoq_suggLabel2 + "<div class=\"epoq_ac_close\" onClick='epoq_acHide();'></div></li>" )				
				//.append( jQuery( "<a class=\"epoq_sugg_label\></a>" ).html( item.label + item.label2) ) 
				.appendTo( ul );
			} else {
				return jQuery( "<li class=\"epoq_ta_li\"></li>" )
				.data( "item.autocomplete", item ) 
				.append( jQuery( "<a class=\"epoq_ta_a\"></a>" ).html( item.label ) ) 
				.appendTo( ul );
			}			
		};
		
		/* if no suggestion selected autocomplete will not trigger submit event by default, fixed in autocomplete-js atm*/
		
//		jQuery("#epoq_typeaheadbox").bind( "keydown.autocomplete", function( event ) {
//			 var keyCode = jQuery.ui.keyCode;
//			 switch( event.keyCode ) {
//				 case keyCode.ENTER:
//				 case keyCode.NUMPAD_ENTER:
//				 // when menu is open or has focus
//				 if ( jQuery("#epoq_typeaheadbox").menu.element.is( ":visible" ) ) {
//					 event.preventDefault();
//				 }
//					jQuery("#epoq_typeaheadbox").autocomplete("close");
//					epoq_query = jQuery("#epoq_typeaheadbox").val();		
//					if (!epoq_parsePriceFromQuery) {			
//						epoq_resetParameters();		
//					} else {			
//						epoq_parseQueryForPrice();
//					}
//					event.preventDefault();
//					return false;		
//				 
//			
//			 }
//		});
		

	   
		
		/*
		.result(function(event, item) {				
			if(typeof(item.suggestion)!="undefined")
			{			
				if(typeof(item.suggestion['@suggestion-id'])!="undefined") {				
					var epoq_sug = item.suggestion['$'].toLowerCase();
					epoq_query = epoq_sug.replace(/&gt/g, ">").replace(/&gt;/g, ">");
					jQuery("#epoq_typeaheadbox").val(epoq_query);
				} 
			} else if(typeof(item.nodeRef) !="undefined") {
				if (item.nodeRef['link']['$'] != undefined) {					
					epoq_goToProduct(item.nodeRef['link']['$'], item.nodeRef['g:id']['$']);
					return false;
				}
			}		
			epoq_resetParameters();
			return false;
		});	
		*/
	}
	
/*	
	epoq_addCss(".epoq_prodimg {" +
				"max-height:" + maxResultImageHeight+ "px;" +
				"height: expression(this.height > " + (maxResultImageHeight -1)  + "? (this.width > this.height ? (this.width / this.height) * " + maxResultImageHeight + " : " + maxResultImageHeight + ") : true);" +
				"max-width:" + maxResultImageWidth+ "px;" +
				"width: expression(this.width > " + (maxResultImageWidth -1)  + "? (this.height > this.width ? (this.height / this.width) * " + maxResultImageWidth + " : " + maxResultImageWidth + ") : true);" +
				"-ms-interpolation-mode: bicubic;"			  				 
				+"}");
	
	epoq_addCss(".epoq_previmg {" +
			"max-height:" + maxPreviewImageHeight+ "px;" +
			"height: expression(this.height > " + (maxPreviewImageHeight -1)  + "? (this.width > this.height ? (this.width / this.height) * " + maxPreviewImageHeight + " : " + maxPreviewImageHeight + ") : true);" +
			"max-width:" + maxPreviewImageWidth+ "px;" +
			"width: expression(this.width > " + (maxPreviewImageWidth -1)  + "? (this.height > this.width ? (this.height / this.width) * " + maxPreviewImageWidth + " : " + maxPreviewImageWidth + ") : true);" +
			"-ms-interpolation-mode: bicubic;"			  				 
			+"}");*/
});
/* end document ready */

function epoq_resetParameters(reload) {
	jQuery.address.autoUpdate(false);
	epoq_offset = 0;		 
	epoq_order = "desc";
	epoq_orderBy = "";
	epoq_removeFilters(false);
	matchAttr = "";
	matchValue = "";
	epoq_query = epoq_escapeFilterValue(epoq_query);
	jQuery.address.parameter('query', epoq_query, false);			
	jQuery.address.parameter('offset', epoq_offset, false);
	jQuery.address.parameter('order', epoq_order, false);
	jQuery.address.parameter('orderBy', epoq_orderBy, false);
	jQuery.address.parameter('matchAttr', matchAttr, false);
	jQuery.address.parameter('matchValue', matchValue, false);
	if (typeof(reload) == 'undefined' || reload) {		
		jQuery.address.update();
		jQuery.address.autoUpdate(true);
	}
}

function epoq_parseQueryForPrice() {
	var myregexp = new RegExp("(ab|bis) (\\d+)( )?(euro|Euro|â‚¬)?");
	var m = myregexp.exec(epoq_query);
	if (m == null) {
		epoq_resetParameters();
	} else {
		epoq_query = jQuery.trim(epoq_query.replace(myregexp, ""));
		var priceVal = m[2];
		var priceSign = "";
		if (m[1] == 'bis') {
			priceSign = "< ";
		} else {
			priceSign = "> ";
		}
		epoq_resetParameters(false);
		epoq_addFilter("g:price", priceSign + priceVal, false);		
		epoq_setFilters();
	}			
}

function epoq_processChange(event) {
	matchAttr = "";
	matchValue = "";
	for (var i=0; i< event.parameterNames.length;i++) {
		if (event.parameterNames[i] == 'limit') {
    		epoq_limit = parseInt(event.parameters['limit']);
    	}
		if (event.parameterNames[i] == 'offset') {
			epoq_offset = parseInt(event.parameters['offset']);
    	}
		if (event.parameterNames[i] == 'order') {
			epoq_order = event.parameters['order'];
    	}
		if (event.parameterNames[i] == 'orderBy') {
			epoq_orderBy = event.parameters['orderBy'];
    	}
		if (event.parameterNames[i] == 'matchAttr') {
			if (typeof(event.parameters['matchAttr']) == 'object') {
				for (var j=0; j<event.parameters['matchAttr'].length; j++) {
					matchAttr += event.parameters['matchAttr'][j] + "Â§";
				}
			} else {
				matchAttr += event.parameters['matchAttr'] + "Â§";
			}      			
    	}
		if (event.parameterNames[i] == 'matchValue') {
			if (typeof(event.parameters['matchValue']) == 'object') {
				for (var j=0; j<event.parameters['matchValue'].length; j++) {
					matchValue += epoq_unescapeFilterValue(event.parameters['matchValue'][j]) + "Â§";
				}
			} else {
				matchValue += epoq_unescapeFilterValue(event.parameters['matchValue']) + "Â§";
			}      	
    	}  
		if (event.parameterNames[i] == 'query') {
			epoq_query = event.parameters['query'];
			epoq_query = epoq_unescapeFilterValue(epoq_query);
			jQuery("#searchbox").val(epoq_query);
    	}  
	}    	
		       
}

function epoq_getAutocompleteValue(row){
	if(typeof(row.suggestion)!= "undefined")
	{
		var suggestion = row.suggestion['$'];
		if (typeof(suggestion) != "undefined") {
			return suggestion
		}		
	}
}

/* format item for autocomplete results */
function epoq_formatAutocompleteItem(row){
	var prodHtml;
	if(typeof(row.nodeRef) != "undefined")
	{
		/* Produktempfehlung */
		prodHtml = "";			
		prodHtml += "<div class='ac_epoqrow'>";
		prodHtml += "<div class='ac_epoqpic'>";
		if(typeof(row.nodeRef[epoq_imageField]) != "undefined") prodHtml +=  "<img class='epoq_previmg' src='" + row.nodeRef[epoq_imageField]['$']+ "'/>";
		prodHtml +="</div>"; 
		prodHtml +="<div class='ac_epoqdesc'>";
		for (var i=0;i<resultAttributes.items.length;i++) {
			var fieldName = resultAttributes.items[i][0];
			if(typeof(row.nodeRef[fieldName]) != "undefined") {
				var fieldValue = row.nodeRef[fieldName]['$'];
				if (fieldName == "g:price") {
					fieldValue = epoq_currencyFormatted(fieldValue);
				}
				prodHtml += "<p class=\"ac_" +resultAttributes.items[i][1] + "\">";
				prodHtml += fieldValue; 
				prodHtml += "</p>"; 
			}
		}
		prodHtml +="</div>";
		return prodHtml;
	}

	if(typeof(row.suggestion)!= "undefined")
	{
		/* normale Suggestion */
		var suggestion = row.suggestion['$'];
		var match = row.suggestion['@match'];
		if (typeof(match) != "undefined" && match.length > 0) {
			var splitMatch =  match.split(" ");
			for (var j=0; j< splitMatch.length; j++) {
				if (splitMatch[j].length > 0) {
					var re = new RegExp(splitMatch[j],"g");
					suggestion = suggestion.replace(re, "ZZZ" + splitMatch[j] + "YYY");
				}		
			}					
		} else {
			var re = new RegExp(epoq_query,"g");
			suggestion = suggestion.replace(re, "ZZZ" + epoq_query + "YYY");
		}
		suggestion = suggestion.replace(/ZZZ/g,"<span class=\"epoq_highlight\">");
		suggestion = suggestion.replace(/YYY/g,"</span>");	
		var epoq_fields = "";
		if (epoq_showFieldsInTa) {			
			var alt = row.suggestion['@alt'];
			if (typeof(alt) != "undefined") {
				epoq_fields += "<span class=\"epoq_field_match\">";
				var epoq_fieldEntries = "";
				// TA1
				var splitMatch =  alt.split("Â§#Â§");
				if (splitMatch.length > 1 ) {				
					for (var j=0; j< splitMatch.length; j++) {
						var fieldsMatched = splitMatch[j].split("*-*");
						if (fieldsMatched.length > 1) {
							var foundFieldName = fieldsMatched[1];	
							if (epoq_fieldEntries.length > 0) {
								epoq_fieldEntries += " + ";
							}
							epoq_fieldEntries += epoq_replaceFieldNameWithRealName(foundFieldName);	
						}								
					}
				} else {
					// TA 2
					splitMatch =  alt.split(",");
					for (var j=0; j< splitMatch.length; j++) {
						var foundFieldName = splitMatch[j];	
						if (epoq_fieldEntries.length > 0) {
							epoq_fieldEntries += " + ";
						}
						epoq_fieldEntries += epoq_replaceFieldNameWithRealName(foundFieldName);	
					}
				}
				epoq_fields += epoq_fieldEntries+  "</span>";
			}	
		}		
		var epoq_altDisplay = row.suggestion['@display'];
		if (typeof(epoq_altDisplay) != "undefined" && epoq_altDisplay.length > 0) {
			suggestion = epoq_altDisplay;
		}
		prodHtml = "<span class=\"epoq_test\">" + suggestion +  "</span>" + epoq_fields;
		/*prodHtml  = "<div class='ac_epoqsuggrow' ><div class='ac_epoqsugg'>" + suggestion + "</div>";*/
		
		if (epoq_showAcHitcount && typeof(row.suggestion['@hitcount'])!= "undefined") {
			prodHtml += "<span class='ac_epoqsuggcount'>" + row.suggestion['@hitcount'] + "</span>";
		}
		
	}
	/* 
	 * prodHtml += "</div></div>";
	 * */
	return prodHtml;
}
	
	
function epoq_replaceFieldNameWithRealName(fieldName) {	
	for (var t=0;t<statFields.items.length;t++) {
		if (statFields.items[t][1] == fieldName) {
			return statFields.items[t][2];
		} 
	}
	return fieldName;
}

function epoq_heights(input) {
	jQuery(".epoq_filterRow").removeAttr("style");
	jQuery(".epoq_filterRow").children().each(function(){ 
		jQuery(this).removeAttr("style");	
	});
	jQuery(".epoq_filterRow:last").addClass("epoq_lastFilterRow");
	
	jQuery(input).each(function(){
		var epoq_minFilterRowHeight = 0;
		// min height for last row is 100		
		var epoq_classesString = jQuery(this).attr('class');
		if (epoq_classesString.indexOf("epoq_lastFilterRow") != -1) {
			epoq_minFilterRowHeight = 100;			
		}		
		jQuery(this).children().each(function(){
			epoq_minFilterRowHeight = (jQuery(this).height() > epoq_minFilterRowHeight) ? jQuery(this).height() : epoq_minFilterRowHeight;
		});
		jQuery(this).children().css("height", epoq_minFilterRowHeight);
		jQuery(this).css("height", epoq_minFilterRowHeight + 10);
	});	
};


function epoq_generateStatsAndNavigation(data)	{
	var stats = new Array();
	jQuery("#epoq_filterresult").empty();
	jQuery("#epoq_filterresult").append("<div id=\"epoq_filterHeader\"><div id=\"epoq_filterHeaderLabel\" class=\"epoq_open\" onClick=\"epoq_triggerFilters();\">" + epoq_availableFilters + "</div><div id=\"epoq_removeAllFilters\" onClick=\"epoq_removeFilters(true);\">" + epoq_removeAllFiltersLabel + "</div></div><div id=\"epoq_filters\"></div>");
	jQuery("#epoq_search").empty();
	jQuery("#epoq_activefilters").empty();
	jQuery("#epoq_resultStats").empty();
	jQuery("#epoq_filters").empty();
	jQuery(".epoq_changepage").empty();
	jQuery(".epoq_resultsize").empty();
	jQuery(".epoq_sort").empty();
	
	/*add sort Text and Buttons */
	var sortHtml = "<p class=\"epoq_header\">" + epoq_sortText + "</p><ul class=\"epoq_sortlist\">";
	for (var i=0;i<sortFields.items.length;i++) {
		var activeSortUp = "";
		var activeSortDown = "";
		if (sortFields.items[i][1] == epoq_orderBy) {
			if (epoq_order == "asc") {
				activeSortUp = " epoq_active";				
			} else if (epoq_order == "desc") {
				activeSortDown = " epoq_active";
			}
			
		}
		if (i > 0) {
			sortHtml += "<li class=\"epoq_seperate\"/>";	
		}		
		/*sortHtml +=  "<span>" + sortFields.items[i][0]+ "</span>"*/
		if (sortFields.items[i][2] == "updown") {
			sortHtml += "<li class=\"epoq_sort_down" + activeSortDown + "\" onclick=\"epoq_changeSort('" + sortFields.items[i][1] + "','desc');\">" + sortFields.items[i][0] + "</li>";
			sortHtml += "<li class=\"epoq_sort_up" + activeSortUp + "\" onclick=\"epoq_changeSort('" + sortFields.items[i][1] + "','asc');\"></li>";
		} else if (sortFields.items[i][2] == "down"  || sortFields.items[i][2] == "updown"){
			sortHtml += "<li class=\"epoq_sort_down" + activeSortDown + "\" onclick=\"epoq_changeSort('" + sortFields.items[i][1] + "','desc');\">" + sortFields.items[i][0] +"</li>";
		} else if (sortFields.items[i][2] == "up" || sortFields.items[i][2] == "updown"){
			sortHtml += "<li class=\"epoq_sort_up" + activeSortUp + "\" onclick=\"epoq_changeSort('" + sortFields.items[i][1] + "','asc');\">" + sortFields.items[i][0] +"</li>";				
		}	
		
	}
	sortHtml += "</ul>";
	jQuery(".epoq_sort").append(sortHtml);	
	var hitcount = 0;
	if(typeof(data.result.statistics) != "undefined") {
		var statistics = data.result.statistics;
		if (typeof(statistics["@hitcount"]) != "undefined") {
			hitcount = statistics["@hitcount"];
		}
	}
	/* add found keys */
	var epoq_foundKeys = "";
	if(typeof(data.result.foundkey) != "undefined") {
		var epoq_foundReal = data.result.foundkey;
		if (typeof(epoq_foundReal["$"]) != "undefined") {
			var epoq_foundKey2 = epoq_foundReal["$"];
			if (typeof(epoq_foundKey2) != "undefined") {
				epoq_foundKeys = epoq_foundKey2;
			}								
		}		
	}	
	
	
	/* add doYouMean */
	var epoq_dYM = "";
	if(typeof(data.result.doyoumean) != "undefined") {
		var doyoumean = data.result.doyoumean;
		if (typeof(doyoumean["$"]) != "undefined") {
			var epoq_meanings = doyoumean["$"].split(",");
			if (typeof(epoq_meanings) != "undefined") {
				for (var i=0;i<epoq_meanings.length;i++) {
					if (epoq_dYM.length > 0) {
						epoq_dYM += ", ";
					}
					epoq_dYM += "<a onclick='epoq_changeQuery(\"" + epoq_meanings[i].split(" (")[0] + "\")'>" + epoq_meanings[i].split(" (")[0] + "</a>";
				}				
			}
		}
	}
	if (epoq_dYM.length > 0) {	
		jQuery("#epoq_currentSearch").append("<div id=\"epoq_doYouMean\"></div>");
		jQuery("#epoq_doYouMean").append(dYM + ": " + epoq_dYM);
	}
	
	var epoq_browser_test = "";
	/*jQuery.each(jQuery.browser, function(i, val) {
		epoq_browser_test += "<div>" + i + " : <span>" + val + "</span></div>";
    });
	if (jQuery.browser.version == "5.5.5.5") {
		epoq_browser_test += "HTMLUnit<br>";
	}*/
	
	if (epoq_showRealSearch && epoq_foundKeys.length > 0 && epoq_foundKeys != epoq_query) {
		jQuery("#epoq_search").append(epoq_correctPhrase1 + "<p class=\"epoq_search_term\">" + epoq_query + "</p>" + epoq_correctPhrase2 + "<p class=\"epoq_search_term\">" + epoq_foundKeys + "</p>" + epoq_correctPhrase3);
		jQuery("#epoq_search").append(epoq_preResultNumberText + "<p class=\"epoq_search_hits\">" + hitcount + "</p>" + epoq_postResultNumberText);
	} else {		
		/* add hit count */
		jQuery("#epoq_search").append(epoq_preResultNumberText + "<p class=\"epoq_search_hits\">" + hitcount + "</p>" + epoq_postResultNumberText);
		/* add search query */		
		jQuery("#epoq_search").append(epoq_preSearchKeyText + "<p class=\"epoq_search_term\">" + epoq_query + "</p>" + epoq_postSearchKeyText)
	}
	
	
		
		
		
	/* add active filters */
	var activeFiltersHtml = "";			
	var matchValues = matchValue.split("Â§");	
	var matchAttrs = matchAttr.split("Â§");		
	var hasFilters = false;
	var currentMinPrice = 0.0;
	var currentMaxPrice = 0.0;
	for (var i=0; i<matchValues.length;i++) {
		if (matchValues[i].length > 0) {
			if (hasFilters == false) {
				activeFiltersHtml += "<div class=\"epoq_activefilters\"><p class=\"epoq_header\">" + epoq_activeFilterString + "</p><ul class=\"epoq_activeFilterList\" >";
				hasFilters = true;
			}
			var replaceVal = epoq_replaceApostrophs(matchAttrs[i]);		
			var foundStat = false;	
			var statName = "";
			var currentValue = matchValues[i];
			
			findStat: for (var t=0;t<statFields.items.length;t++) {
				if (statFields.items[t][1] == replaceVal) {
					foundStat = true;
					statName = statFields.items[t][2];					
					if (statFields.items[t][3] == 'slider') {						
						var epoq_Unit = statFields.items[t][5];						
						if (currentValue.indexOf('-') != -1) {
							var splitVal = currentValue.split('-');
							epoq_currentMin = parseFloat(splitVal[0]);
							epoq_currentMax = parseFloat(splitVal[1]);	
						} else if (currentValue.indexOf('<') != -1) {
							var splitVal = currentValue.split('<');
							epoq_currentMin = 0;
							epoq_currentMax = parseFloat(splitVal[1]);					
						} else if (currentValue.indexOf('>') != -1) {
							var splitVal = currentValue.split('>');
							epoq_currentMin = parseFloat(splitVal[1]);	
							epoq_currentMax = 0;
						}
						if (epoq_Unit == "&euro;") {
							epoq_currentMin = epoq_currentMin.toFixed(2);
							epoq_currentMax = epoq_currentMax.toFixed(2);
						}
						if (epoq_currentMin != 0 && epoq_currentMax == 0) {						
							currentValue = "ab " + epoq_currentMin + " " + epoq_Unit;			
						} else {
							currentValue = epoq_currentMin + " " + epoq_Unit + " - " + epoq_currentMax + " " + epoq_Unit;
						}
						if (replaceVal == "g:price") {
							currentMinPrice = epoq_currentMin;
							currentMaxPrice = epoq_currentMax;
						}
					}
					break findStat;
				} 
			}
			/* replace real values with nice ones*/
			if (typeof(epoq_fineSearch) != 'undefined') {
				findExpertStat: for (var t=0;t<epoq_fineSearch.items.length;t++) {
					if (epoq_fineSearch.items[t][1] == replaceVal) {
						statName = epoq_fineSearch.items[t][0];
						val1 = epoq_fineSearch.items[t][4];
						name1 = epoq_fineSearch.items[t][3];												
						if (typeof(val1) != 'undefined' && typeof(name1) != 'undefined') {	
							var values = val1.split(",");
							var names = name1.split(",");
							findValue2: for (var j = 0;j<values.length;j++) {
								if (values[j] == currentValue) {
									currentValue = names[j];
									break findValue2;
								}
							}
						}
						
						foundStat = true;
						break findExpertStat;
					}
				}
			} 			
				
			if (foundStat) {
				activeFiltersHtml += "<li class=\"epoq_activeFilter\" onclick='epoq_removeFilter(\"" + replaceVal + "\");'>" + statName + ": " + currentValue + "</li>";
			}
			
		}				
	}	
	if (hasFilters == true) {
		activeFiltersHtml += "</ul></div>"
		jQuery("#epoq_currentSearch").append("<div id=\"epoq_activefilters\"></div>");
		jQuery("#epoq_activefilters").append(activeFiltersHtml);	
	}
	/* end: add active filters */
	
	
	/* add result size change buttons */
	var pagingHtml = "<p class=\"epoq_header\">" + epoq_prodsPerPageText + "</p><ul class=\"resultsize\">";
	for (var i=0; i<limitOptions.length;i++) {
		if (epoq_limit == limitOptions[i]) {
			pagingHtml += "<li class=\"epoq_active\" onclick=\"epoq_changelimit(" + limitOptions[i] + ");\">"+limitOptions[i]+"</li>";
		} else {
			pagingHtml += "<li onclick=\"epoq_changelimit(" + limitOptions[i] + ");\">"+limitOptions[i]+"</li>";
		}
	}			
	jQuery(".epoq_resultsize").append(pagingHtml);			
	
	/* add navigation (paging) */
	var pageHtml = "<p class=\"epoq_header\">" + epoq_currentPageText + "</p><ul class=\"epoq_resultpages\">";			
	var maxPages = 3;
	var currentCount = hitcount;
	var currentPage = ((epoq_offset / epoq_limit) + 1) | 0 ;
	var pages = ((currentCount - 1) / epoq_limit + 1) | 0
	
	if (currentPage > 1) {
		pageHtml+= ("<li class=\"epoq_page_left\" onclick=\"epoq_changepage('" + (currentPage - 1) + "');\"></li>");
	}
	if (currentPage > (maxPages)) {
		pageHtml+= ("<li onclick=\"epoq_changepage('" + 1 + "');\">" + 1 + "</li>");				
	}
	if (currentPage > (maxPages) + 1 ) {
		pageHtml+= ("<li>...</li>");
	}
	for (var i = 1; i < pages + 1; i++ ) {				
		if (currentPage == i) {
			pageHtml+= ("<li class=\"epoq_active\" onclick=\"epoq_changepage('" + i + "');\">" + i + "</li>");
		} else if (i < currentPage && currentPage - i < maxPages) {
			pageHtml+= ("<li onclick=\"epoq_changepage('" + i + "');\">" + i + "</li>");
		}else if (i > currentPage && i - currentPage < maxPages) {
			pageHtml+= ("<li onclick=\"epoq_changepage('" + i + "');\">" + i + "</li>");
		}
		/*(i - currentPage < maxPages/2 || i - currentPage > -maxPages/2){
			
		}	*/		
	}
	if (currentPage <= pages - (maxPages) - 1) {
		pageHtml+= ("<li>...</li>");				
	}
	if (currentPage <= pages - (maxPages)) {
		pageHtml+= ("<li onclick=\"epoq_changepage('" + pages + "');\">" + pages + "</li>");			
	}
	if (currentPage < pages) {
		pageHtml+= ("<li class=\"epoq_page_right\" onclick=\"epoq_changepage('" + (currentPage + 1) + "');\"></li>");
	}			
	pageHtml += ("</ul>");			
	jQuery(".epoq_changepage").append(pageHtml);
	/* end paging */
	
	
	/* add statistics (as filters) */
	var maxStats = maxStatisticCount;
	var j = 0;		
	var filterId = 0;
	var priceStatArray = [];
	var epoq_IE = jQuery.browser.msie;
	
	var stepSize = epoq_priceSteps;
	if (epoq_IE) {
		stepSize = stepSize/2;
	}
	var overallMaxPrice = 10;
	var overallMinPrice = 1000000;
	var epoq_filterHtml = "";		
	var prodHtml = "";
	// loop over returned statistics
	statloop: for (var property in statistics) {			
		if(typeof(statistics[property]) == "object") {
			stats[j++] = statistics[property];			
			var isSliderStat = false;
			var stat = "null";
			var name = "";
			var foundStat = false;
			// loop over statistics from settings
			findStat: for (var t=0;t<statFields.items.length;t++) {
				if (statFields.items[t][0] == property) {
					stat = statFields.items[t][1];
					name = statFields.items[t][2];
					if (typeof(statFields.items[t][3]) && statFields.items[t][3] == "slider") {
						isSliderStat = true;
						if (property != "price-stat") {							
							statFields.items[t][8] = true;
							statFields.items[t][9] = ".epoq_slider_" + name;
						}
					}
					foundStat = true;
					break findStat;
				} 
			}	
			var isActive = false;
			for (var i = 0; i< activeFilters.items.length; i++) {
				if (typeof(activeFilters.items[i][0]) != 'undefined') {
					if (stat == activeFilters.items[i][0]) {
						isActive = true;
					}
				}
			}
			var noFilterActive = ""; 
			if (!isActive) {
				// hide reset link if filter is not active
				// noFilterActive = "<div class=\"epoq_filterresult epoq_root epoq_active_filterresult\"><div class=\"epoq_filter_value\">" + epoq_resetFilter + "</div>";
			} else {
				if (isSliderStat) {
					noFilterActive = "<div class=\"epoq_sliderreset epoq_root\" onclick='epoq_removeFilter(\"" + stat + "\",\"true\");'><div class=\"epoq_filter_value\">" + epoq_resetFilter + "</div></div>";
				} else {
					noFilterActive = "<div class=\"epoq_filterresult epoq_root\" onclick='epoq_removeFilter(\"" + stat + "\",\"true\");'><div class=\"epoq_filter_value\">" + epoq_resetFilter + "</div></div>";
				}				
			}
			var filterCol = "epoq_filterCol" + filterId % statisticCols;	
			//var epoq_minRangeVal = 99999999;
			//var epoq_maxRangeVal = 0;
			if(typeof(statistics[property][0]) != "undefined")
			{				
				/*many items*/
				if (!isSliderStat || !epoq_priceAsSlider) {
					prodHtml += "<div class=\"epoq_singlefilter " + filterCol + "\"><div class=\"epoq_filterstat\" title=\"" + name + "\"><p class=\"epoq_header\">" + name + ":</p>"
					 + noFilterActive;
				}				
				for(var k=0; k<statistics[property].length; k++){
					var val = "";
					var count = statistics[property][k]["@hitcount"];
					if (tenantId == "exlibris") {
						val = statistics[property][k]["@category"];
					} else {
						val = statistics[property][k]["@value"]
					}
					if (isSliderStat) {						
						if (property == "price-stat") {
							if (val.indexOf('-') != -1) {
								var min = val.split('-')[0];
								var max = val.split('-')[1];							
								//var minPrice = val.split('.')[0];
								var minPrice = parseInt(min);
								var maxPrice = parseInt(max);
								if (maxPrice > overallMaxPrice) {								
									overallMaxPrice = maxPrice;
								}
								if (minPrice < overallMinPrice) {
									overallMinPrice = minPrice;
								}
								// use step size from backend
								stepSize = maxPrice - minPrice;
								if (epoq_IE) {
									stepSize = stepSize/2;
								}
								//var rangePart = ((minPrice + maxPrice) / 2 / stepSize) | 0;
								var rangePart = ((((minPrice + maxPrice) / 2)-overallMinPrice) / stepSize) | 0;
								priceStatArray[rangePart] = parseInt(count);	
							}	
						} else {
							/* get min and max Value of slider
							 * var epoq_currentValue = parseInt(val);
							if (epoq_currentValue < epoq_minRangeVal) {
								epoq_minRangeVal = epoq_currentValue ;
							} 
							if (epoq_currentValue > epoq_maxRangeVal) {
								epoq_maxRangeVal = epoq_currentValue;
							}*/
						}
					}	
					if (!isSliderStat || !epoq_priceAsSlider) {
						if (k < maxStats || isActive) {
							prodHtml += epoq_generateStatistic(stat, val, count, "");
						} 
						if (k == maxStats && statistics[property].length > maxStats && !isActive) {
							prodHtml += "<div class=\"epoq_filterresult epoq_extend "+ property  +"\" onclick=\"epoq_unhide('"+ property  +"');\">&darr;" + epoq_moreStats + "</div>";
						} 
						if (k >= maxStats && !isActive) {
							prodHtml += epoq_generateStatistic(stat, val, count, "epoq_hide epoq_more " + property);
						}
						if (k==statistics[property].length-1 && !isActive) {
							prodHtml += "<div class=\"epoq_filterresult epoq_more epoq_hide epoq_collapse "+ property  +"\" onclick=\"epoq_hide('"+ property  +"');\">&uarr;" + epoq_lessStats + "</div>";
						}
					}
				}				
				if (!isSliderStat || !epoq_priceAsSlider) {
					prodHtml += "</div></div>";	
				}
				filterId++;
				
			} else
			{
				/*only one value in statistic*/
							
				 var val = "";
				 var count = statistics[property]["@hitcount"];					 
				 if (tenantId == "exlibris") {
					 val = statistics[property]["@category"];
				 } else {
					 val = statistics[property]["@value"]
				 }
				 if (isSliderStat) {						
						if (property == "price-stat") {
							if (val.indexOf('-') != -1) {
								var min = val.split('-')[0];
								var max = val.split('-')[1];							
								//var minPrice = val.split('.')[0];
								var minPrice = parseInt(min);
								var maxPrice = parseInt(max);
								if (maxPrice > overallMaxPrice) {								
									overallMaxPrice = maxPrice;
								}
								if (minPrice < overallMinPrice) {
									overallMinPrice = minPrice;
								}
								// use step size from backend
								stepSize = maxPrice - minPrice;
								if (epoq_IE) {
									stepSize = stepSize/2;
								}
								var rangePart = ((((minPrice + maxPrice) / 2)-overallMinPrice) / stepSize) | 0;
								priceStatArray[rangePart] = parseInt(count);	
							}	
						} else {
							/* get min and max Value of slider
							var epoq_currentValue = parseInt(val);
							if (epoq_currentValue < epoq_minRangeVal) {
								epoq_minRangeVal = epoq_currentValue;
							} 
							if (epoq_currentValue > epoq_maxRangeVal) {
								epoq_maxRangeVal = epoq_currentValue;
							} */
						}
				} 			
										
				
				if (!isActive) {	
					/* dont show */
					if (stat.indexOf("product_type") != -1) {
						/* always show category */
						prodHtml += "<div class=\"epoq_singlefilter " + filterCol + "\"><div class=\"epoq_filterstat\" title=\"" + name + "\"><p class=\"epoq_header\">" + name + ":</p>" + noFilterActive;
						prodHtml += epoq_generateStatistic(stat, val, count, "");				
						prodHtml += "</div></div>";
						filterId++;		
					}
					if (isSliderStat) {
						/* slider are also shown with only 1 value */
						filterId++;
					}
				} else {	
					if (!isSliderStat) {
						prodHtml += "<div class=\"epoq_singlefilter " + filterCol + "\"><div class=\"epoq_filterstat\" title=\"" + name + "\"><p class=\"epoq_header\">" + name + ":</p>" + noFilterActive;
						prodHtml += epoq_generateStatistic(stat, val, count, "");				
						prodHtml += "</div></div>";
					}					
					filterId++;			
				}	
			}
			// set currently min and max Values ?
			if (isSliderStat && property != "price-stat") {	
				// min
				//epoq_tmpRangeStats.items[j][2] = epoq_minRangeVal;
				// max
				//epoq_tmpRangeStats.items[j][3] = epoq_maxRangeVal;
			}
			/* if (foundStat) { */ /* only display declared stats*/
			if (!isSliderStat || !epoq_priceAsSlider) {				
				//epoq_filterHtml += prodHtml;
			} else {
				if (priceStatArray.length > 1) {
					prodHtml += ("<div class=\"epoq_singlefilter " + filterCol + "\" style=\"height: 100px;\"><p class=\"epoq_header\" for=\"amount\">" + name +":</p>" + noFilterActive + 
							"<div class=\"epoq_sliderfilter_price\" style='width:" + epoq_priceSliderWidth + "px;'><span class=\"epoq_priceSpark\">Loading..</span>" +
							"<div id=\"epoq_priceSlider\" style='width:" + epoq_priceSliderWidth + "px'></div>" +
							"<div class=\"epoq_sliderLabelLeft epoq_priceSliderLeft\"></div>" +
							"<div class=\"epoq_sliderLabelRight epoq_priceSliderRight\"></div>" +
							"</div>" +
							"</div>");
				} else if (isSliderStat && property != "price-stat"){
					prodHtml += ("<div class=\"epoq_singlefilter " + filterCol + "\" style=\"height: 100px;\"><p class=\"epoq_header\" for=\"amount\">" + name +":</p>" + noFilterActive + 
							"<div class=\"epoq_sliderfilter\" style='width:" + epoq_priceSliderWidth + "px;'>" +
							"<div class=\"epoq_slider_" + name + "\" name=\"" + stat + "\" style='width:" + epoq_priceSliderWidth + "px'></div>" +
							"<div class=\"epoq_sliderLabelLeft\"></div>" +
							"<div class=\"epoq_sliderLabelRight\"></div>" +
							"</div></div>");			
					
				}
			}
			
			/* } */			
			

			if (prodHtml.length > 0) {
				if (filterId % statisticCols == 0) {
					epoq_filterHtml += "<div class=\"epoq_filterRow\">" + prodHtml +  "</div>";
					prodHtml = "";
				} 
			} 
			
		}	
		
	}	
	// end: loop over statistics
		
	// add non complete final row
	if (prodHtml.length > 0) {
			epoq_filterHtml += "<div class=\"epoq_filterRow\">" + prodHtml +  "</div>";
			prodHtml = "";
	} 
	
	if (epoq_filterHtml.length > 0) {
		jQuery("#epoq_filters").append( epoq_filterHtml );	
	} else {
		jQuery("#epoq_filterresult").empty();
	}
	
	epoq_heights(jQuery(".epoq_filterRow"));
	
	// get max statistic value over all statistic values
	var max_stat_size = 0;
	jQuery(".epoq_count_stat").each(function(){
		var countText = jQuery(this).text();
		if (countText.length > 0) {			
			var count = parseInt(countText.substring(1, countText.length - 1));
			if (count > max_stat_size) {
				max_stat_size = count;
			}
		}
    });
	
	
	jQuery(".epoq_filterresult").each(function(){
		if (epoq_animateStats) {		
			var classes = jQuery(this).attr('class');
			if (classes.indexOf("epoq_hide") == -1) {
				jQuery(".epoq_filterchart",this).css("display", "none");
			}
		}
		
		// add statistic bar if real browser
		if (jQuery.browser.version != "5.5.5.5") {				
			var countText = jQuery(".epoq_count_stat",this).text();
			if (countText.length > 0) {		
				var count = parseInt(countText.substring(1, countText.length - 1));
				//jQuery(this).text("");
				jQuery(".epoq_filterchart", this).progressbar({ 			
					value: count / max_stat_size * 100			
				});
			}
		}
    });
	
	if (epoq_animateStats) {			
		jQuery(".epoq_filterresult").each(function(){	
			var classes = jQuery(this).attr('class');
			if (classes.indexOf("epoq_hide") == -1) {
				jQuery(".epoq_filterchart",this).show(epoq_animationType,epoq_animationOptionsStats,epoq_animationSpeed);
			}
	    });
	}
	
	/* add slider for range statistics */
	for (var z=0; z < statFields.items.length; z++) {
		if (typeof(statFields.items[z][3]) != 'undefined' && statFields.items[z][3] == 'slider' && statFields.items[z][8] == true) {	
			epoq_unit = " " + statFields.items[z][5];
			epoq_currentMinFilterVal = -1;
			epoq_currentMaxFilterVal = -1;
			for (var i=0; i<matchValues.length;i++) {				
				if (matchValues[i].length > 0) {
					var currentValue = matchValues[i];
					var replaceVal = epoq_replaceApostrophs(matchAttrs[i]);		
					if (replaceVal == statFields.items[z][1]) {
						if (currentValue.indexOf('-') != -1) {
							var splitVal = currentValue.split('-');
							epoq_currentMinFilterVal = parseFloat(splitVal[0]);
							epoq_currentMaxFilterVal = parseFloat(splitVal[1]);	
						} else if (currentValue.indexOf('<') != -1) {
							var splitVal = currentValue.split('<');
							epoq_currentMaxFilterVal = parseFloat(splitVal[1]);					
						} else if (currentValue.indexOf('>') != -1) {
							var splitVal = currentValue.split('>');
							epoq_currentMinFilterVal = parseFloat(splitVal[1]);		
						}
					}
				}
			}			
			if (epoq_currentMinFilterVal == -1) {
				epoq_currentMinFilterVal = statFields.items[z][6];
			}
			if (epoq_currentMaxFilterVal == -1) {
				epoq_currentMaxFilterVal = statFields.items[z][7];
			}
			jQuery(statFields.items[z][9]).slider({			
				range: true,
				step: statFields.items[z][4],
				min: statFields.items[z][6],
				max: statFields.items[z][7],				
				values: [epoq_currentMinFilterVal, epoq_currentMaxFilterVal],
				slide: function(event, ui) {
					var epoq_current_attr = jQuery(this).attr('name');
					var epoq_currUnit = "";
					for (var t=0;t<statFields.items.length;t++) {
						if (statFields.items[t][1] == epoq_current_attr) {
							epoq_currUnit = " " + statFields.items[t][5];
						}
					}
					var epoq_val1 = ui.values[0];
					var epoq_val2 = ui.values[1];
					var epoq_label1 = epoq_val1 + epoq_currUnit;
					var epoq_label2 = epoq_val2 + epoq_currUnit;
					if (epoq_currUnit == ' cm') {
						epoq_label1 += " (" + Math.round(epoq_val1 * 0.39370078740157477) + "\")";
						epoq_label2 += " (" + Math.round(epoq_val2 * 0.39370078740157477) + "\")";
					} else if (epoq_currUnit == ' MB') {
						epoq_label1 += " (" + epoq_val1 / 1024.0 + "GB)";
						epoq_label2 += " (" + epoq_val2 / 1024.0 + "GB)";
					}
					
					jQuery(this).parent().children(".epoq_sliderLabelLeft").html(epoq_label1);
					jQuery(this).parent().children(".epoq_sliderLabelRight").html(epoq_label2);
				},
				change: function(event, ui) {				
					if (event.originalEvent) {
						var epoq_current_attr = jQuery(this).attr('name');
						var sliderMax = jQuery(this).slider( "option", "max" );						
						var sliderMin = jQuery(this).slider( "option", "min" );

						if (ui.values[0] == sliderMin && ui.values[1] == sliderMax) {
							epoq_removeFilter(epoq_current_attr);
						} else {							
							if (ui.values[0] != ui.values[1]) {
								epoq_addFilter(epoq_current_attr,ui.values[0] + " - " + ui.values[1]);
							}
						}
						
					}	
				}
			});
			jQuery(statFields.items[z][9] + " .ui-slider-handle:first").addClass("epoq_left_slider");			
			jQuery(statFields.items[z][9] + " .ui-slider-handle:last").addClass("epoq_right_slider");
			
			var epoq_val1 = jQuery(statFields.items[z][9]).slider("values", 0);
			var epoq_val2 = jQuery(statFields.items[z][9]).slider("values", 1);
			var epoq_label1 = epoq_val1 + epoq_unit;
			var epoq_label2 = epoq_val2 + epoq_unit;
			if (epoq_unit == ' cm') {
				epoq_label1 += " (" + Math.round(epoq_val1 * 0.39370078740157477) + "\")";
				epoq_label2 += " (" + Math.round(epoq_val2 * 0.39370078740157477) + "\")";
			} else if (epoq_unit == ' MB') {
				epoq_label1 += " (" + epoq_val1 / 1024.0 + "GB)";
				epoq_label2 += " (" + epoq_val2 / 1024.0 + "GB)";
			}
			
			jQuery(statFields.items[z][9]).parent().children(".epoq_sliderLabelLeft").html(epoq_label1);			
			jQuery(statFields.items[z][9]).parent().children(".epoq_sliderLabelRight").html(epoq_label2);	
		}
	}
		
	
	
	
	/* add price slider and chart */ 
	//if (epoq_priceAsSlider && currentCount > 0 && jQuery.browser.version != "5.5.5.5") {
	if (epoq_priceAsSlider && jQuery.browser.version != "5.5.5.5") {
		var z = 0;
		for (var y=overallMinPrice; y < overallMaxPrice; y+=stepSize) {	
			if (typeof(priceStatArray[z]) == 'undefined') {				
				var prev = priceStatArray[z-1];
				var next = priceStatArray[z+1];
				if (typeof(prev) == 'undefined' || typeof(next) == 'undefined') {
					prev = 0;
					next = 0;
				}
				if (prev == 0 || next == 0) {
					prev = 0;
					next = 0;
				}					
				var middle = (prev+next)/2;			
				if (!epoq_IE) {
					middle = 0;
				}
				priceStatArray[z] = middle;
			}
			z++;
		}
		if (priceStatArray.length > 1) {
			if (epoq_IE) {
				priceStatArray[priceStatArray.length] = 0;
			}		
			/* price chart */
			if (!epoq_IE) {		
				var barWide =  epoq_priceSliderWidth / (priceStatArray.length);		
				jQuery('.epoq_priceSpark').sparkline(
					priceStatArray,
					{								
						height: epoq_chartHeight,	
						spotColor: false,
						minSpotColor: false,
						maxSpotColor: false,
						type: 'bar',
						barWidth: barWide,
						barSpacing: 0,
						chartRangeMin: 0,
						barColor: epoq_chartColor
					}	
				);	
			} else {			
				jQuery('.epoq_priceSpark').sparkline(
					priceStatArray,
					{			
						width: epoq_priceSliderWidth +'px',
						height: epoq_chartHeight,	
						spotColor: false,
						minSpotColor: false,
						maxSpotColor: false,
						type: 'line',
						lineColor: epoq_chartColor
						
						
					}	
				);	
			}		
			
			
			
			/* price slider */	
			
			if (currentMaxPrice == 0) {
				currentMaxPrice = overallMaxPrice;		
			}
			if (jQuery.browser.version != "5.5.5.5") {
				jQuery("#epoq_priceSlider").slider({			
					range: true,
					min: overallMinPrice,
					max: overallMaxPrice,
					step: epoq_priceSteps,
					values: [currentMinPrice, currentMaxPrice],
					slide: function(event, ui) {
						jQuery(".epoq_priceSliderLeft").html("&euro; " + ui.values[0]);
						jQuery(".epoq_priceSliderRight").html("&euro; " + ui.values[1]);
						// jQuery("#epoq_sliderLabel").val(ui.values[0] + ' â‚¬ - ' + ui.values[1] + ' â‚¬');
					},
					change: function(event, ui) {				
						if (event.originalEvent) {
							var sliderMax = jQuery("#epoq_priceSlider").slider( "option", "max" );
							var sliderMin = jQuery("#epoq_priceSlider").slider( "option", "min" );
	
							if (ui.values[0] == sliderMin && ui.values[1] == sliderMax) {
								epoq_removeFilter("g:price");
							} else {							
								if (ui.values[0] != ui.values[1]) {
									epoq_addFilter("g:price",ui.values[0] + " - " + ui.values[1]);
								}
							}
							
						}				
					}
				});
			}
			jQuery("#epoq_priceSlider .ui-slider-handle:first").addClass("epoq_left_slider");
			jQuery("#epoq_priceSlider .ui-slider-handle:last").addClass("epoq_right_slider");
			jQuery(".epoq_priceSliderLeft").html("&euro; " + jQuery("#epoq_priceSlider").slider("values", 0));
			jQuery(".epoq_priceSliderRight").html("&euro; " + jQuery("#epoq_priceSlider").slider("values", 1));			
			// jQuery("#epoq_sliderLabel").val(jQuery("#epoq_priceSlider").slider("values", 0) + ' â‚¬ - ' + jQuery("#epoq_priceSlider").slider("values", 1) + ' â‚¬');
		}
		
	}
	
		
}

function epoq_replaceApostrophs(val) {
	var replacement= val.replace(/'/g, "Â§").replace(/\"/g, "#");	
	return replacement;
}

function epoq_restoreApostrophs(val) {
	var restoration = val.replace(/Â§/g, "'").replace(/#/g, "\"");	
	return restoration;
}

function epoq_generateStatistic(stat, val, count, extraclass) {
	var addclass = "";
	var visibilityClass = "";
	var spacer = "";
	var displayVal = "";
	var active = false;
	var countString = "(" + count + ")";
	if (typeof(extraclass) != "undefined") {
		visibilityClass = extraclass;
	}		
	for (var i = 0; i< activeFilters.items.length; i++) {
		if (typeof(activeFilters.items[i][0]) != 'undefined') {
			if (stat == activeFilters.items[i][0]) {
				var currentFilterValue = activeFilters.items[i][1];
				if (val.indexOf(">") != -1) {
					var level = val.split(">").length-1;
					for (var j =0;j < level;j++) {						
						spacer += "&nbsp;&nbsp;";
					}
					displayVal += val.substring(val.lastIndexOf(">") + 1);
				}				
				if (currentFilterValue.indexOf(";") != -1) {
					var multipleFilters = currentFilterValue.split(";");
					for (var j=0; j < multipleFilters.length; j++) {
						if (multipleFilters[j] == val) {
							addclass += " epoq_active_filterresult";
							active = true;
							break;
						}
					}
					
				} else if (val == currentFilterValue) {			
					addclass += " epoq_active_filterresult";	
					spacer += "&nbsp;&nbsp;";
					active = true;
					//alert("test");
					break;
				} else if (val.indexOf(currentFilterValue) != -1) {
					spacer += "&nbsp;&nbsp;"
					break;
				} else if (currentFilterValue.indexOf(val) != -1) {
					addclass += " epoq_parent_filterresult";		
					spacer +=  "&lsaquo; "
					countString = "";
					break;
				}
			}
		}
	}
	var replaceVal = epoq_replaceApostrophs(val);
	var executeMethod = "epoq_addFilter(\"" + stat + "\",\"" + replaceVal + "\");";
	if (active) {
		/*executeMethod = "epoq_removeFilter(\"" + stat + "\",\"true\");";*/
		executeMethod = "";
	}
	if (typeof(hierarchicalStats) != 'undefined' && hierarchicalStats == true) {
		if (displayVal.length > 0) {
			val = displayVal;
		}
		val = spacer + val;
	}	
	return "<div class=\"epoq_filterresult " + addclass + " " + visibilityClass + "\" onclick='" + executeMethod +  "'><div class=\"epoq_filterchart\"></div><div class=\"epoq_filter_value " + addclass + "\">" + val + "</div><div class=\"epoq_count_stat\">" + countString +  "</div></div>";
}

function epoq_parseJsonAsRows(data, isTA)
{
	var items = new Array();
	if(typeof(data.result.items) != "undefined")
	{
		var resultitems = data.result.items.item;

		if(typeof(resultitems[0]) != "undefined")
		{
			/*many items*/
			for(var i=0; i<resultitems.length; i++){
				items[resultitems[i]['g:id']['$']] = resultitems[i];
			}
		}
		else
		{
			/*only one item*/
			items[resultitems['g:id']['$']] = resultitems;
		}
	}

	var rows = new Array();
	if(typeof(data.result.findings)!= "undefined")
	{
		if (isTA) {			
			rows[0] = { data:'test', value:'val', result:epoq_ac_suggestions };
		}
		data = data.result.findings.finding;
		if(typeof(data[0]) != "undefined")
		{
			/*many finding*/
			for(var i=0; i < data.length; i++){
				if(typeof(data[i]["match-item"]) != "undefined")
				{
					data[i].nodeRef = data[i]["match-item"]/*items[data[i]["match-item"]["@node_ref"]];*/
				}
				var rowNr = i;
				if (isTA) {	
					rowNr = i+1;
				}
				rows[rowNr] = { data:data[i], value:'val', result:'res' };
				if(typeof(data[i].suggestion)!= "undefined")
				{
					rows[rowNr].result = data[i].suggestion['$'];
				}
			}
		}
		else
		{
		    /*only one finding*/
			if(typeof(data["match-item"]) != "undefined")
			{
				data.nodeRef = data["match-item"];/*items[data["match-item"]["@node_ref"]];*/
			}
			var rowNr = 0;
			if (isTA) {	
				rowNr = 1;
			}
			rows[rowNr] = { data:data, value:'val', result:'res' };
			if(typeof(data.suggestion)!= "undefined")
			{
				rows[rowNr].result = data.suggestion['$'];
			}
		}
		 
	}
	return rows;
}

function epoq_unhide(statclass) {
	var test = "." + statclass;
	jQuery(test).removeClass('epoq_hide');		
	jQuery(".epoq_extend." + statclass).addClass('epoq_hide');	

	epoq_heights(jQuery(".epoq_filterRow"));
	
}

function epoq_hide(statclass) {
	jQuery(".epoq_more." + statclass).addClass('epoq_hide');	
	jQuery(".epoq_extend." + statclass).removeClass('epoq_hide');	
	
	epoq_heights(jQuery(".epoq_filterRow"));
}

function epoq_goToProduct(url, productId) {
	epoq_sendSearchClick(productId, url);
	//window.location = url;
}

function epoq_currencyFormatted(amount)
{
	var i = parseFloat(amount);
	if(isNaN(i)) { i = 0.00; }
	var minus = '';
	if(i < 0) { minus = '-'; }
	i = Math.abs(i);
	i = parseInt((i + .005) * 100);
	i = i / 100;
	s = new String(i);
	if(s.indexOf('.') < 0) { s += '.00'; }
	if(s.indexOf('.') == (s.length - 2)) { s += '0'; }
	s = minus + s;
	s += " " + currencySymbol;
	return s;
}

function epoq_formatOxidItem(row, i, total) {
	var prodHtml;
	if(typeof(row.nodeRef) != "undefined")
	{		
/*		prodHtml = "<div id='body'>";*/
		prodHtml = "";
		for (var j=0;j<resultAttributes.items.length;j++) {
			var fieldName = resultAttributes.items[j][0];
			if(typeof(row.nodeRef[fieldName]) != "undefined") {
				var fieldValue = row.nodeRef[fieldName]['$'];				
				if (fieldName == "c:htmlsnippet") {
					var epoq_place = "product hproduct thin inlist";
					if (total == 1) {
						epoq_place = "product hproduct thin";
					} else if (i == 0) {
						epoq_place = "product hproduct thin firstinlist";
					} else if (i == total - 1) {
						epoq_place = "product hproduct thin lastinlist";
					}
					var re = new RegExp("\\\\","g");
					fieldValue = fieldValue.replace(re, "");
					re = new RegExp("%%SESSIONID%%","g");
					fieldValue = fieldValue.replace(re, epoq_search_sessionId);
					re = new RegExp("product hproduct thin","g");
					fieldValue = fieldValue.replace(re, epoq_place);
					/* replace absolute urls in test shop */
					if (epoq_replaceLiveUrls && epoq_liveUrl.length > 0 && location.protocol != "file:" && location.host != "rs.epoq.de") {					
						re = new RegExp(epoq_liveUrl,"g");
						replacementUrl = location.host;
						//replacementUrl = "http://mosch.kofferprofi.de";
						fieldValue = fieldValue.replace(re, replacementUrl);
					}					
				}				
				prodHtml += fieldValue;				
			}
		}	
		/*if (i != total - 1) {
			prodHtml += "<div class=\"separator\"></div>"
		}*/		
		/*prodHtml += "</div>";*/		
	}
	return prodHtml;
}


function epoq_formatSearchResultItem(row, i){
	var prodHtml;
	if(typeof(row.nodeRef) != "undefined")
	{		
		prodHtml = "";
		if (epoq_useSnippet) {
			if(typeof(row.nodeRef["c:htmlsnippet"]) != "undefined") {
				var re = new RegExp("\\\\","g");
				prodHtml = row.nodeRef["c:htmlsnippet"]['$'].replace(re, "");				
			}
		} else {			
			var onclickMethod = "";
			if(typeof(row.nodeRef[epoq_linkField]) != "undefined") {
				epoq_productUrlLink = row.nodeRef[epoq_linkField]['$']
				/* replace absolute urls in test shop */
				if (epoq_replaceLiveUrls && epoq_liveUrl.length > 0 && location.protocol != "file:" && location.host != "rs.epoq.de") {					
					re = new RegExp(epoq_liveUrl,"g");
					replacementUrl = location.host;
					//replacementUrl = "http://mosch.kofferprofi.de";
					epoq_productUrlLink = epoq_productUrlLink.replace(re, replacementUrl);
				}
				onclickMethod = "epoq_goToProduct('" + epoq_productUrlLink + "','" + row.nodeRef['g:id']['$'] + "');"
			}
			if (i % 2 == 0) {
				prodHtml += "<div class='epoq_resultrow epoq_evenrow' onclick=\"" + onclickMethod + "\">";
			} else {
				prodHtml += "<div class='epoq_resultrow' onclick=\"" + onclickMethod + "\">";
			}
			prodHtml += "<div class='epoq_resultpic'>";		
			if(typeof(row.nodeRef[epoq_imageField]) != "undefined") {
				prodHtml +=  "<img class='epoq_prodimg' src='" + row.nodeRef[epoq_imageField]['$']+ "'/>";
			}
			prodHtml +="</div>"; 
			
			for (var j=0;j<resultAttributes.items.length;j++) {
				var fieldName = resultAttributes.items[j][0];
				if(typeof(row.nodeRef[fieldName]) != "undefined") {
					var fieldValue = row.nodeRef[fieldName]['$'];
					if (fieldName == "g:price") {
						if (tenantId == 'barrabes') {
							if(typeof(row.nodeRef["c:offerPrice"]) != "undefined") {
								fieldValue = "<div class=\"epoq_new_price\">Ahora: " + epoq_currencyFormatted(fieldValue) + "</div><div class=\"epoq_old_price\">Antes: " + epoq_currencyFormatted(row.nodeRef["c:oldPrice"]['$']) + "</div>";
							}
							else
							{
								fieldValue = "Precio " + epoq_currencyFormatted(fieldValue);
							}	
						} else if (tenantId == 'barrabes-fr') {
							if(typeof(row.nodeRef["c:offerPrice"]) != "undefined") {
								fieldValue = "<div class=\"epoq_new_price\">Maintenant: " + epoq_currencyFormatted(fieldValue) + "</div><div class=\"epoq_old_price\">Avant: " + epoq_currencyFormatted(row.nodeRef["c:oldPrice"]['$']) + "</div>";
							}
							else
							{
								fieldValue = "Prix " + epoq_currencyFormatted(fieldValue);
							}
						} else if (tenantId == 'barrabes-en') {
							if(typeof(row.nodeRef["c:offerPrice"]) != "undefined") {
								fieldValue = "<div class=\"epoq_new_price\">Now: " + epoq_currencyFormatted(fieldValue) + "</div><div class=\"epoq_old_price\">List Price: " + epoq_currencyFormatted(row.nodeRef["c:oldPrice"]['$']) + "</div>";
							}
							else
							{
								fieldValue = "Price " + epoq_currencyFormatted(fieldValue);
							}	
						}
					}
					
					if (fieldName == "description") {
						var product_length = fieldValue.length;
						
						if(product_length > 55) {
							var substring1 = fieldValue.substring(0,55);
							var position = substring1.lastIndexOf(" ");
							fieldValue = substring1.substring(0,position);
							fieldValue += " ...";
						}
					}
					
					 else if (typeof(resultAttributes.items[j][2]) != 'undefined' && resultAttributes.items[j][2] == 'html') {
						var re = new RegExp("\\\\","g");
						fieldValue = fieldValue.replace(re, "");
					}
					if (fieldName == "g:price") {
						if(typeof(row.nodeRef["c:offerPrice"]) != "undefined") {
							prodHtml += "<div class=\"epoq_price_con_oferta\">";				
							prodHtml += fieldValue;				
							prodHtml += "</div>";				
						}
						else {
							prodHtml += "<div class=\"" +resultAttributes.items[j][1] + "\">";				
							prodHtml += fieldValue;				
							prodHtml += "</div>";				
						}
					}
					else {
						prodHtml += "<div class=\"" +resultAttributes.items[j][1] + "\">";				
						prodHtml += fieldValue;				
						prodHtml += "</div>";				
					}
				}
			}		
			prodHtml += "</div>";				
		}
		if (location.protocol.indexOf("https") != -1) {
			var re = new RegExp("http","g");
			prodHtml = prodHtml.replace(re, "https");	
		}
		return prodHtml;
	}

	if(typeof(row.suggestion)!= "undefined")
	{
		prodHtml  = "<table border='0' width='600px' ><tr><td width='300px'>Suggestion: " + row.suggestion['$'];
		prodHtml += "</td><td width='300px'>Treffer: " + row.suggestion['@hitcount'] + "</td>"; 
		prodHtml += "</tr></table>";
		return prodHtml;
	}
	return "";
}

function epoq_changepage(page) {	

	epoq_offset = (page-1) * epoq_limit;	 
	jQuery.address.parameter('offset', epoq_offset, false);
}

function epoq_changelimit(newLimit) {
	 epoq_limit = newLimit;
	 jQuery.address.parameter('limit', epoq_limit, false);
}


function epoq_changeSort(sortBy, sortDir) {
	epoq_offset=0;
	epoq_orderBy = sortBy;
	epoq_order = sortDir;	
	jQuery.address.autoUpdate(false);
	jQuery.address.parameter('offset', epoq_offset, false);
	jQuery.address.parameter('orderBy', epoq_orderBy, false);
	jQuery.address.parameter('order', epoq_order, false);
	jQuery.address.update();
	jQuery.address.autoUpdate(true);
}

function epoq_changeQuery(newQuery) {
	jQuery("#epoq_typeaheadbox").val(newQuery);		
	epoq_query = newQuery;
	epoq_resetParameters();
}



function epoq_addFilter(stat, value, reload) {
	/*
	var el = document.getElementById(filterId);
	var classList = el.attr('class').split(' ');
	if (typeof(classList) != undefined) {
		for (var i =0; i < classList.length; i++) {
			if (classList[i] == '')
		}
	}*/
	
	
	value = epoq_restoreApostrophs(value);
	if (reload != false) {
		epoq_offset=0;
	}		
	/*epoq_removeFilter(stat, false);*/
	for (var i = 0; i< activeFilters.items.length; i++) {		
		if (typeof(activeFilters.items[i][0]) == 'undefined') {
			activeFilters.items[i][0] = stat;
			activeFilters.items[i][1] = value;
			break;
		} else if (stat == activeFilters.items[i][0]) {		
			if (stat == "g:price") { /* multiple price or range filters not available atm */
				activeFilters.items[i][1] = value;
			} else {
				if (typeof(epoq_prefilters) != "undefined" && epoq_prefilters == true) {
					/* add filter additionally */
					activeFilters.items[i][1] = activeFilters.items[i][1] + ";" + value;	
				} else {
					/* replace filter */
					activeFilters.items[i][1] = value;
				}
				
				
			}
			
			break;				
		}
	}
	if (reload != false) {
		epoq_setFilters(reload);
	}	
}


function epoq_removeFilter(stat, reload) {
	stat = epoq_restoreApostrophs(stat);
	for (var i = 0; i< activeFilters.items.length; i++) {		
		if (typeof(activeFilters.items[i][0]) != 'undefined' && stat == activeFilters.items[i][0]) {			
			activeFilters.items[i][0] = undefined;
			activeFilters.items[i][1] = undefined;						
		}
	}	
	if (reload != false) {
		epoq_setFilters(reload);
	}
}

function epoq_removeFilters(reload) {
	for (var i = 0; i< activeFilters.items.length; i++) {		
		if (typeof(activeFilters.items[i][0]) != 'undefined') {			
			activeFilters.items[i][0] = undefined;
			activeFilters.items[i][1] = undefined;						
		}
	}	
	/*matchAttr = "";
	matchValue = "";*/
	if (reload != false) {
		epoq_setFilters(reload);
	}
}


function epoq_setFilters() {	
	/*set expert arg*/
	matchAttr = "";
	matchValue = "";
	for (var i = 0; i< activeFilters.items.length; i++) {
		if (typeof(activeFilters.items[i][0]) != "undefined" && typeof(activeFilters.items[i][1]) != "undefined") {
			//expert += "&matchAttr=" + activeFilters.items[i][0] + "&matchValue=" + activeFilters.items[i][1];
			matchAttr += activeFilters.items[i][0] + "Â§";
			matchValue += activeFilters.items[i][1] + "Â§";
		}
	}	
	/* hide animation */
	if (epoq_animateStats) {
		jQuery("#epoq_filters").hide(epoq_animationType,epoq_animationOptionsStats,epoq_animationSpeed,epoq_updateFilters);
	} else {
		epoq_updateFilters();
	}
	
	
}

function epoq_updateFilters() {
	jQuery.address.autoUpdate(false);
	jQuery.address.parameter('offset', epoq_offset, false);
	jQuery.address.parameter('matchAttr', matchAttr, false);
	jQuery.address.parameter('matchValue', epoq_escapeFilterValue(matchValue), false);
	jQuery.address.update();
	jQuery.address.autoUpdate(true);	
}

function epoq_triggerFilters() {
	jQuery("#epoq_filters").toggle();
	jQuery("#epoq_filterHeaderLabel").toggleClass("epoq_open");
	
}

function epoq_acHide() {
	jQuery("#epoq_typeaheadbox").autocomplete("close");
}

function epoq_escapeFilterValue(text) {
	return text.replace(/&/g, "I_I").replace(/\%/g, "IOI");
}

function epoq_unescapeFilterValue(text) {
	return text.replace(/IOI/g, "\%").replace(/I_I/g, "&");
}


function epoq_getEmptyResult() {
	var epoq_filter_active = false;
	for (var i = 0; i< activeFilters.items.length; i++) {
		if (typeof(activeFilters.items[i][0]) != 'undefined') {
			epoq_filter_active = true;
			return "<div class='epoq_resultrow'\">" + epoq_badFilters + "</div>";
		}		
	}
	
	//return "<div class='epoq_resultrow'\">" +  emptyResultHtml + "</div>";
	return "<center><font color='#990000'>" + emptyResultHtml + "</font></center>";
}

function epoq_getEmptyOxidResult() {
	return "<tr><td class=\"txtcell\">" +  emptyResultHtml + "</td></tr>";
}


function epoq_sendSearchClick(productId, newUrl) 
{
	
	var callbackname = epoq_getJsonCallbackName();
	var epoq_currentServer = searchServer;
	if (location.protocol.indexOf("https") != -1) {
		var re = new RegExp("http","g");
		epoq_currentServer = epoq_currentServer.replace(re, "https");	
	}
	
	var searchurl = epoq_currentServer + clickRequest +
	"?tenantId="+ encodeURIComponent(tenantId) +	
	"&sessionId=" + encodeURIComponent(epoq_search_sessionId) +	
	"&qid=" + encodeURIComponent(queryId) +
	"&productId=" + encodeURIComponent(productId) +
	"&callback=" + callbackname + "&format=json";
	
		//contentType: "application/json; charset=utf-8",
		//scriptCharset: "utf-8",
	jQuery.jsonp({
		url: searchurl, 
		contentType: "application/json; charset=iso-8859-1",
		dataType: 'jsonp',	
		scriptCharset: "iso-8859-1",
		callback: callbackname,
		success: function (data) { 	
			window.location = newUrl;
		},
	  	error: function(XHR, textStatus, errorThrown){ 
			window.location = newUrl;
	  	},
	  	timeout: 300
	});
	
}


function epoq_getSearchResult(hideEmptyResult, useBackupCluster)
{	
	var epoq_currentServer = searchServer;
	var epoq_currentTimeout = epoq_searchTimeout;
	var epoq_requestAppendix = "";
	if (useBackupCluster) {
		epoq_currentServer = epoq_backupServer;
		epoq_currentTimeout = epoq_backupTimeout;
		epoq_requestAppendix = "&widgetFallback";
	}
	
	if (location.protocol.indexOf("https") != -1) {
		var re = new RegExp("http","g");
		epoq_currentServer = epoq_currentServer.replace(re, "https");	
	}
	
	
	var searchurl = epoq_currentServer + getResultRequest +
	"?tenantId="+ encodeURIComponent(tenantId) +
	"&format=json" +
	/*"&pretty=true" + */
	"&query=" + encodeURIComponent(epoq_query) + 
	"&sessionId=" + encodeURIComponent(epoq_search_sessionId) + 
	"&orderBy=" + encodeURIComponent(epoq_orderBy) + 
	"&order=" + encodeURIComponent(epoq_order) + 
	"&locakey=" + epoq_search_locakey + 
	"&style=compact" +
	"&full" +
	epoq_requestAppendix;
	
	var matchAttrs = matchAttr.split("Â§");
	var matchValues = matchValue.split("Â§");	
	epoq_removeFilters(false);
	for (var i=0; i<matchAttrs.length;i++) {
		var unprocessedFilterValue = matchValues[i];
		if (matchAttrs[i].length > 0) {
			for (var j=0;j<statFields.items.length;j++) {
				if (matchAttrs[i] == statFields.items[j][1] && statFields.items[j][3] == "slider" && matchValues[i].indexOf("-") != -1) {
					var minRange = 0;
					var maxRange = 0;
					var rangeFilter = matchValues[i].split("-");
					if (rangeFilter.length == 2) {
						minRange = parseInt(rangeFilter[0]);
						maxRange = parseInt(rangeFilter[1]);
						matchValues[i] = ">" + minRange + "," + "<" + maxRange; 
					}		
				}
			}				
			searchurl += "&matchAttr=" + encodeURIComponent(matchAttrs[i]) + "&matchValue=" + encodeURIComponent(matchValues[i]) + "&matchType=filter";
			epoq_removeFilter(matchAttrs[i], false);
			epoq_addFilter(matchAttrs[i], unprocessedFilterValue, false);			
		}			
	}

	
	var callbackname = epoq_getJsonCallbackName();
	var epoq_recommendationPids = new Array();
	
		  //contentType: "application/json; charset=utf-8",
		  //scriptCharset: "utf-8",
	if (typeof(epoq_lastJsonRequest) != 'undefined') {
		epoq_lastJsonRequest.abort();	
	}
	epoq_lastJsonRequest = jQuery.jsonp({
		  url: searchurl, 
		  contentType: "application/json; charset=iso-8859-1",
		  dataType: 'jsonp',
		  scriptCharset: "iso-8859-1",
		  data: "&limit="+epoq_limit+"&offset="+epoq_offset + "&callback="+callbackname,
		  callback: callbackname,
		  success: function (data) {
				epoq_handleSearchResult(data, hideEmptyResult, useBackupCluster);
		  },
	  	  error: function(XHR, textStatus, errorThrown){	
			  if (!useBackupCluster) {
				  epoq_getSearchResult(hideEmptyResult, true);
			  }			  
	  	  },
	  	  timeout: epoq_currentTimeout
	});
}

function epoq_getJsonCallbackName() {
	var rand_no = Math.random();
	rand_no = rand_no * 10000;
	rand_no = Math.ceil(rand_no);
	var callbackname = "C"+(new Date()).getTime()+"_"+rand_no;
	return callbackname;
}

function epoq_handleSearchResult(data, hideEmptyResult, useBackupCluster) {
	
	var epoq_searchactive = typeof(data.result) != 'undefined';
	if (!epoq_searchactive && !useBackupCluster) {
		 epoq_getSearchResult(hideEmptyResult, true);
		 return;
	}
	if(typeof epoq_beforeSearch == 'function') {
		epoq_beforeSearch();
	}
	var formatedResults = "";
	var rows = epoq_parseJsonAsRows(data);
	queryId = data.result.qid['$'];	
	if (rows.length == 0 && hideEmptyResult) {
		return;
	} else {	
		if (!epoq_append) {						
			jQuery("#epoq_searchresult").empty();
			jQuery("#epoq_currentSearch").empty();
			jQuery("#epoq_currentSearch").append(
					"<div id=\"epoq_search\"></div>");			
			var resultArea = "";
			if (!epoq_infiniteScroll) {
				resultArea = 
				"<div class=\"epoq_navigate\">" +
				"<div class=\"epoq_resultsize\"></div>" +
				"<div class=\"epoq_changepage\"></div>" +
				"<div class=\"epoq_sort\"></div>" +
				"</div>" +
				epoq_resultContainer +
				"<div class=\"epoq_navigate\" style=\"display:none\">" +
				"<div class=\"epoq_resultsize\"></div>" +
				"<div class=\"epoq_changepage\"></div>" +				
				"<div class=\"epoq_sort\"></div>" +
				"</div>";
			} else {
				resultArea = 
				"<div class=\"epoq_navigate\">" +
				"<div class=\"epoq_resultsize\"></div>" +
				"<div class=\"epoq_changepage\"></div>" +				
				"<div class=\"epoq_sort\"></div>" +
				"</div>" +
				"</div>" +
				epoq_resultContainer;
				
			}	
			jQuery("#epoq_searchresult").append(resultArea);
	  		var stats = epoq_generateStatsAndNavigation(data);
  			jQuery("#epoq_resultrows").empty();
  			if (rows.length == 0) {
  				if (!epoq_oxid) {
  					formatedResults+= epoq_getEmptyResult();
  				} else {
  					formatedResults+= epoq_getEmptyOxidResult();
  				}
	  		} 
  		} else {
  			epoq_append = false;
  			if (rows.length == 0) {
  				jQuery(".epoq_endofresults").remove();
  				jQuery("#epoq_searchresult").append("<div class=\"epoq_endofresults\">no more results available</div>");
	  		} 
  		}
  		for(i = 0; i < rows.length; i++)
	  	{	
  			if (!epoq_oxid) {
  				formatedResults += epoq_formatSearchResultItem(rows[i].data, i);
  			} else {
  				formatedResults += epoq_formatOxidItem(rows[i].data, i, rows.length);
  			}
  		
	  	}
		jQuery("#epoq_resultrows").append(epoq_preResultHTML + formatedResults + epoq_postResultHTML);
  		if (epoq_animateResult) {		  			
  			jQuery(".epoq_navigate").show(epoq_animationType,epoq_animationOptionsIn,epoq_animationSpeed);
  			jQuery("#epoq_resultrows").show(epoq_animationType,epoq_animationOptionsIn,epoq_animationSpeed);
  		}
  		jQuery(".epoq_navigate").removeAttr("style");
  		if (epoq_infiniteScroll) {
  			contentLoadTriggered = false;
	  		jQuery(window).scroll(function(){
	  			
	  			if(jQuery(window).scrollTop() >= (jQuery("#epoq_resultrows").height() - jQuery(window).height() + 0) && contentLoadTriggered == false)
	  		    {
	  		    	contentLoadTriggered = true;
	  		        var currentPage = ((epoq_offset / epoq_limit) + 1) | 0 ;
	  		        epoq_append = true;
	  		        epoq_changepage(currentPage + 1);
	  		        //alert("scroll");
	  		    }
	  		    
	  		    if (document.documentElement.scrollTop > epoq_filterheight || self.pageYOffset > epoq_filterheight) {
	  		    	jQuery('#epoq_filterresult').css('position','fixed');
	  		    	jQuery('#epoq_filterresult').css('top',epoq_filterheight + 'px');
	  		    	
	  		    	jQuery('#epoq_typeahead').css('position','fixed');
	  		    	jQuery('#epoq_typeahead').css('top','8px');
	  		    } else if (document.documentElement.scrollTop < epoq_filterheight || self.pageYOffset < epoq_filterheight) {
	  		    	jQuery('#epoq_filterresult').css('position','absolute');
	  		    	jQuery('#epoq_filterresult').css('top',epoq_filterheight+'px');
	  		    	jQuery('#epoq_typeahead').css('position','absolute');
	  		    	jQuery('#epoq_typeahead').css('top','8px');
	  		    }
	  		    
	  		    if (document.documentElement.scrollTop > epoq_filterheight || self.pageYOffset > epoq_filterheight) {
	  		    	jQuery('#epoq_search').css('position','fixed');
	  		    	jQuery('#epoq_search').css('top','0px');	
	  		    	jQuery('#epoq_search').css('z-Index','1');
	  		    	jQuery('.epoq_navigate').css('position','fixed');
	  		    	jQuery('.epoq_navigate').css('top','32px');
	  		    	jQuery('.epoq_navigate').css('margin','0px');
	  		    	jQuery('.epoq_navigate').css('z-Index','1');
	  		    } else if (document.documentElement.scrollTop < epoq_filterheight || self.pageYOffset < epoq_filterheight) {
	  		    	jQuery('#epoq_search').css('position','relative');
	  		    	jQuery('#epoq_search').css('top','');
	  		    	jQuery('#epoq_activefilters').css('position','relative');
	  		    	jQuery('#epoq_activefilters').css('top','');
	  		    	jQuery('.epoq_navigate').css('position','relative');
	  		    	jQuery('.epoq_navigate').css('top','');
	  		    }
	  		});
	  		/*
	  		jQuery(window).scroll(function(){
	  			
	  		    if(jQuery(window).scrollTop() >= jQuery("#epoq_filterresult").offset().top)
	  		    {
	  		    	jQuery("#epoq_filterresult").addClass("epoq_floating");			  		    	
	  		    } else {
	  		    	jQuery("#epoq_filterresult").removeClass("epoq_floating");
	  		    }
	  		});
	  		*/
  		}		  		
	}
	
}

function epoq_executeAutocomplete (request, response, useBackupCluster) {
	var epoq_query = request.term;
	var epoq_currentServer = searchServer;
	var epoq_currentTimeout = epoq_searchTimeout;
	var epoq_requestAppendix = "";
	if (useBackupCluster) {
		epoq_currentServer = epoq_backupServer;
		epoq_currentTimeout = epoq_backupTimeout;
		epoq_requestAppendix = "&widgetFallback";
	}	
	if (typeof(epoq_lastJsonRequest) != 'undefined') {
		epoq_lastJsonRequest.abort();	
	}
	var callbackname = epoq_getJsonCallbackName();	
	
	if (location.protocol.indexOf("https") != -1) {
		var re = new RegExp("http","g");
		epoq_currentServer = epoq_currentServer.replace(re, "https");	
	}
	
	var epoq_ac_request =  epoq_currentServer + getResultRequest + "?style=compact&limit=20&format=json&tenantId=" + tenantId +
	"&sessionId=" +  epoq_search_sessionId +		   
	"&locakey=" + epoq_search_locakey +				
	"&callback=" + callbackname +		
	"&query=" + encodeURIComponent(epoq_query) +
	epoq_requestAppendix;
	
		//contentType: "application/json; charset=utf-8",
		//scriptCharset: "utf-8",	
	epoq_query = jQuery("#epoq_typeaheadbox").val();
	epoq_lastJsonRequest = jQuery.jsonp({
		url: epoq_ac_request, 
		contentType: "application/json; charset=iso-8859-1",
		dataType: 'jsonp',
		scriptCharset: "iso-8859-1",	
		callback: callbackname,
		success: function(data) {	
			var epoq_searchactive = typeof(data.result) != 'undefined';
			if (!epoq_searchactive && !useBackupCluster) {
				epoq_executeAutocomplete(request, response, true);
				return;
			}		
			var firstTa = "";
			response(jQuery.map(epoq_parseJsonAsRows(data, true),function(item) {	
				if (typeof(item.data) == 'object') {
					if (firstTa.length == 0) {
						firstTa = epoq_getAutocompleteValue(item.data);
					}
					return {
						label: epoq_formatAutocompleteItem(item.data),
						value: epoq_getAutocompleteValue(item.data)							
					}
				} else {
					return {
						label: epoq_ac_suggestions,
						label2: 'gefunden in:',
						value: 'suggestionsHeader'
					}
				}
					
			}))
			if (epoq_instantResults && firstTa.length > 0) {
				if (firstTa.indexOf(epoq_query) == 0) {
					jQuery("#epoq_suggbox").val(firstTa);							
				}
				epoq_query = firstTa;
				/* when typing hide input without result */
				var hideEmptyResults = true;
				epoq_getSearchResult(hideEmptyResults);
			}
		},
	  	error: function(XHR, textStatus, errorThrown){			    
			// fallback to backup cluser on timeout or error
			if (!useBackupCluster) {
				epoq_executeAutocomplete(request, response, true);
			}			
	  	},
	  	timeout: epoq_currentTimeout
	});		
}


function epoq_addCss(cssCode) {
	var styleElement = document.createElement("style");
	  styleElement.type = "text/css";
	  if (styleElement.styleSheet) {
	    styleElement.styleSheet.cssText = cssCode;
	  } else {
	    styleElement.appendChild(document.createTextNode(cssCode));
	  }
	  document.getElementsByTagName("head")[0].appendChild(styleElement);
}
