
	// JQuery extension
	$.extend($.fn, {
		swapClass: function(c1, c2) {
			var c1Elements = this.filter('.' + c1);
			this.filter('.' + c2).removeClass(c2).addClass(c1);
			c1Elements.removeClass(c1).addClass(c2);
			return this;
		},
		replaceClass: function(c1, c2) {
			return this.filter('.' + c1).removeClass(c1).addClass(c2).end();
		}
	});
	
	
	// global vars
	
	var lastSelectedMenuItem;
	var lastEl;

	
	// functions
	
	function setupslideshow(){
		$('.slideshow').cycle({
			fx: 'fade' // choose your transition type, ex: fade, scrollUp, shuffle, etc...
		});
	}
	
	function setupUitlegToggle(){
		$(".duurzameruitleg").css("display", "none" );
		$(".linkduurzameruitleg").click(showUitleg);
	}
	
	function showUitleg(e){
		$(".duurzameruitleg").css("display", "none" );
		$("#" + $(this).attr("id") + "_uitleg").css("display", "block" );
	}
	
	function setupmenu(){
		$("#categorieen >ul li ul").css("display", "none" );
		$("#categorieen >ul > li").addClass("closed");
		$("#categorieen >ul > li >a").click(expandClick);
		if(typeof currentmenuid != 'undefined'){
			$("#cat"+currentmenuid + "> ul").css("display", "block" );
			$("#cat"+currentmenuid).swapClass("open","closed");
		}

		$("#duurzamernav ul").css("display", "none" );
		$("#duurzamernav >li").addClass("closed");
		$("#duurzamernav > li >a").click(expandClick);
		$("a").click( function(e){ $(this).blur()});
		
		
	}
	
	
	function expandClick(e){		
			if(e.currentTarget === this	){

				var li = $(this).parent();
				var ul = $(this).parent().children("ul").first();
				var ulclosed = ul.css("display")=="none";				
				
				// hide all others
				$("#categorieen a.openlink").removeClass("openlink");
				$("#categorieen li.open").swapClass("open","closed");
				
				$("#duurzamernav ul").css("display", "none" );
				$("#categorieen >ul li ul").css("display", "none" );

				$(this).parent().children("ul").first().css("display", !ulclosed?"none":"block" );

				if(ulclosed) {
					li.swapClass("open","closed");	
					$(this).addClass("openlink");
				}
				
				lastSelectedMenuItem = li;
				return false;
			}
			
	}
	
	function setupToggleFaq(){
		$("#faqs > div > div").css("display","none");
		$("#faqs > div > a").click(function(e){

			if($(this).hasClass("toggled")){
					
					$(this).next("div").css("display", "none" );
					$(this).removeClass("toggled");
				}else{
					$(this).next("div").css("display", "block" );
					$(this).addClass("toggled");
				};
				$(this).swapClass("faqopen","faqclosed");
			return false;
		});
	}
	
	function hideSurplusFilters(){	
		if( $("#result_categorie .resultlink").size() > 5){
			$("#result_categorie .resultlink:gt(4)").css("display", "none" );
			$("#morecategorie").css("display","block");
			$("#morecategorie").click(function(e){
				if($(this).hasClass("toggled")){
					$("#result_categorie .resultlink:gt(4)").css("display", "none" );
					$(this).html(" [+] Toon alles");
					$(this).removeClass("toggled");
				}else{
					$("#result_categorie .resultlink").css("display", "block" );
					$(this).html(" [-] Toon alleen de eerste 5");
					$(this).addClass("toggled");
				}
				return false;
					
			})
			
		}
		if( $("#result_duurzamer .resultlink").size() > 5){
			$("#result_duurzamer .resultlink:gt(4)").css("display", "none" );
			$("#moreduurzameromdat").css("display","block");
			$("#moreduurzameromdat").click(function(e){
				if($(this).hasClass("toggled")){
					$("#result_duurzamer .resultlink:gt(4)").css("display", "none" );
					$(this).html(" [+] Toon alles");
					$(this).removeClass("toggled");
				}else{
					$("#result_duurzamer .resultlink").css("display", "block" );
					$(this).html(" [-] Toon alleen de eerste 5");
					$(this).addClass("toggled");
				}
				return false;
			})
		}
		return false;
	}
	
	function thumbnailToImage(){
		$(".productthumbnail").hover(function(e){
			$("#pdimage").attr("src", $(this).attr("src").toString().replace("small","large"));
		});
	}
	
    function myFunction(args){
    	$('span.change').append(args.selectedVal);
	}

	function setupAutoClear(){
		// clear input on focus
		$(".autoClear").focus(function() {	
			if($(this).val()==$(this).attr('title')){
				$(this).attr("value","");	
			}
        });
		
		// if field is empty afterward, add text again
		$('.autoClear').blur(function(){
		if($(this).val()==''){
			$(this).val($(this).attr('title'));
			}
		});
	}
	
	
	function setupPartnerToggle(){
		$('.partner_content').css("display","none");
		$('#logobox a').click(
			function(e){
				if(lastEl!=null){
					lastEl.css("display","none");
				}
				var target = $(this).attr('title');
				lastEl = $("#" + target + "_content");
				lastEl.css("display","block");
			})
	}
	
	function setupActieBanners(){
		$('#koopbanner .slide');
		setInterval(function(){
			$('#koopbanner .slide').filter(':visible').fadeOut(1000,function(){
				if($(this).next('div.slide').size()){
					$(this).next().fadeIn(1000);
				}
				else{
					$('#koopbanner .slide').eq(0).fadeIn(1000);
				}
			});
		},6000);	
	}
	
	function checkAutoClearFields(){
		$(".autoClear").each(function(){
			if($(this).val()==$(this).attr('title')){
				$(this).attr("value","");
			}
		});
		return true;
	}
	
	function setupSubmitFilter(){
		$(".btnzoek").click(checkAutoClearFields);
	}
	
	function setupSearchSort(){
		$('#searchSort').change(function(){
			window.location = $(this).val();
		})
	}

	function setupAanbieder(){	
		$('#aanbiederlijst').change(function(){var aID = $(this).attr("value");document.location='/aanbieder/'+aID;})
	}
	
	function setupPreviewProductInput(){
		$('.lengthcheck').keyup(function(){
			var targ = $('#o' + $(this).attr('id') );
			targ.html( $(this).attr("value") );
			if( targ.width() > 133){
				targ.html("te lang");
				$(this).css("color","#ff0000");
			}else{$(this).css("color","#000000");}
		})
	}

	$(document).ready(function() {
		setupPreviewProductInput();
		setupAanbieder();
		setupslideshow();
		setupmenu();
		setupToggleFaq();
		setupAutoClear();
		thumbnailToImage();
		setupUitlegToggle();
		setupActieBanners();
		setupSearchSort();
		setupPartnerToggle();
		hideSurplusFilters();
		setupSubmitFilter();
	});
		
		
		
