/******************************************************************
* Functions for ProductList / Filter
*******************************************************************/

function apply_filter(fid, attid) {

	if($('prod_sort')) {$('prod_sort').show();}

	if (fid!='X' && fid!='x' && fid!='no_ajax') {
		if ($('f_s_'+fid).innerHTML!='0') {								// process Filter only if Productcount is not 0

			if(!filters[attid][fid]['active']) {
				filters[attid][fid]['active']	= true;

				$('filter_'+fid).up().className='matlink_aktiv';
			} else {
				filters[attid][fid]['active']	= false;
				$('filter_'+fid).up().className	='sublink';
			}
		} else {
			if(filters[attid][fid]['active']) {
				filters[attid][fid]['active']	= false;

				$('filter_'+fid).up().className='sublink';
			}
		}
	}

	var filter_or		= new Array();
	var filter_final	= new Array();
	var filter_str		= '';

	var filter_groups	= new Object;

	for(var i in filters) {

		var filter_or = new Array();
		var filter_str_tmp = '';

		for(var j in filters[i]) {

			if(filters[i][j]['active']) {

				filter_or = filter_or.concat(filters[i][j]['products'].split(", "));
				var group_id	= filters[i][j]['group_id'];
				var filter_id	= filters[i][j]['id'];
				if(filter_str_tmp == '') {
					filter_str_tmp = group_id+'='+filter_id;
				} else {
					filter_str_tmp = filter_str_tmp+','+filter_id;
				}
			}
		}

		filter_groups[i]	= filter_or;
		calc_arr[i]=filter_or;

		if (filter_final.length == 0) {										// combine filters
			filter_final = filter_or;
		} else if (filter_or.length != 0){
			filter_final = filter_final.intersect(filter_or);
		}

		if (filter_str == '') {												// filter for cookie
			filter_str = filter_str_tmp;
		} else {
			filter_str = filter_str+'X'+filter_str_tmp;
		}


	}

	if($('p_list_c')) {

	} else if($('target_container')) {
		$('target_container').id='p_list_c';
	}
	var target= 'p_list_c';

	var search_str = '';
	if ($('search_string')) {
		search_str = $F('search_string');
	}

	if((filter_final.length == 0) && (fid!='no_ajax')) {

		if($('produktindex')) {$('produktindex').show();}

		new Ajax.Updater(target,ajax_url, {						// call original productlist
			method: 'post',
			parameters: {	get:		'product_list',
							orig_nav:	$F('orig_nav'),
							require_filter:	$F('require_filter'),
							st:			$F('orig_store'),
							order:		$F('prod_sort'),
							search:		search_str
					},
			onCreate:	function(){
				$('ajax_loader').show();
			},
			onSuccess:	function(){
				$('ajax_loader').hide();
			}
		});

	} else if (fid!='no_ajax') {

		if($('produktindex')) {$('produktindex').hide();}

		var products 		= filter_final.join(', ');
		new Ajax.Updater(target,ajax_url, {						// call products matching filter
			method: 'post',
			parameters: {	get:		'product_list',
							orig_nav:	$F('orig_nav'),
							require_filter:	$F('require_filter'),
							prod_l:		products,
							st:			store,
							order:		$F('prod_sort'),
							search:		search_str
							},
			onCreate:	function(){
				$('ajax_loader').show();
			},
			onSuccess:	function(){
				$('ajax_loader').hide();
			}
		});

	}

	/*************************************
	* Update product-count for Filter-link
	*************************************/
	

	for(var i in filters) {

		var intersect_arr = new Array();

		for(var k in filter_groups) {										// kombiniere alle Teilfilter die nicht zum aktuellen Block geh?ren
			if (k != i) {
				if(intersect_arr.length == 0) {								// erster durchlauf
					intersect_arr = filter_groups[k];						//  - intersect mit nix wäre nix - also kopieren
				} else {
					if(filter_groups[k].length != 0) {						// wenn aktuell geprüfte filtergruppe keinen inhalt -> besser ignorieren - sonst intersect mit nix = nix
						intersect_arr = intersect_arr.intersect(filter_groups[k]);
					}
				}
			}
		}

		for(var j in filters[i]) {

			if(filter_final.length == 0) {

				if (filters[i][j]['products'].split(", ")[0] == '') {
					$('f_s_'+filters[i][j]['id']).update('0');
				} else {
					$('f_s_'+filters[i][j]['id']).update(filters[i][j]['products'].split(", ").length);
				}
			} else {

				if(intersect_arr.length != 0) {										// wenn die menge in der Kombination gr??er 0 ist
					var a_length=intersect_arr.intersect(filters[i][j]['products'].split(", ")).length;
					$('f_s_'+filters[i][j]['id']).update(a_length);					// aktualisiere die produktzahl
																					// berechnet aus der menge der Produkte am bearbeiteten Filter
																					// mit der Kombination aller ?brigen Gruppen
				} else {
					var a_length=filters[i][j]['products'].split(", ").length;
					$('f_s_'+filters[i][j]['id']).update(a_length);
				}
			}
		}
	}

	/******************************************
	* set cookie
	******************************************/
	var days		= 1;
	var date		= new Date();
	date.setTime(date.getTime()+(days*24*60*60*1000));
	var expires		= "; expires="+date.toGMTString();

	document.cookie = 'filters='+filter_str+ expires+'; path=/';
//	alert('filters='+filter_str+ expires+'; path=/');
}










/*************************************
* show aditional filters
*************************************/

function filter_more(group_id, nav_id){
	new Ajax.Updater('filter_popover',ajax_url, {						// call products matching filter
		method: 'post',
		parameters: {	get:		'additional_filters',
						group_id:	group_id,
						nav_id:		nav_id,
						rec_nav:	$F('rec_nav')},
		onCreate:	function(){
			$('ajax_loader').show();
		},
		onSuccess:	function(){
			$('ajax_loader').hide();
			$('filter_popover').show();
		}
	});
}








/*************************************
* process aditional filters
*************************************/

function apply_add_filter (g_id, f_id) {

	var ul_id	= 'f_'+g_id;

	if(!filters[g_id][f_id]){

		var prod_arr = $F('products_'+f_id).split(', ');

		filters[g_id][f_id] 			= new Object();
		filters[g_id][f_id]["id"]		= f_id;
		filters[g_id][f_id]["group_id"]	= g_id;
		filters[g_id][f_id]["active"]	= false;
		filters[g_id][f_id]["products"]	= $F('products_'+f_id);

		var li_str	= '<li class="sublink">';
		li_str		+= '	<a id="filter_' + f_id + '" href="JavaScript:apply_filter(' + f_id + ',' + g_id + ');">';
		li_str		+= 			$F('name_'+f_id) + ' (<span id="f_s_' + f_id + '">1</span>)';		// 1 als platzhalter damit der Filter von apply_filter verarbeitet wird - korrekter Wert wird dort berechnet
		li_str		+= '	</a>';
		li_str		+= '</li>';

		new Insertion.Bottom(ul_id,li_str);

	}

	$('filter_popover').hide();

	apply_filter(f_id,g_id);												// Produkte filtern

}

/*************************************
* product search
*************************************/

function search_focus() {
	if($('search').getAttribute('u_inp') == 'no') {
		$('search').setAttribute('u_inp','yes');
		$('search').value = '';
	}
}

