// Portfolio overview

var filter = '';

$(function(){
	// Hover thumbs (linked to list)
	$('div#portfolio_thumbs ul li img').hover(function(){
			$(this).addClass('hover');
			var rel = $('tr[rel='+$(this).parent().parent().attr('rel')+']');
			rel.addClass('hover');
			$('td.portlist_button img',rel).get(0).src = 'images/icon_view_active.gif';
		},function(){
			$(this).removeClass('hover');
			var rel = $('tr[rel='+$(this).parent().parent().attr('rel')+']');
			rel.removeClass('hover');
			$('td.portlist_button img',rel).get(0).src = 'images/icon_view.gif';
	});

	// Hover list (linked to thumbs)
	$('table#portlist tr').hover(function(){
		$(this).addClass('hover');
		$('td.portlist_button img',$(this)).get(0).src = 'images/icon_view_active.gif';
		$('div#portfolio_thumbs li[rel='+$(this).attr('rel')+'] img').addClass('hover');
	},function(){
		$(this).removeClass('hover');
		$('td.portlist_button img',$(this)).get(0).src = 'images/icon_view.gif';
		$('div#portfolio_thumbs li[rel='+$(this).attr('rel')+'] img').removeClass('hover');
	}).click(function(){
		location.href = $('a',$(this)).attr('href');
	});

	// reset filterbox, conditional for IE6
	if ($('form#filterbox').length)
		$('form#filterbox')[0].reset();
		
	if($.isFunction($.cookie) && $.cookie('client_portfolio_filter')){
	    filter = $.cookie('client_portfolio_filter');
	    
	    $('form#filterbox input[type=checkbox]').each(function(i, input){
	       input.checked = (filter.indexOf(input.value) != -1);
	    });
	}

		
	// apply default filter (show all)
	applyFilter();
});

var filteredList = [];
var currentPage = 1;
var totalPages = 1;

function checkFilter(ele){
	if (ele.checked) {
		filter += ele.value;
		$(ele).parent().addClass('selected');
	} else {
		filter = filter.replace(ele.value,'');
		$(ele).parent().removeClass('selected');
	}
    if($.isFunction($.cookie)){
        $.cookie('client_portfolio_filter', filter);
    }
	applyFilter();
}

function applyFilter () {
	$('div#portfolio_thumbs ul li').each(function(i,ele){
		var pf = $(ele).attr('pf');

		var show = false;
		if (filter == '') { // none selected, all visible
			show = true;
		} else { // go 
			for (var i=0; i<filter.length; i++) {
				if (pf.indexOf(filter.charAt(i)) != -1)
					show = true;
			}
		}

		filteredList[$(ele).attr('rel')] = show;
	});

	applyFilterList(1);
}

function getCleanedList() {
	var filteredListCleaned = [];
	for (var i=1; i<filteredList.length; i++) {
		if (filteredList[i])
			filteredListCleaned.push(i);
	}
	return filteredListCleaned;
}

function applyFilterList(pageNr) {
	var filteredListCleaned = getCleanedList();
	var activeCount = filteredListCleaned.length;
	totalPages = Math.ceil(activeCount / 18);
	currentPage = pageNr;

	$('span#filtercount').html('aantal: '+activeCount);
	
	var activeRels = [];
	for (var i=(pageNr-1)*18; i<pageNr*18; i++) {
		if (filteredListCleaned[i])
			activeRels.push(parseInt(filteredListCleaned[i]));
	}

	$('div#portfolio_thumbs ul li').each(function(){
		var rel = parseInt($(this).attr('rel'));
		if ($.inArray(rel,activeRels) != -1) {
			$(this).show();
			$('table#portlist tr[rel='+rel+']').show();
		} else {
			$(this).hide();
			$('table#portlist tr[rel='+rel+']').hide();
		}
	});

	fixPageNav();
}

function fixPageNav(){
	var linkhtml = '';
	for (var i=1; i<=totalPages; i++) 
		linkhtml += '<a class="pagenr" href="#'+i+'">'+i+'</a>';

	$('div#port_pagenav a.pagenr').remove();
	$('div#port_pagenav').append(linkhtml);

	$('div#port_pagenav a').each(function(){
		var pagelink = this.href.substr(this.href.indexOf('#')+1);
		if (pagelink == currentPage || 
			(pagelink == 'prev' && currentPage == 1) ||
			(pagelink == 'next' && currentPage == totalPages))
			$(this).addClass(isNaN(pagelink)?'disabled':'selected');
		else
			$(this).removeClass(isNaN(pagelink)?'disabled':'selected');
	}).unbind('click').click(function(){
		var p = this.href.substr(this.href.indexOf('#')+1);
		if (p == currentPage) return false;
		if (p == 'prev') {
			if (currentPage <= 1) return false;
			p = (currentPage - 1);
		}
		if (p == 'next') {
			if (currentPage >= totalPages) return false;
			p = (currentPage + 1);
		}

		applyFilterList(parseInt(p));	

		return false;
	});	
}