function showFilteredLessons(lessons) {

	var numberOfLessons = $('number-of-lessons').getElement('span.number');
	var countLessons    = 0;
	var lessonsChange   = false;

	lessons.each(function(lesson) {
		if (lesson.freeShow == true && lesson.subjectShow == true && lesson.targetShow == true) {

			if (!lessonsChange && lesson.hasClass('hide')) {
				lessonsChange = true;
			}

			lesson.removeClass('hide');

			countLessons++;
		} else {
			if (!lessonsChange && !lesson.hasClass('hide')) {
				lessonsChange = true;
			}

			lesson.addClass('hide');
		}
	});

	var noLessonsFound = $('no-lessons-found');
	if (countLessons == 0) {
		if (noLessonsFound) {
			noLessonsFound.inject($('lessons'), 'bottom');
		} else {
			noLessonsFound = new Element('div', {
				'id': 'no-lessons-found',
				'html': '<p>Geen lessen gevonden.</p>'
			}).inject($('lessons'), 'bottom');
		}
	} else {
		if (noLessonsFound) {
			noLessonsFound.dispose();
		}
	}

	// on lessons change highlight and new number
	if (lessonsChange) {
		lessons.highlight('#ffdfc9');
		numberOfLessons.set('text', countLessons);
	}
}

