/**
 * FILTER functions and features
 * 
 * @author		Giovanni Arciprete <giovanni.arciprete@internetstores.de>
 * @author		Philipp Deutscher <philipp.deutscher@internetstores.de>
 * @copyright	internetstores AG
 */
jQuery(document).ready(function() {
	/**
	 * Globale Variablen
	 */
	// Read Pager
	var shop_id = '';
	var area = '';
	var category_id = '';
	var manufacturer_id = '';
	var productsPerPage = '';
	var viewType = 0;
	var productSorting = '';
	var page = '';

	// others
	var arr_steps = new Array();
	var selectedBox = '';

	// Backup the Start Output
	var saveContentGallery = jQuery('.galleryview').html();
	var saveContentList = jQuery('.listcontents').html();
	var savePager = jQuery('.productlistPagerBox').html();

	// History
	var history = new Array();

	// loading Sliders
	priceSlider(false, false);
	multiSlider(false, false);
	frameSlider(false, false);

	// check Cookie for callBack OR if Wohnstilfilter active from livingo.de
	var arr_cookie_catID = jQuery.cookie('callBack_catID');
	if(arr_cookie_catID != null && arr_cookie_catID == jQuery('.pf_form .pf_masterBox_content .config_data .pf_cat_id').text()) {
		setSelectedFilter();
		searchWithFilterData('', true);
	}
	else if(jQuery.cookie('FilterToolTippActiveUid') != null && jQuery.cookie('FilterToolTippActiveUid') != '') {
		selectWohnstilFilter(jQuery.cookie('FilterToolTippActiveUid'));
	}

	/**
	 * Pager Funktionen
	 * 
	 * @TODO	Ist noch leicht fehlerhaft, wenn man den unteren Pager nimmt
	 *			funktioniert das ganze ueberhaupt nicht.
	 */
	jQuery('select.ajax').live('change', function() {
		var name = jQuery(this).attr('name');
		name = name.substring(0, 1).toUpperCase() + name.substring(1);
		var className = jQuery(this).parent().attr('class');
		var selectNum = jQuery(this).val();
		
		jQuery.cookie(name, selectNum, {path: '/', expires: 0});
		jQuery('.' + className + ' select option').removeAttr('selected');
		jQuery('.' + className).val(selectNum);
		jQuery(this).val(selectNum); // don't deleted!

		getAllFilterData();
	});
	
	jQuery('.productlistPagerPager a.ajax').live('click', function() {
		jQuery('.productlistPagerPager a.active').removeClass('active');
		jQuery(this).addClass('active');
		
		var ppp = jQuery(this).text();
		
		if(ppp == '20') { ppp = 21; }
		if(ppp == '100') { ppp = 99; }

		jQuery.cookie(name, ppp, {path: '/', expires: 0});
		
		getAllFilterData();
	});

	jQuery('.productlistPagerViews span.ajax').live('click', function(e) {
		var type = jQuery(this).attr('id');
		jQuery.cookie('ProductslistViewType', type, {path: '/', expires: 0});

		if(jQuery(this).hasClass('viewType' + type)) {
			jQuery(this).removeClass('viewType' + type);
			jQuery(this).addClass('viewType' + type + 'active');
		}

		getAllFilterData();
	});

	jQuery('.productlistPagerPagination a.ajax').live('click', function(e) {
		var saveInt_page = jQuery('.productlistPagerPagination a.active').first().text();
		jQuery('.productlistPagerPagination a.active').removeClass('active');
		jQuery(this).addClass('active');

		var int_page = jQuery('.productlistPagerPagination a.active').text();
		var valFirstElement = jQuery('.productlistPagerPagination a').first().text();

		if(int_page == '>') {
			int_page = parseFloat(saveInt_page)+1;
		}
		else if(int_page == '<') {
			int_page = parseFloat(saveInt_page)-1;
		}
		else if(isNaN(int_page) && (!isNaN(valFirstElement) || (isNaN(valFirstElement) && !(jQuery('.productlistPagerPagination a').first().hasClass('active'))))) {
			var ppp = jQuery('.productlistPagerPager a.active').first().text();
			if(ppp == '20') { ppp = 21; }
			if(ppp == '100') { ppp = 99; }
			var count = jQuery('.productlistPagerResult strong').first().text();
			int_page = Math.ceil(count / ppp);
		}
		else if(isNaN(int_page) && isNaN(valFirstElement)) {
			int_page = 1;
		}

		getAllFilterData(int_page);
	});


	/**
	 * Minimieren, Maximieren und Reseten der ProduktFilter
	 */
	jQuery('.pf_switchBox_menue span').live('click', function(e) {
		if(jQuery(this).hasClass('pf_reset')) {
			if(jQuery(this).parent().hasClass('pf_masterBox_menu')) {
				resetALL();
			}
			else {
				resetFilter(jQuery(this));
			}

			/*
			 *  Ueberpruefen ob alle Filter deaktiviert sind:
			 *  wenn ja: alten Zustand wiederherstellen
			 *  wenn nein: lade neuen Zustand
			 */
			if(jQuery('.filters').find('.selected').length > 0) {
				getAllFilterData();
			}
			else {
				loadingScreen(true);	// Einblenden
				resetALL();				// alles zuruecksetzen
				loadingScreen(false);	// Ausblenden
			}
		}
		else {
			minMaxFilter(jQuery(this), false);
		}
	});

	jQuery('.pf_switchBox_menue label').click(function(e) {
		minMaxFilter(jQuery(this), true);
	});


	/**
	 * Markierungen setzen (selected)
	 * 
	 * d.h. - Hovereffekt einbauen
	 *		- Click Event (via Click selected setzen und Suche auslösen)
	 */
	jQuery('ul.grid li').live('mouseover mouseout click', function(event) {
		if(event.type == 'mouseover') {
			if(!jQuery(this).hasClass('mouseover')) {
				jQuery(this).addClass('mouseover');
			}
		}

		if(event.type == 'mouseout') {
			if(jQuery(this).hasClass('mouseover')) {
				jQuery(this).removeClass('mouseover');
			}
		}

		if(event.type == 'click') {
			if(!jQuery(this).hasClass('disabledFilter')) {
				// selectedFilterBox setzen und entfernen
				jQuery('.selectedFilterBox').removeClass('selectedFilterBox');
				jQuery(this).parent().parent().parent().addClass('selectedFilterBox');

				// selected auf einzelne Filter setzen oder entfernen und History fuellen
				if(jQuery(this).hasClass('selected')) {
					jQuery(this).removeClass('selected');
				}
				else {
					jQuery(this).addClass('selected');
					history.push(jQuery(this).children().attr('class'));
				}

				getAllFilterData();
			}
		}
	});

	jQuery('.feature li .pf-checkbox').click(function() {
		if(jQuery(this + ':checked')) {
			// selected Filter Box
			jQuery('.selectedFilterBox').removeClass('selectedFilterBox');
			jQuery(this).parent().parent().parent().parent().addClass('selectedFilterBox');
			
			// Filter LI
			if(jQuery(this).parent().hasClass('selected')) {
				jQuery(this).parent().removeClass('selected');
			}
			else {
				jQuery(this).parent().addClass('selected');
				history.push(jQuery(this).attr('class'));
			}
			
			getAllFilterData();
		}
	});




	/**
	 * loading priceSlider
	 * 
	 * Erstellt den PriceSlider und mit den Parametern kann man einstellen
	 * ob der Slider einen Update bekommt und die Range Anpasst auf das Suchergebnis
	 * oder ob der Slider ein Reset vollzogen werden soll
	 * 
	 * @param	update			bool (true || false)
	 * @param	reset			bool (true || false)
	 * @param	updateData		array
	 */
	function priceSlider(update, reset, updateData) {
		var sliderData = jQuery('.pf-slider-range').parent().children('ul').children('.pf_price_helper').children();
		var currency = sliderData.children('.pf_data_max_currency').text();
		var min_range = sliderData.children('.pf_data_min_rangeSave').text();
		var max_range = sliderData.children('.pf_data_max_rangeSave').text();

		jQuery('.pf-slider-range').parent().children('.pf-slider-amount-min').html(currency + ' ' + Math.floor(min_range));
		jQuery('.pf-slider-range').parent().children('.pf-slider-amount-max').html(currency + ' ' + Math.ceil(max_range));

		arr_steps = calcSteps(parseFloat(min_range), parseFloat(max_range));
		var valueMin = 0;
		var valueMax = arr_steps['steps'];
		var valueStepMin = 0;
		var valueStepMax = arr_steps['steps'];
		var maxStepIndex = 0;

		if(update == true) {
			var valueStepMinFind = false;
			var valueStepMaxFind = false;
			jQuery.each(arr_steps['values'], function(index, data) {
				if(data >= updateData.min_price && valueStepMinFind == false) {
					valueStepMin = index-1;
					if(valueStepMin == -1) { valueStepMin = 0; }
					valueStepMinFind = true;
					jQuery('.pf-slider-range').parent().children('.pf-slider-amount-min').html(currency + ' ' + arr_steps['values'][valueStepMin]);
				}
				
				if(data >= updateData.max_price && valueStepMaxFind == false) {
					valueStepMax = index;
					valueStepMaxFind = true;
					jQuery('.pf-slider-range').parent().children('.pf-slider-amount-max').html(currency + ' ' + arr_steps['values'][valueStepMax]);
				}
				maxStepIndex = index;
			});
		}
		
		// fuer Reset - Werte setzen
		if(reset == true) {
			jQuery('.pf-slider-range').parent().children('.pf-slider-amount-min').html(currency + ' ' + Math.floor(min_range));
			jQuery('.pf-slider-range').parent().children('.pf-slider-amount-max').html(currency + ' ' + Math.ceil(max_range));
		}

		jQuery('.pf-slider-range').slider({
			range: true,
			min: valueMin,
			max: valueMax,
			values: [valueStepMin, valueStepMax],
			step: 1,
			disabled: false,

			slide: function(event, ui) {
				jQuery(this).parent().children('.pf-slider-amount-min').html(currency + ' ' + Math.floor(arr_steps['values'][ui.values[0]]));
				jQuery(this).parent().children('.pf-slider-amount-max').html(currency + ' ' + Math.ceil(arr_steps['values'][ui.values[1]]));
			},

			stop: function(event, ui) {
				sliderData.children('.pf_data_min_range').html(Math.floor(arr_steps['values'][ui.values[0]]));
				sliderData.children('.pf_data_max_range').html(Math.ceil(arr_steps['values'][ui.values[1]]));
				sliderData.parent().addClass('selected');

				history.push(jQuery(this).children().attr('class'));
				jQuery('.selectedFilterBox').removeClass('selectedFilterBox');
				jQuery(this).parent().parent().addClass('selectedFilterBox');
				getAllFilterData();
			}
		});
	}

	/**
	 * loading multiSlider
	 * 
	 * Hier wird zum einem der Range Slider und zum anderem der Normale Slider geladen.
	 * Mit den Parametern kann man einstellen ob der Slider einen Update bekommt und die
	 * Range Anpasst auf das Suchergebnis oder ob der Slider ein Reset vollzogen werden soll
	 * 
	 * @param	update			bool	(true || false)
	 * @param	reset			bool	(true || false)
	 * @param	updateData		array
	 * @param	filterLabelUR	var		(damit kann man den Slider ausfindig machen der bearbeitet werden muss)
	 */
	function multiSlider(update, reset, updateData, filterLabelUR) {
		// Range Slider
		jQuery('.pf-sliderFeature-range').each(function(index, obj) {
			var loading = true;
			var sliderData = jQuery(this).parent().children('ul').children('.pf-sliderFeature-helper').children();
			var filterLabel = '';
			var maxSteps = sliderData.children('.pf_data_steps_range').text();
			
			sliderData.children('.pf_data_index').html(index);
			filterLabel = jQuery(this).parent().prev().children('label').text();

			// fuer Reset - Werte setzen
			if(reset == true) {
				jQuery(this).parent().children('.pf-sliderFeature-amount-min').html(sliderData.children('.pf_data_min_startFt').text());
				jQuery(this).parent().children('.pf-sliderFeature-amount-max').html(sliderData.children('.pf_data_max_startFt').text());
				sliderData.children('.pf_data_stepValues_range').children().removeClass('show').addClass('show');
			}
			
			if(update == true) {
				if((filterLabel == filterLabelUR) && updateData != null) {
					sliderData.children('.pf_data_stepValues_range').children().removeClass('show');
					jQuery.each(updateData, function(index, obj) {
						jQuery('.' + filterLabel + index).addClass('show');
						jQuery('.' + filterLabel + index + '.counting').html(obj.counting);
					});
					var items = sliderData.children('.pf_data_stepValues_range').children('.item.show');
					var x = items.length;
					maxSteps = x;

					if(x > 1) { maxSteps = --x; }

					var v1 = items.eq(0).text();
					var v2 = items.eq(--x).text();
					var unit = sliderData.children('.pf_data_unit').text();
					
					jQuery(this).parent().children('.pf-sliderFeature-amount-min').html(v1+unit);
					jQuery(this).parent().children('.pf-sliderFeature-amount-max').html(v2+unit);
					
					loading = true;
				}
				else {
					loading = false;
				}
			}
			
			
			if(loading == true) {
				jQuery(this).slider({
					range: true,
					min: 0,
					max: maxSteps,
					values: [0, maxSteps],
					step: 1,
					disabled: false,

					slide: function(event, ui) {
						var items = sliderData.children('.pf_data_stepValues_range').children('.item.show');
						var v1 = items.eq(ui.values[0]).text();
						var v2 = items.eq(ui.values[1]).text();
						var unit = sliderData.children('.pf_data_unit').text();

						jQuery(this).parent().children('.pf-sliderFeature-amount-min').html(v1 + unit);
						jQuery(this).parent().children('.pf-sliderFeature-amount-max').html(v2 + unit);
					},

					stop: function(event, ui) {
						var items = sliderData.children('.pf_data_stepValues_range').children('.item.show');
						var v1 = items.eq(ui.values[0]).text();
						var v2 = items.eq(ui.values[1]).text();

						sliderData.children('.pf_data_min_rangeFt').html(v1);
						sliderData.children('.pf_data_max_rangeFt').html(v2);
						sliderData.parent().addClass('selected');
						jQuery(this).children().addClass('range' + index);

						history.push(jQuery(this).children().attr('class'));
						jQuery('.selectedFilterBox').removeClass('selectedFilterBox');
						jQuery(this).parent().parent().addClass('selectedFilterBox');
						getAllFilterData();
					}
				});
			}
		});
		
		// Normal Slider
		jQuery('.pf-sliderFeature-slider').each(function(index, v) {
			var loading = true;
			var sliderData = jQuery(this).parent().children('ul').children('.pf-sliderFeature-helper').children();
			var filterLabel = '';
			var sliderPos = 0;

			sliderData.children('.pf_data_index').html(index);
			filterLabel = jQuery(this).parent().prev().children('label').text();

			// fuer Reset - Werte setzen
			if(reset == true) {
				jQuery(this).parent().children('.pf-sliderFeature-amount').html(sliderData.children('.pf_data_minStart').text());
				sliderData.children('.pf_data_stepValues_slider').children().removeClass('show').addClass('show');
			}

			if(update == true) {
				if((filterLabel == filterLabelUR) && updateData != null) {
					sliderData.children('.pf_data_stepValues_slider').children().removeClass('show');
					jQuery.each(updateData, function(index, obj) {
						jQuery('.' + filterLabel + index).addClass('show');
						jQuery('.' + filterLabel + index + '.counting').html(obj.counting);
					});
					var item = sliderData.children('.pf_data_stepValues_slider').children('.item.show');
					var items = sliderData.children('.pf_data_stepValues_slider').children('.item');
					sliderPos = (item.index() / 2);
					var v1 = items.eq(sliderPos).text();
					var unit = sliderData.children('.pf_data_unit').text();
					
					jQuery(this).parent().children('.pf-sliderFeature-amount').html(v1 + unit);
					
					loading = true;
				}
				else {
					loading = false;
				}
			}

			if(loading == true) {
				jQuery(this).slider({
					range: false,
					value: sliderPos,
					min: 0,
					max: sliderData.children('.pf_data_steps_slider').text(),
					step: 1,
					disabled: false,

					slide: function(event, ui) {
						var w1 = sliderData.children('.pf_data_stepValues_slider').children('.item').eq(ui.value).text();
						jQuery(this).parent().children('.pf-sliderFeature-amount').html(w1);
					},

					stop: function(event, ui) {
						var w1 = sliderData.children('.pf_data_stepValues_slider').children('.item').eq(ui.value).text();
						sliderData.children('.pf_data_min').html(w1);
						sliderData.parent().addClass('selected');
						jQuery(this).children().addClass('slider' + index);

						history.push(jQuery(this).children().attr('class'));
						jQuery('.selectedFilterBox').removeClass('selectedFilterBox');
						jQuery(this).parent().parent().addClass('selectedFilterBox');
						getAllFilterData();
					}
				});
			}
		});
	}
	
	/**
	 * loading frameSlider
	 * 
	 * @TODO	muss noch richtig Dokumentiert werden und erstmal richtig 
	 *			erstellt und ausgebaut werden.
	 * 
	 * @param	update			bool (true || false)
	 * @param	reset			bool (true || false)
	 * @param	updateData		array
	 */
	function frameSlider(update, reset, updateData) {
		var min = 85;
		var max = 210;
		var steps = 5;
		
		jQuery('.pf-sliderFrame').slider({
			range: false,
			min: min,
			max: max,
			step: steps,
			value: ((((max-min)/2)+min)-(steps/2)),
			disabled: false,
			
			slide: function(event, ui) {
				jQuery(this).parent().children('.pf-sliderFrame-amount-crnt').html(ui.value + ' cm');
			},
			stop: function(event, ui) {
				console.log(ui.value + ' cm');
			}
		})
		jQuery('.pf-sliderFrame').parent().children('.pf-sliderFrame-amount-crnt').html(jQuery('.pf-sliderFrame').slider('option', 'value') + ' cm');
	}



	function frameSliderCalc() {
		var arrArr = new Array();
		// min und max Wert  -  Koerpergroesse
		// Kinder
		arrArr[0]['min'] = 85;		arrArr[0]['max'] = 115;
		arrArr[1]['min'] = 100;		arrArr[1]['max'] = 115;
		arrArr[2]['min'] = 110;		arrArr[2]['max'] = 125;
		arrArr[3]['min'] = 115;		arrArr[3]['max'] = 140;
		arrArr[4]['min'] = 130;		arrArr[4]['max'] = 155;
		// Jugend und Erwachsene
		arrArr[5]['min'] = 155;		arrArr[5]['max'] = 165;
		arrArr[6]['min'] = 165;		arrArr[6]['max'] = 170;
		arrArr[7]['min'] = 170;		arrArr[7]['max'] = 175;
		arrArr[8]['min'] = 175;		arrArr[8]['max'] = 180;
		arrArr[9]['min'] = 180;		arrArr[9]['max'] = 185;
		arrArr[10]['min'] = 185;	arrArr[10]['max'] = 190;
		arrArr[11]['min'] = 190;	arrArr[11]['max'] = 195;
		arrArr[12]['min'] = 195;	arrArr[12]['max'] = 200;
		// Einrad
		arrArr[13]['min'] = 56;		arrArr[13]['max'] = 73;
		arrArr[14]['min'] = 62;		arrArr[14]['max'] = 82;
		arrArr[15]['min'] = 67;		arrArr[15]['max'] = 87;
		arrArr[16]['min'] = 72;		arrArr[16]['max'] = 92;
		// Rennrad
		
		// min und max Wert  -   rahmengroesse in zoll
		// Kinder
		arrArr[0]['zoll']['min'] = 12;
		arrArr[1]['zoll']['min'] = 16;
		arrArr[2]['zoll']['min'] = 18;
		arrArr[3]['zoll']['min'] = 20;
		arrArr[4]['zoll']['min'] = 24;
		// Jugend und Erwachsene
		arrArr[5]['zoll']['min'] = 14;	arrArr[5]['zoll']['max'] = 15;
		arrArr[6]['zoll']['min'] = 15;	arrArr[6]['zoll']['max'] = 16;
		arrArr[7]['zoll']['min'] = 16;	arrArr[7]['zoll']['max'] = 17;
		arrArr[8]['zoll']['min'] = 17;	arrArr[8]['zoll']['max'] = 18;
		arrArr[9]['zoll']['min'] = 18;	arrArr[9]['zoll']['max'] = 19;
		arrArr[10]['zoll']['min'] = 19;	arrArr[10]['zoll']['max'] = 21;
		arrArr[11]['zoll']['min'] = 21;	arrArr[11]['zoll']['max'] = 22;
		arrArr[12]['zoll']['min'] = 22;	arrArr[12]['zoll']['max'] = 23;
		// Einrad
		arrArr[13]['zoll']['min'] = 16;	arrArr[12]['zoll']['max'] = 18;
		arrArr[14]['zoll']['min'] = 20;
		arrArr[15]['zoll']['min'] = 24;
		arrArr[16]['zoll']['min'] = 26;
		// Rennrad
		
		// min und max Wert  -  rahmengroesse in cm
		// Kinder
		// Jugend und Erwachsene
		arrArr[5]['cm']['min'] = 35;	arrArr[5]['cm']['max'] = 38;
		arrArr[6]['cm']['min'] = 38;	arrArr[6]['cm']['max'] = 41;
		arrArr[7]['cm']['min'] = 41;	arrArr[7]['cm']['max'] = 43;
		arrArr[8]['cm']['min'] = 43;	arrArr[8]['cm']['max'] = 46;
		arrArr[9]['cm']['min'] = 46;	arrArr[9]['cm']['max'] = 48;
		arrArr[10]['cm']['min'] = 48;	arrArr[10]['cm']['max'] = 53;
		arrArr[11]['cm']['min'] = 53;	arrArr[11]['cm']['max'] = 56;
		arrArr[12]['cm']['min'] = 56;	arrArr[12]['cm']['max'] = 58;
		// Einrad
		// Rennrad
		
		// type indexer  -  Je nach Fahrradtype werden andere Werte benoetigt
		var indexer = new Array();
		indexer['Mountainbikes'] = new Array(5,6,7,8,9,10,11,12);
		indexer['Jugenfahrrad'] = new Array(5,6,7,8,9,10,11,12);
		indexer[''] = new Array();
		indexer[''] = new Array();
		indexer['Kinderrad'] = new Array(0,1,2,3,4);
		indexer['Einrad'] = new Array(13,14,15,16);
	}

	/**
	 * minimieren und maximieren
	 * 
	 * Hier wird die FilterContent Box minimiert oder maximiert
	 * 
	 * @param	e			object	(event)
	 * @param	label		bool
	 */
	function minMaxFilter(e, label) {
		var menue = e.parent();
		var content = e.parent().next();
		var min = 'pf_minimized';
		var max = 'pf_maximized';
		
		if(menue.hasClass('open')) {
			if(label == false) {
				e.html('<img src="fileadmin/_fde/images/rde/Navi/pf_minimized.gif" alt="+" />').removeClass(max).addClass(min);
			}
			else if(label == true) {
				menue.children('.' + min).html('<img src="fileadmin/_fde/images/rde/Navi/pf_minimized.gif" alt="+" />').removeClass(max).addClass(min);
			}
			
			menue.removeClass('open').addClass('close');
			content.slideToggle('slow', function() { /* finish Animation */ });
		}
		else if(menue.hasClass('close')) {
			if(label == false) {
				e.html('<img src="fileadmin/_fde/images/rde/Navi/pf_maximized.gif" alt="-" />').removeClass(min).addClass(max);
			}
			else if(label == true) {
				menue.children('.' + max).html('<img src="fileadmin/_fde/images/rde/Navi/pf_maximized.gif" alt="-" />').removeClass(min).addClass(max);
			}
			
			menue.removeClass('close').addClass('open');
			content.slideToggle('slow', function() { /* finish Animation */ });
		}
		
	}


	/**
	 * get all Filter Datas
	 * 
	 * Holt alle Filtereigenschaften, die die Classe selected beinhaltet.
	 * 
	 * @param	int_page		int
	 */
	function getAllFilterData(int_page) {
		if(jQuery('.filters').find('.selected').length > 0) {
			var i = 0;
			var arr_tempData = new Array();
			var arr_zwsData = new Array();
			var arr_result = new Array();
			var arr_config = new Array();

			jQuery('li.selected .data').each(function(index, dataCont) {
				var childData = jQuery(dataCont).children();

				if(jQuery(childData).hasClass('pf_data_stepValues_range')) {
					arr_zwsData = setSearchTerm(childData);

					jQuery.each(arr_zwsData, function(index, value) {
						arr_tempData[i] = arr_zwsData[index];
						i++;
					});
				}
				else {
					arr_tempData[i] = setSearchTerm(childData);
					i++;
				}
			});

			arr_config = setConfig(int_page);
			arr_result['config'] = arr_config;
			arr_result['search'] = arr_tempData;

			searchWithFilterData(arr_result);
		}
		else {
			loadingScreen(true);	// Einblenden
			resetALL();				// alles zuruecksetzen
			loadingScreen(false);	// Ausblenden
		}
	}


	/**
	 * Suche ausfuehren
	 * 
	 * Erstellt ein Serializiertes Array. Dies dann per Ajax uebertragen wird
	 * und die Lucene Suche damit arbeiten kann.
	 * 
	 * @param	arr_filterData		array
	 */
	function searchWithFilterData(arr_filterData, cookie) {
		var obj_php_config = '';
		var obj_php_search = '';
		var total_config = 0;
		var total_search = 0;

		loadingScreen(true);	// Einblenden der Loading

		if(cookie != true) {
			selectedBoxFind();		// sucht nach der dem Div-Element mit der Classeneigenschaft selectedFilterBox

			// CONFIG
			for(var key in arr_filterData['config']) {
				++total_config;
				obj_php_config = obj_php_config + "s:" +
					String(key).length + ":\"" + String(key) + "\";s:" +
					String(arr_filterData['config'][key]).length + ":\"" + 
					String(arr_filterData['config'][key]) + "\";";
			}
			obj_php_config = "a:" + total_config + ":{" + obj_php_config + "}";

			// FILTER
			for(var i = 0; i < arr_filterData['search'].length; i++) {
				++total_search;
				obj_php_search = obj_php_search + "i:" + i + ";a:2:{";
				for(var key in arr_filterData['search'][i]) {
					obj_php_search = obj_php_search + "s:" +
						String(key).length + ":\"" + String(key) + "\";s:" +
						String(arr_filterData['search'][i][key]).length + ":\"" + 
						String(arr_filterData['search'][i][key]) + "\";";
				}
				obj_php_search = obj_php_search + "}";
			}
			obj_php_search = "a:" + total_search + ":{" + obj_php_search + "}";
		}
		else {
			obj_php_config = jQuery.cookie('callBack_obj_php_config');
			obj_php_search = jQuery.cookie('callBack_obj_php_search');
			selectedBox = jQuery.cookie('callBack_selectedBox');
		}

		jQuery.ajax({
			type: 'POST',
			url: 'index.php?eID=is_shop_filter_search',
			contentType: "application/x-www-form-urlencoded; charset=utf-8",
			dataType: 'json',
//			dataType: 'html',
			data: {
				obj_php_config: obj_php_config,
				obj_php_search: obj_php_search,
				selectedBox: selectedBox
			},

			error:
				function(obj, textStatus, errorThrown) {
					//alert("status=" + textStatus + ",error=" + errorThrown);
					loadingScreen(false);	// Ausblenden
				},

			success:
				function(data, textStatus) {
					loadingScreen(false);	// Ausblenden

//					jQuery('DIV.galleryview').html(data);
//					jQuery('DIV.listcontents').html(data);

					jQuery('DIV.galleryview').replaceWith(data['content']);
					jQuery('DIV.listcontents').replaceWith(data['content']);
					jQuery('DIV.productlistPagerBox').replaceWith(data['pager']);

//					jQuery('DIV.galleryview').replaceWith(arr_data['content']);
//					jQuery('DIV.listcontents').replaceWith(arr_data['content']);
//					jQuery('DIV.productlistPagerBox').replaceWith(arr_data['pager']); // für live
//					jQuery('DIV.productlist-pager').replaceWith(arr_data['pager']);	// aktuell zum testen

					callBack(false, obj_php_config, obj_php_search, selectedBox);
					if(data.ajax != '') {
						// Filter feature (Ausgrauen, Counting, ...etc.)
						changeFilters(data.ajax);
					}
				}
		});
	}


	/**
	 * set Configuration
	 * 
	 * Erstellt die Konfigurations Daten fuer die Suche, damit man 
	 * bessere unterscheidungen der Shops durchfuehren kann.
	 * 
	 * @param	int_page		int
	 * @return	arr_pfConfig	array
	 */
	function setConfig(int_page) {
		var arr_pfConfig = new Array();

		if(jQuery('.pf_form .pf_masterBox_content .config_data') != '') {
			shop_id = jQuery('.pf_shop_id').text();
			area = jQuery('.pf_area_id').text();
			category_id = jQuery('.pf_cat_id').text();
			manufacturer_id = jQuery('.pf_man_id').text();
		}

		// Aufzurufende Seite ist immer 1, es sei denn der Eventlistener wurde über die Pagination gestartet
		if(int_page >=1) {
			page = int_page;
		}
		else {
			page = 1;
		}

		// ProduktlistSorting
		if(jQuery.cookie('ProductslistSorting') == null) {
			productSorting =  jQuery('.productlistPagerFilter select option:selected').val();
		}
		else {
			productSorting = jQuery.cookie('ProductslistSorting');
		}

		// ProductsPerPage
		if(jQuery.cookie('ProductsPerPage') != null) {
			productsPerPage = jQuery.cookie('ProductsPerPage');
		}
		else {
			productsPerPage = jQuery('.productlistPagerPager a.active').first().text();
			if(productsPerPage == '20') { productsPerPage = 21; }
			if(productsPerPage == '100') { productsPerPage = 99; }
		}

		// ViewType
		if(jQuery.cookie('ProductslistViewType') == null) {
			viewType = 0;
			jQuery('.productlistPagerViews').eq(0).children().each(function(index, value) {
				if(jQuery(this).hasClass('viewType' + index + 'active')) {
					viewType = index;
				}
			});
		}
		else {
			viewType = jQuery.cookie('ProductslistViewType');
		}

		arr_pfConfig['shopId']  = shop_id;
		arr_pfConfig['area'] = area;
		arr_pfConfig['productsPerPage'] = productsPerPage;
		arr_pfConfig['categoryId'] = category_id;
		arr_pfConfig['manufacturerId'] = manufacturer_id;
		arr_pfConfig['viewtype']= viewType;
		arr_pfConfig['productSorting'] = productSorting;
		arr_pfConfig['page'] = page;

		return arr_pfConfig;
	}


	/**
	 * set Searching Terms
	 * 
	 * Search Term zusammen bauen fuer die Suche im Lucene Index
	 * 
	 * @param	tempObj		object
	 * @return	term		array
	 */
	function setSearchTerm(tempObj) {
		var category = '';
		var special_filter_type = '';
		var size_filter_type = '';
		var features_value = '';
		var features_name = '';
		var featureRange_value = new Array();
		var term = new Array();
		var minPrice = '';
		var maxPrice = '';
		var currency = '';
		var sliderIndex = '';

		var bool_feature_Name = false;
		var bool_price = false;
		var bool_featureRange = false;

		jQuery(tempObj).each(function(index, dataValue) {
			if(jQuery(dataValue).attr('class') == 'pf_data_headline') {
				category = jQuery(this).text();
			}
			else if(jQuery(dataValue).attr('class') == 'pf_special_filter_type') {
				special_filter_type = jQuery(this).text();
			}
			else if(jQuery(dataValue).attr('class') == 'pf_size_filter_type') {
				size_filter_type = jQuery(this).text();
			}
			else if(jQuery(dataValue).attr('class') == 'pf_data_index') {
				sliderIndex = jQuery(this).text();
			}
			else if(jQuery(dataValue).attr('class') == 'pf_data_features_name') {
				features_name  = jQuery(this).text();
				bool_feature_Name = true;
			}
			else if(jQuery(dataValue).attr('class') == 'pf_data_features_values') {
				features_value = jQuery(this).text();
			}
			else if(jQuery(dataValue).attr('class') == 'pf_data_min_range') {
				bool_price = true;
				minPrice = jQuery(this).text();
			}
			else if(jQuery(dataValue).attr('class') == 'pf_data_max_range') {
				bool_price = true;
				maxPrice = jQuery(this).text();
			}
			else if(jQuery(dataValue).attr('class') == 'pf_data_max_currency') {
				bool_price = true;
				currency = jQuery(this).text();
			}
			else if(jQuery(dataValue).attr('class') == 'pf_data_stepValues_range') {
				bool_featureRange = true;
				var handlePos = jQuery('.pf-sliderFeature-range').eq(sliderIndex).slider('option', 'values');
				jQuery(this).children('.item').each(function(inx, val) {
					if(handlePos[0] <= inx && handlePos[1] >= inx) {
						featureRange_value.push(jQuery(val).text()); 
					}
				});
			}
			else if(jQuery(dataValue).attr('class') == 'pf_data_stepValues_slider') {
				bool_feature_Name = true;
				var posi = jQuery('.pf-sliderFeature-slider').eq(sliderIndex).slider('option', 'value');
				features_value = jQuery(this).children('.item').eq(posi).text();
			}
		});

		// spezial Filter
		if(special_filter_type < 7 && special_filter_type > 1) {
			term['searchTerm'] = features_value;

			// Nur bei Groessenfiltern
			if(special_filter_type == 3) {
				term['special_filter_type'] = special_filter_type + '-' + size_filter_type;
			}
			else {
				term['special_filter_type'] = special_filter_type;
			}
		}
		else if(bool_featureRange) {
			jQuery.each(featureRange_value, function(index, value) {
				var arr = new Array();
				arr['special_filter_type'] = special_filter_type;

				if(bool_feature_Name && category != '') {
					arr['searchTerm'] = category + '::' + features_name + '::' + value;
				}
				else{
					arr['searchTerm'] = features_name + '::' + value;
				}

				term.push(arr);
			});
		}
		else if(bool_feature_Name) {
			term['special_filter_type'] = special_filter_type;
			if(category != '') {
				term['searchTerm'] = category + '::' + features_name + '::' + features_value;
			}
			else if(features_name == 'Wohnstil' || features_name == 'Livingstyle') {
				term['searchTerm'] = 'Wohnstil::Typ::' + features_value;

				if(features_value == 'ohne Stil') {
					term['searchTerm'] = 'Wohnstil::Typ::---';
				}
			}
			else {
				term['searchTerm'] = features_name + '::' + features_value;
			}
		}
		else if(bool_price) {
			term['special_filter_type'] = special_filter_type;
			term['searchTerm'] = minPrice + ',' + maxPrice;
		}
		else {
			term['special_filter_type'] = special_filter_type;
			term['searchTerm'] = category + '::' + features_value;
		}

		return term;
	}


	/**
	 * calculation Steps
	 * 
	 * Berechnet anhand des minimalen und maximalen Preis die Groesse der Steps
	 * im Slider und sendet diese mit return zurueck.
	 * 
	 * @param	int_min			int
	 * @param	int_max			int
	 * @return	calcValues()	function
	 */
	function calcSteps(int_min, int_max) {
		var arr_calcSteps = new Array();
		var next_step = 0;
		var step_interval = 0;
		var step_length = 0;

		if(!(int_max > 0)) {
			arr_calcSteps['steps'] = 0;
			return arr_calcSteps;
		}

		arr_calcSteps = new Array(1, 5, 10, 20, 50, 100, 200, 500); // moegliche Schritte
		next_step = -1;

		step_interval = (int_max - int_min) / 20;	// maximal 20 Schritte moeglich
		step_interval = step_interval.toFixed(0);	// Aufloesung der Kommastelle

		if(step_interval <= 500) {
			for(var i = 0; i <= arr_calcSteps.length-1; i++) {
				if(step_interval == arr_calcSteps[i]) {
					return calcValues(step_interval, 20, int_min, int_max, false);
				}
				else {
					if(step_interval < arr_calcSteps[i] && next_step == -1) {
						next_step = arr_calcSteps[i];
						break;
					}
				}
			}

			// wenn step_intervall nicht auf eins der im Array arr_calcSteps zutrifft
			step_length = (int_max - int_min) / next_step;
			step_length = step_length.toFixed(0);
			return calcValues(next_step, step_length, int_min, int_max, false);
		}
		else if(step_interval >= 501) {
			return calcValues(500, 20, int_min, int_max, 10000);
		}
	}

	/**
	 * calculation Values
	 * 
	 * Berechnet anhand der Stepgroesse die Value-Werte und gibt diese zurueck.
	 * 
	 * @param	int_step			int
	 * @param	step_length			int
	 * @param	int_min				int
	 * @param	int_max				int
	 * @param	ftStep				int || bool
	 * @return	arr_calcValues		arr (Werte fuer die Steps)
	 */
	function calcValues(int_step, step_length, int_min, int_max, ftStep) {
		var arr_calcValues = new Array();
		arr_calcValues['values'] = new Array();
		arr_calcValues['values'][0] = Math.floor(int_min);

		for(var i = 1; i <= step_length; i++) {
			var sum = int_min + (i * int_step);
			var sum_p = sum%100;

			if(sum_p != 0) {
				sum = sum;
			}

			if(sum < int_max) {
				arr_calcValues['values'][i] = Math.round(sum);
				arr_calcValues['steps'] = i;
			}
		}

		if(ftStep == false) {
			arr_calcValues['values'][--i] = Math.ceil(int_max);
			arr_calcValues['steps'] = i;
			
			if(i > 20) {
				arr_calcValues['steps']++;
			}
		}
		else {
			arr_calcValues['values'][20] = ftStep;
			arr_calcValues['values'][21] = Math.ceil(int_max);
			arr_calcValues['steps']++;
		}

		return arr_calcValues;
	}


	/**
	 * change Filters
	 * 
	 * Funktion um die Filter auf die Anpassung anzupassen.
	 * D. h. Ausgrauen, Counting und alle anderen Features.
	 * 
	 * @param	data		array
	 */
	function changeFilters(data) {
		// Slider Disabled setzen
		jQuery('.ui-slider').each(function() {
			if(!jQuery(this).parent().parent().hasClass('selectedFilterBox')) {
				jQuery(this).slider('option', 'disabled', true);
			}
		});

		jQuery('.pf_switchBox').each(function() {
			if(!jQuery(this).hasClass('selectedFilterBox')) {
				var label = jQuery(this).children().children('label').text();
				var sliderLabel = jQuery(this).children('.slider').parent().children().children('label').text();

				if(jQuery(this).hasClass('groups_children')) {
					var part1 = jQuery(this).parent().parent().prev().children('label').text();
					var part2 = jQuery(this).children().children('label').text();
					label = part2;
					sliderLabel = jQuery(this).children('.slider').prev().children('label').text();
					var sliderType = sliderLabel;

					if(part1 != '') {
						label = part1 + ' - ' + part2;
						sliderType = sliderLabel;
						sliderLabel = part1 + ' - ' + sliderLabel;
					}
				}
				// looking for variation class
				var arrData = '';
				var arrDataMS = '';
				if(jQuery(this).hasClass('variations') && data['variations'] != null) {
					arrData = data['variations'][label];
					arrDataMS = data['variations'][sliderLabel];
					sliderType = sliderLabel;
				}
				else if(jQuery(this).hasClass('features') && data['features'] != null){
					arrData = data['features'][label];
					arrDataMS = data['features'][sliderLabel];
				}
				else {
					arrData = data[label];
					arrDataMS = data[sliderLabel];
				}
				
				// Price Slider updaten
				if(label == jQuery('.pf-slider-range').parent().prev().children('label').text() && !jQuery('.pf-slider-range').parent().parent().hasClass('selectedFilterBox')) {
					priceSlider(true, false, arrData);
				}
				else if(label == sliderLabel && label != '') {
					multiSlider(true, false, arrDataMS, sliderType);
				}
				else {
					// alle Filter (alle ausgrauen + counting auf 0)
					var lis = jQuery(this).children('.pf_switchBox_content').children('ul').children('li');
					lis.addClass('disabledFilter');
					lis.children('input').attr('disabled',true);
					lis.children('input').next('label').children('.counting').hide();
					lis.children('.data').children('.pf_data_features_counting').hide();

					// alle verfügbaren Filter einfärben + counting setzen
					if(arrData != null) {
						jQuery.each(arrData, function(key) {
							var filterkey = key;
							var filterName = this.name;
							var filterCounting = this.counting;

							if(label == 'Rahmengröße') { filterName = 'frame_' + filterName; }
							//if(label == 'Größe' || label == 'Kopfumfang' || label == 'Schugröße' || label == 'Handschuhgrösse') { filterName = label + filterName; }

							// Sonderfall: falls Anfuehrungszeichen oder einfache Anfuehrungszeichen vorhanden ist (" or ')
							// soll das geaendert werden in \" or \' z. B.: O'Neal => O\'Neal or O"Neal => O\"Neal
							filterName = filterName.split('\'').join('\\\'');
							filterName = filterName.split('\"').join('\\\"');
							filterName = filterName.split(' ').join('_');
							filterName = filterName.split('.').join('_');
							filterName = filterName.split(',').join('_');
							filterName = filterName.split('&').join('_');
							filterName = filterName.split('/').join('_');
							filterName = filterName.split('\\').join('_');

							jQuery(lis).each(function() {
								var x = jQuery(this).children();
								var y = jQuery(this).children('#' + filterName + filterkey);
								
								if(x.hasClass(filterName) || x.hasClass(label + filterName)) {
									x.parent().removeClass('disabledFilter');
									x.next('.data').children('.pf_data_features_counting').html(filterCounting);
								}
								else if(y) {
									y.parent().removeClass('disabledFilter');
									y.removeAttr('disabled');
									y.next('label').children('.counting').html('(' + filterCounting + ')');
//									y.next('label').children('.counting').show();
									y.prev('.data').children('.pf_data_features_counting').html(filterCounting);
								}
							});
						});
					}
				}
			}
		});
	}
	

	/**
	 * Search the selectedFilterBox
	 * 
	 * selectedFilterBox classe ausfindig machen. Ist dafuer da, um zu wissen
	 * welchen FilterType durchsucht wird (z. B.: wenn man Marke waehlt,
	 * dass dann Type 5 uebermittelt wird).
	 * 
	 * @return	selectedBox			global var
	 */
	function selectedBoxFind() {
		selectedBox = '';
		
		if(jQuery('.selectedFilterBox').find('.selected').hasClass('selected')) {
			selectedBox = jQuery('.selectedFilterBox .pf_special_filter_type:first').text();

			if(selectedBox == 3) {
				selectedBox = selectedBox + '-' + jQuery('.selectedFilterBox .pf_size_filter_type:first').text();
			}
		}
		else { 
			var selectedFilters = jQuery('.filters').find('.selected');
			jQuery('.selectedFilterBox').removeClass('selectedFilterBox');
			var resetHistory = new Array();

			for(var i = history.length; i >= 0; --i) {
				if(jQuery(selectedFilters).children().hasClass(history[i])) {
					// History Filter zuruecksetzen
					resetHistory.push(history[i]);
				}
			}

			history = resetHistory;

			if(history.length > 0) {
				var splitting = '';
				splitting = history[0];
				splitting = splitting.split(' ');
				var boxData = jQuery('.' + splitting[0]).parent().children('.data');
				var boxPParent = jQuery('.' + splitting[0]).parent().parent();
				selectedBox = boxData.children('.pf_special_filter_type').text();

				if(selectedBox == 3) {
					selectedBox = selectedBox + '-' + boxData.children('.pf_size_filter_type').text();
				}

				// entfernen der disable Class in dieser FilterGruppe
				boxPParent.parent().parent().addClass('selectedFilterBox');
				boxPParent.children('.disabledFilter').children('input').removeAttr('disabled');
				boxPParent.children('.disabledFilter').removeClass('disabledFilter');
			}
			else {
				// entfernen der Disable Class bei den Filtern - da kein Filter ausgewaehlt
				jQuery('.disabledFilter input').removeAttr('disabled');
				jQuery('.disabledFilter').removeClass('disabledFilter');
			}
		}
	}

	/**
	 * Loading Screen Laden
	 * 
	 * Hier wird der loading Screen angezeigt oder ausgeblendet.
	 * 
	 * @param	view		bool (Anzeigen oder Ausblenden)
	 */
	function loadingScreen(view) {
		if(view == true) {
			jQuery('DIV.galleryview').css({opacity: 0.3});
			jQuery('DIV.listcontents').css({opacity: 0.3});
			jQuery('DIV.productlistPagerBox').eq(0).after('<div class="content-loading" style="text-align: center"></div>');
			jQuery('DIV.productlistPagerBox').eq(0).after('<p class="content-loading-img"><img src="fileadmin/_bmde/graphics/loading.gif" alt="...loading" title="...loading" /><br/>...loading</p>');
			jQuery('DIV.content-loading').css({
				'position': 'absolute',
				'top':  0,
				'left': 0,
				'width': '100%',
				'height': '100%',
				'background': '#fff',
				'z-index': 9000,
				'opacity': 0.6
			});
			jQuery('P.content-loading-img').css({
				'display': 'block',
				'position': 'absolute',
				'width': '200px',
				'height': '50px',
				'opacity': 1,
				'padding': '25% 27%',
				'text-align': 'center',
				'z-index': 9001
			});
		}
		else {
			/*
				jQuery('DIV.content-loading').detach();
				jQuery('P.content-loading-img').detach();
				jQuery('DIV.galleryview').css({opacity: 1.0});
				jQuery('DIV.listcontents').css({opacity: 1.0});
			*/
				jQuery('DIV.content-loading').detach();
				jQuery('P.content-loading-img').detach();
				jQuery('DIV.galleryview').css({opacity: 1.0});
				jQuery('DIV.listcontents').css({opacity: 1.0});

//				jQuery('DIV.content-loading').detach();
//				jQuery('DIV.galleryview').css({opacity: 1.0});
//				jQuery('DIV.listcontents').css({opacity: 1.0});
		}
	}


	/**
	 * reset der filter
	 * 
	 * Hier wird der ausgewaehlte Filter zurueckgestezt
	 * 
	 * @param	e		object	(event)
	 */
	function resetFilter(e) {
		var content = e.parent().next().children();
		// priceSlider zuruecksetzen
		if(content.is('.pf-slider-range')) {
			priceSlider(false, true);
		}
		
		// rangeSlider zuruecksetzen
		if(content.is('.pf-sliderFeature-range')) {
			var rangeSlider = e.parent().next().children('.pf-sliderFeature-range');
			var maxStep = jQuery(rangeSlider).parent().children('ul').children('.pf-sliderFeature-helper').children('.data').children('.pf_data_steps_range').text();
			
			rangeSlider.slider({values: [0, maxStep]});
		}
		
		// normalSlider zuruecksetzen
		if(content.is('.pf-sliderFeature-slider')) {
			e.parent().next().children('.pf-sliderFeature-slider').slider({value: 0});
		}
		
		// frameSlider zuruecksetzen
		if(content.is('.pf-slider')) {
			frameSlider(false, true);
		}
		
		// rest zuruecksetzen
		content.each(function() {
			var child = jQuery(this).children();
			
			if(child.is('li')) {
				if(jQuery(child).hasClass('selected')) {
					jQuery(child).removeClass('selected');
					jQuery(child).children('.pf-checkbox').attr('checked',false);
//					jQuery(child).children('label').children('.counting').show();
				}
			}
			else if(child.is('div')) {
				var divs = child.children().next().children();
				
				jQuery(divs).each(function() {
					var childs = jQuery(this).children('li');
					
					if(jQuery(childs).hasClass('selected')) {
						jQuery(childs).removeClass('selected');
						jQuery(childs).children('.pf-checkbox').attr('checked',false);
//						jQuery(child).children('label').children('.counting').show();
					}
				});
			}
		});
		
	}

	/**
	 * reset ALL
	 * 
	 * Hier wird alles zurueckgesetzt
	 */
	function resetALL() {
		// Inhalte zuruecksetzen
		jQuery('.galleryview').html(saveContentGallery);
		jQuery('.listcontents').html(saveContentList);
		jQuery('.productlistPagerBox').html(savePager);

		// alle Slider zuruecksetzen
		priceSlider(false, true);
		multiSlider(false, true);
		frameSlider(false, true);

		// restliche Filter zuruecksetzen
		jQuery('.pf_masterBox_content .pf-checkbox').attr('checked', false);
		jQuery('.pf_masterBox_content .pf-checkbox').attr('disabled', false);
		jQuery('.pf_masterBox_content .selected').removeClass('selected');
		jQuery('.pf_masterBox_content .selectedFilterBox').removeClass('selectedFilterBox');
		jQuery('.pf_masterBox_content .disabledFilter').removeClass('disabledFilter');
//		jQuery('.pf_masterBox_content span.counting').show()
		
		// clear cookies
		callBack(true)
		
		// history leeren
		history = new Array();
	}
	
	
	/**
	 * callBack
	 * 
	 * Hier wird immer die letzte Auswahl des Filters in ein Cookie gespeichert.
	 * Damit wenn man von der Produktdetailseite zurueck kommt, der Produktfilter
	 * wieder die vorher Eingestellten Filterparameter zurueck stellt.
	 * 
	 * @param	config			die Standart Config Daten
	 * @param	searchTerms		die Such Parameter die genutzt worden sind
	 * @param	selectedBox		selectedBox fuer die Auswahl in welcher Filterbox Gesucht wurde
	 */
	function callBack(clear, config, searchTerms, selectedBox) {
		if(clear != true) {
			var catID = jQuery('.pf_form .pf_masterBox_content .config_data .pf_cat_id').text();
			jQuery.cookie('callBack_catID', catID, {path: '/', expires: 0});
			jQuery.cookie('callBack_obj_php_config', config, {path: '/', expires: 0});
			jQuery.cookie('callBack_obj_php_search', searchTerms, {path: '/', expires: 0});
			jQuery.cookie('callBack_selectedBox', selectedBox, {path: '/', expires: 0});
			jQuery.cookie('callBack_history', history, {path: '/', expires: 0});
		}
		else {
			jQuery.cookie('callBack_catID', '', {path: '/', expires: -1});
			jQuery.cookie('callBack_obj_php_config', '', {path: '/', expires: -1});
			jQuery.cookie('callBack_obj_php_search', '', {path: '/', expires: -1});
			jQuery.cookie('callBack_selectedBox', '', {path: '/', expires: -1});
			jQuery.cookie('callBack_history', '', {path: '/', expires: -1});
		}
	}
	
	
	/**
	 * set Selected Filter
	 * 
	 * hier werden die Filter wieder gesetzt nach dem die Seite neu geladen 
	 * wurde bzw. die Daten von den Cookies geladen werden.
	 */
	function setSelectedFilter() {
		var cookieHistory = jQuery.cookie('callBack_history');
		var splitCookieHistory = cookieHistory.split(',');
		jQuery.each(splitCookieHistory, function(indexHistory, dataHistory){
			jQuery('.pf_switchBox_content').children('ul').children('li:not(disabledFilter)').children().each(function(indexLi, dataLi) {
				if(jQuery(dataLi).hasClass(dataHistory)) {
					jQuery(dataLi).parent().addClass('selected');
					
					if(jQuery.cookie('callBack_selectedBox') == jQuery(dataLi).parent().children('.data').children('.pf_special_filter_type').text()) {
						jQuery(dataLi).parent().parent().parent().parent().addClass('selectedFilterBox');
					}
					
					if(jQuery(dataLi).is('input')) {
						jQuery(dataLi).attr('checked', 'checked');
					}
				}
			});
			history.push(dataHistory);
		})
	}
	
	
	function selectWohnstilFilter(uid) {
		var inputs = jQuery('.pf_switchBox_content').eq(0).children('ul').children('li').children('input');
		var search = false;
		
		jQuery.each(inputs, function() {
			var inputsClass = jQuery(this).attr('class');
			var match = inputsClass.search(uid);
			
			if(match != -1) {
				jQuery(this).attr('checked', true);
				jQuery(this).parent().addClass('selected');
				jQuery(this).parent().parent().parent().parent().addClass('selectedFilterBox');
				history.push(jQuery(this).attr('class'));
				search = true;
			}
		});
		
		if(search == true) {
			getAllFilterData();
		}
	}
	
	
	/*
	 *	Brands search field
	 *
	 *	Hier wird das Suchfeld (Inputfeld Typ=Text) so definiert, das es eine Suche der aller gelisteten Marken
	 *	durchsucht und nur noch das Ausgibt was im Inputfeld drin steht.
	 */
	var inputTxt = jQuery('#pf_searchBrands').val();
	jQuery('#pf_searchBrands').focusin(function() {
		jQuery(this).val('');
	});
	jQuery('#pf_searchBrands').focusout(function() {
		if(jQuery(this).val() == '') {
			jQuery(this).val(inputTxt);
		}
	});
	jQuery('#pf_searchBrands').keyup(function() {
		var filter = jQuery(this).val();
		if(filter == inputTxt) { filter = ''; }
		jQuery(this).next().children().each(function() {
			if(jQuery(this).text().search(new RegExp(filter, "i")) < 0) {
				jQuery(this).hide();
			}
			else {
				jQuery(this).show();
			}
		});
	});
	 
});
