$(function () {
	/* replace a tag with span from filter-header */
		$('div.product-filterMenu div.filter-header:first').html('<span>' + $('div.product-filterMenu div.filter-header:first a').html() + '</span>');
	
	/* remove top and bottom dotted lines from filter-box*/
		$('div.product-filterMenu div.filter-header:eq(0),div.product-filterMenu div.filter-header:eq(1)').css({
			'border-top' : 'none'
		});
		
		$('div.product-filterMenu div.filter-header:first,div.product-filterMenu div.filter-header:last').css({
			'margin' : '0',
			'padding' : '0'
		});
		
	/* Change Criteria Cats and store Id in Data */
		$('div.filter-cat').each(function(){
			$(this).children('a')
				.removeAttr('href')
				.removeAttr('title')
				.removeAttr('target');
		});
		
	/* Add Special Class to First Cat Group */
		$('div.filter-header:eq(1)').addClass('radioGroup');
		
	/* Change Criteria Items and store Id in Data */
		var tBackLink = $('div.news-single-backlink a').attr('href');
		var iBranchenIndex = 1;
		
		$('div.filter-item').each(function(){
			$(this).children('a').data('checked','');
			var tHref = $(this).children('a').attr('href');
			var tHrefPart = tHref.split('tx_ttnews%5Bcat%5D=');
			var iFilterCriteriaId = tHrefPart[1].split('&cHash');
			iFilterCriteriaId = iFilterCriteriaId[0];
			
			/* Should it be a radio button ? */
			if($(this).parent('div.filter-cat').parent('div.filter-header').hasClass('radioGroup')){
				$(this).children('a').data('isRadio',true);
				$(this).children('a').data('branchenIndex',iBranchenIndex);
				iBranchenIndex++;
			}
			
			$(this).children('a')
				.removeAttr('href')
				.removeAttr('title')
				.removeAttr('target')
				.data('filterCriteriaId',iFilterCriteriaId)
				//.html($(this).children('a').html() + ' - ' + iFilterCriteriaId);
				
			if(tBackLink != undefined){
				$(this).children('a').attr('href',tBackLink +'?filtercriterias=,'+ iFilterCriteriaId +',');
			}					
		});
		
	/* Show first RadioItem relevant Content and Select first RadioItem (bank) */
		$('div.hidden-branche-1').show();
		
		$('div.radioGroup div.filter-cat:eq(1) div.filter-item a').data('checked','checked')
		   														  .addClass('checked');
		
		$('div.product-filterMenu').data('checkedCriterias',',' + $('div.radioGroup div.filter-cat:eq(1) div.filter-item a').data('filterCriteriaId') + ',');
		//alert($('div.radioGroup div.filter-cat:eq(1) div.filter-item a').data('filterCriteriaId'));
		filterResult();

	/* Add a "sho all" Link append the filter box, and bind a click-event */
		$('div#filter-wrapper:not(.detail-view)').append('<a class="filter-showAll">alle anzeigen</a>');
		$('a.filter-showAll').click(function(){
			$('div.product-filterMenu').data('checkedCriterias',',');
			$('div.filter-item a').removeClass('checked');
			blockFilterCriterias();
			filterResult();
		});
	
	/* Show Only Filter Criterias wich will get some results */
		showHideFilterCriterias('hide')
		
	/* Bind Click Event on Detail-Link in Branche specific Content */
		$('a.more-link, a.close-link').removeAttr('href');
		$('a.more-link,more-link-active').click(function(){
			if($(this).attr('class') == 'more-link'){
				$(this).removeClass('more-link')
					   .addClass('more-link-active');
			}else{
				$(this).removeClass('more-link-active')
				   	   .addClass('more-link');
			}
			$('div.' + $(this).parent('p').parent('div').attr('class') + '-detail').slideToggle();
		});
		$('a.close-link').click(function(){
			var detailContentClass = $(this).parent('p').parent('div').attr('class');
			var topContentClass = detailContentClass.replace('-detail', '');
			$('div.' + topContentClass + ' p a.more-link-active').removeClass('more-link-active')
			   										  		 	.addClass('more-link');
			$('div.' + detailContentClass).slideUp();
		});
	
	/* Bind Click Event on filterCriterias */		
		$('div.filter-item a').click(function(){
			
			if($(this).data('checked') == 'checked' && $(this).data('isRadio') != true){
				$(this).data('checked','');
				$(this).removeClass('checked');
				
				var checkedCriterias = $('div.product-filterMenu').data('checkedCriterias');
				var checkedCriterias_new = checkedCriterias.replace(',' + $(this).data('filterCriteriaId') + ',', ',');
				$('div.product-filterMenu').data('checkedCriterias',checkedCriterias_new);
			}else{
				/* Only one isRadio-FilterItem should be checked, because it's a Radio Button :-) */
				if($(this).data('isRadio') == true){
					radioButtonHandling(this);
				}
				
				$(this).data('checked','checked');
				$(this).addClass('checked');
				
				$('div.product-filterMenu').data('checkedCriterias',$('div.product-filterMenu').data('checkedCriterias') + '' + $(this).data('filterCriteriaId') + ',');
			}
			blockFilterCriterias();
			filterResult();
		});
		
	/* Are there filtercriterias as Get-Param? */
		if($('div.product-list-item').length > 0){
			var urlParams = getUrlVars();
			if(urlParams['filtercriterias'] != undefined){
				var getFilterCriterias = urlParams['filtercriterias'].split(',');
				var getFilterCriteriasCount = getFilterCriterias.length - 2;
				for(var i = 1; i <= getFilterCriteriasCount; i++){					
					$('div.filter-item a').each(function(){
						if($(this).data('filterCriteriaId') == getFilterCriterias[i]){
							/* Only one isRadio-FilterItem should be checked, because it's a Radio Button :-) */
							if($(this).data('isRadio') == true){
								radioButtonHandling(this);
							}

							$(this).data('checked','checked');
							$(this).addClass('checked');
						}
					});
				}
				$('div.product-filterMenu').data('checkedCriterias',urlParams['filtercriterias']);
				filterResult();
			}
		}
		
		
	/* Add checked FilterCriterias as Get-Param to Detail Link on Click on a Detail-Link */
		$('div.product-list-item a').click(function(){
			if($('div.product-filterMenu').data('checkedCriterias') != ','){
				$(this).attr('href',$(this).attr('href') + '&filtercriterias=' + $('div.product-filterMenu').data('checkedCriterias'));
			}
		});
		
	/* Add checked FilterCriterias as Get-Param to Back Link on Click on a Back-Link */
		$('div.news-single-backlink a').click(function(){
			var urlParams = getUrlVars();
			if(urlParams['filtercriterias'] != undefined){
				$(this).attr('href',$(this).attr('href') + '?filtercriterias=' + urlParams['filtercriterias']);
			}
		});
});