window.addEvent('domready', function() {

	var body = $(document.body);
	var IE6  = (Browser.Engine.trident && Browser.Engine.version < 5) ? true : false;
	var IE7  = (Browser.Engine.trident && Browser.Engine.version < 6) ? true : false;

	// insert flash header
	if (!body.hasClass('admin')) {
		var flashHeader = new Swiff('/swf/header.swf', {
			'id': 'flash-header',
			'container': 'header',
			'width': 960,
			'height': 120,
			'params': {
				'wmode': 'window'
			}
		});
	}

	// search form behaviour
	var formSearch = $('form-search-main');
	formSearch.addEvent('submit', function(e) {
		if ($('query-main').get('value') == '') {
			e.stop();
		}
	});

	// remove margin-bottom on sidebars .content's
	var contentsSidebarLeft = $$('#sidebar-left .content');
	var contentsSidebarRight = $$('#sidebar-right .content');

	if (contentsSidebarLeft.length > 0) {
		contentsSidebarLeft.getLast().addClass('last');
	}
	if (contentsSidebarRight.length > 0) {
		contentsSidebarRight.getLast().addClass('last');
	}

	// uitgelicht behaviour
	if (body.hasClass('home')) {

		var uitgelichtContents = $$('.content.uitgelicht');
		if (uitgelichtContents.length > 0) {
			uitgelichtContents.each(function(uitgelicht, index) {

				if ((index + 1) % 2 == 1) {
					uitgelicht.addClass('clear');

					if (IE6 || IE7) {
						new Element('div', {
							'class': 'ie-clear'
						}).inject(uitgelicht, 'before');
					}
				}
			});
		}

	}

	// fix for IE6 & IE7 
	if (IE6 || IE7) {
		$('footer-lessons').getElement('ul').getChildren('li').each(function(list, index) {
			if (((index + 1) % 5 == 0) && index != 0) {
				var clearDiv = new Element('li', {
					'class': 'clear-footer-ie'
				}).inject(list, 'after');
			}
		});
	}

	// lesson page behaviour
	if (body.hasClass('lesson-page')) {

		// move image on lesson page to right column
		var image       = $('left-column').getElement('img');
		var rightColumn = $('right-column');

		if (image) {
			image.getParent('p').inject(rightColumn, 'top');
			image.setProperty('width', '255');
			image.removeProperty('height');
		}

		// read more behaviour in 'beschrijving' content
		var beschrijving = $('left-column').getElement('.beschrijving');
		if (beschrijving) {
			var readMoreLink = beschrijving.getElement('a[href="#"]');
			if (readMoreLink) {
				var allNextElements = readMoreLink.getParent('p').getAllNext();
				if (allNextElements) {
					// create wrapper for all next elements
					var wprReadMoreContent = new Element('div', {'class': 'wpr-read-more'}).inject(beschrijving);
					wprReadMoreContent.adopt(allNextElements);

					// create slide fx
					wprReadMoreContent.fx = new Fx.Slide(wprReadMoreContent);
					wprReadMoreContent.fx.hide();

					// link click event
					readMoreLink.addEvent('click', function(e) {
						e.stop();

						wprReadMoreContent.fx.toggle();
					});
				}
			}
		}
	}

	// filter lesson
	var lessons = $$('#lessons .short-lesson');
	if (lessons.length > 0) {

		// init lessons
		lessons.each(function(lesson) {
			lesson.targetShow  = true;
			lesson.subjectShow = true;
			lesson.freeShow    = true;

			// remove text after read more link
			lesson.readMoreLink = lesson.getElement('a[href="#"]');
			if (lesson.readMoreLink) {

				lesson.readMoreLink.getParent().getAllNext().destroy();
				lesson.readMoreLink.destroy();
			}
		});

		// targets lesson filter
		var targetsFilter = $('targets-filter');
		if (targetsFilter) {
			targetsFilter.addEvent('change', function() {
				lessons.each(function(lesson) {
					if (lesson.hasClass(targetsFilter.value) || targetsFilter.value == '') {
						lesson.targetShow = true;
					} else {
						lesson.targetShow = false;
					}
				});

				showFilteredLessons(lessons);
			});
		}

		// subjects lesson filter
		var subjectsFilter = $('subjects-filter');
		if (subjectsFilter) {
			subjectsFilter.addEvent('change', function() {
				lessons.each(function(lesson) {
					if (lesson.hasClass(subjectsFilter.value) || subjectsFilter.value == '') {
						lesson.subjectShow = true;
					} else {
						lesson.subjectShow = false;
					}
				});

				showFilteredLessons(lessons);
			});
		}

		// free lessons filter
		var freeFilter = $('free-filter');
		freeFilter.addEvent('click', function() {
			lessons.each(function(lesson) {
				if ((freeFilter.checked && lesson.hasClass('free')) || !freeFilter.checked) {
					lesson.freeShow = true;
				} else {
					lesson.freeShow = false;
				}
			});

			showFilteredLessons(lessons);
		});
	}

	// replace rating for stars image
	var ratings = $$('.content p.rating');
	if (ratings.length > 0) {
		ratings.each(function(rating) {
			if (!isNaN(rating.get('text')) && rating.get('text') > 0 && rating.get('text') <= 5) {
				rating.addClass('rating-' + rating.get('text'));
			}
		});
	}

	// replace h2's for tabs on search page
	if (body.hasClass('zoeken')) {

		// get all headers that should be placed in the tabmenu
		var headers = $$('#content h2');
		if (headers && headers.length > 0) {

			// create tabmenu
			var tabmenu = new Element('div', {
				'id': 'tabmenu',
				'html': '<ul></ul>'
			}).inject(headers[0], 'before');

			// last header (menuitem)
			var lastItem = headers.getLast();

			headers.each(function(header, index) {

				var tabmenuItem = new Element('li', {
					'id': 'tabmenu-item-' + index,
					'html': '<a href="#">' + header.get('html') + '</a>'
				});

				if (header.get('id')) {
					tabmenuItem.set('id', header.get('id'));
				}

				tabmenuItem.tabContent = new Element('div', {
					'id': 'tab-content-' + index,
					'class': 'tab-content'
				});

				// add classes to the menuitems
				if (index == 0) {
					tabmenuItem.addClass('first current');
					tabmenuItem.tabContent.addClass('current');

					// set global active tabs
					tabmenu.currentMenuItem   = tabmenuItem;
					tabmenu.currentTabContent = tabmenuItem.tabContent;
				} else {
					tabmenuItem.tabContent.addClass('hide');
				}

				// copy content in tab container (to show / hide)
				var nextSibling = header.getNext();

				while(nextSibling != headers[index + 1] && !nextSibling.hasClass('tab-content')) {
					var currentSibling = nextSibling;
					nextSibling = nextSibling.getNext();
					currentSibling.inject(tabmenuItem.tabContent);
				}

				// inject elements in dom
				header.destroy();
				tabmenuItem.inject(tabmenu.getElement('ul'));
				tabmenuItem.tabContent.inject($('content').getElement('.content'));

				// add events
				tabmenuItem.addEvent('click', function(e) {
					if (this != tabmenu.currentMenuItem) {

						tabmenu.currentMenuItem.removeClass('current');
						tabmenu.currentTabContent.removeClass('current');
						tabmenu.currentTabContent.toggleClass('hide');

						this.addClass('current');
						this.tabContent.addClass('current');
						this.tabContent.toggleClass('hide');

						tabmenu.currentMenuItem   = this;
						tabmenu.currentTabContent = this.tabContent;
					}

					e.stop();
				});
			});
		}
	}

});