function radioButtonHandling(filterItemLink){
	$('div.radioGroup div.filter-cat').each(function(i, thisRadio){
		$(thisRadio).children('div.filter-item').children('a').data('checked','')
		  	   		.removeClass('checked');
		
		/* Hide all branche-contents */
		$('div.content-area-wrapper div.hidden-branche-' + $(thisRadio).index()).hide();
		$('div.content-area-wrapper div.hidden-branche-' + $(thisRadio).index() + '-detail').hide();
		
		var checkedCriterias = $('div.product-filterMenu').data('checkedCriterias');
		var checkedCriterias_new = checkedCriterias.replace(',' + $(thisRadio).children('div.filter-item').children('a').data('filterCriteriaId') + ',', ',');
		$('div.product-filterMenu').data('checkedCriterias',checkedCriterias_new);
	});
	
	/* Show Specific branche-content */
	$('div.content-area-wrapper div.hidden-branche-' + $(filterItemLink).data('branchenIndex')).show();
}

function blockFilterCriterias(){
	$('div#filter-wrapper').append('<div class="filterBlocker">&nbsp;</div>');
	$('div.filterBlocker').height($('div.product-filterMenu').height());
}

function unblockFilterCriterias(){
	$('div.filterBlocker').remove();
}

function filterResult(){
	var checkedCriterias = $('div.product-filterMenu').data('checkedCriterias');
	if(checkedCriterias != undefined){
		var aCheckedCriterias = checkedCriterias.split(',');
		var iCheckedCriteriasLength = aCheckedCriterias.length - 2;
	}
	var eachCount = 0;
	var ItemsCount = $('div.product-list-item').length;
	var hiddenItems = ',';
	var showHideFilterCriteriasCalled = false;
	x = new Array();
	
	$('div.product-list-item').each(function(i, val1){
		$(val1).data('visible','visible');
		var tCriterias = ',' + $(val1).children('div.catIds').html();
		
		if(iCheckedCriteriasLength > 0){
			x[i] = 0;
			for(var j = 1; j <= iCheckedCriteriasLength; j++){				
				var available = tCriterias.search(','+ aCheckedCriterias[j] +',');
				if($(val1).data('visible') != 'none'){
			    	if(available == '-1'){
			    		$(val1).data('visible','none');
			    		$(val1).fadeOut('slow',function(){
			    			x[i]++;
			    			if(x[i] >= iCheckedCriteriasLength){
			    				eachCount++;
			    			}
			    			if(eachCount == ItemsCount && showHideFilterCriteriasCalled == false){
			    				showHideFilterCriterias('fade');
			    				showHideFilterCriteriasCalled = true;
			    			}
			    		});
			    	}else{
			    		x[i]++;
			    		if(x[i] >= iCheckedCriteriasLength){
							$(val1).fadeIn('slow',function(){
								eachCount++;
								if(eachCount == ItemsCount && showHideFilterCriteriasCalled == false){
					    			showHideFilterCriterias('fade');
					    			showHideFilterCriteriasCalled = true;
					    		}
							});
			    		}
			    	}
				}else{
					x[i]++;
					if(x[i] >= iCheckedCriteriasLength){
						eachCount++;
					}
					if(eachCount == ItemsCount && showHideFilterCriteriasCalled == false){
		    			showHideFilterCriterias('fade');
		    			showHideFilterCriteriasCalled = true;
		    		}
				}
		    }
			if(eachCount == ItemsCount && showHideFilterCriteriasCalled == false){
    			showHideFilterCriterias('fade');
    			showHideFilterCriteriasCalled = true;
    		}
		}else{
			$(val1).fadeIn('slow',function(){
				eachCount++;
				if(eachCount == ItemsCount){
	    			showHideFilterCriterias('fade');
	    		}
			});
		}
	});
}

function showHideFilterCriterias(mode){	
	var eachCount = 0;
	var ItemsCount = $('div.filter-item').length;
	var tPossibleFilterCriterias = ',';
	
	$('div.product-list-item:visible, div.product-single-item').each(function(){
		tPossibleFilterCriterias = tPossibleFilterCriterias + $(this).children('div.catIds').html();
	});
	
	$('div.filter-item').each(function(i, val1){		
		var available = tPossibleFilterCriterias.search(','+$(val1).children('a').data('filterCriteriaId')+',');
		if(available == '-1'){
			if(mode == 'hide'){
				$(val1).hide();
				/* should a whole group be hidden? */
				$('div.filter-header').each(function(j, val2){
					if($('div.filter-header').index(this) != 0 && $(val2).children('div.filter-cat').children('div.filter-item:visible').length < 1){
						$(val2).hide();
					}
				});
			}else{
				$(val1).fadeOut('slow',function(){
					/* should a whole group be hidden? */
					$('div.filter-header').each(function(j, val2){
						if($('div.filter-header').index(this) != 0 && $(val2).children('div.filter-cat').children('div.filter-item:visible').length < 1){
							$(val2).fadeOut('slow');
						}
					});
					eachCount++;
					if(eachCount == ItemsCount){
						unblockFilterCriterias()
					}
				});
			}
		}else{
			if($(val1).parents('div.filter-header').is(":hidden")){
				$(val1).parents('div.filter-header').fadeIn('slow');
			}
			$(val1).fadeIn('slow',function(){
				eachCount++;
				if(eachCount == ItemsCount){
					unblockFilterCriterias()
				}
			});
		}
	});
}

//Read a page's GET URL variables and return them as an associative array.
function getUrlVars(){
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++)
    {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }
    return vars;
}
