jQuery.fn.equalHeights = function(px) {
	jQuery(this).each(function(){
		var currentTallest = 0;
		jQuery(this).children().each(function(i){
			if (jQuery(this).height() > currentTallest) { currentTallest = jQuery(this).height(); }
		});
		jQuery(this).children().css({'min-height': currentTallest}); 
	});
	return this;
};

jQuery.fn.sdimCarousel = function() {
	var timer = setInterval(slideItem, 5000);
	var counter = 1;
	// change classes on mouse-over
	jQuery("li.slide-item").mouseenter(function(){
		clearInterval(timer);
		var myId = jQuery(this).attr("id");
		var myValue = parseInt(myId.match(/[0-9]/));
		// actieve slide class aanpassen
		jQuery("li.active").removeClass("active").addClass("inactive");
		// alle images opacity van 0 meegeven
		jQuery("li.slide-item img").css({opacity: 0});
		// hover item geven we actieve class
		jQuery(this).addClass("active").removeClass("inactive");
		// afbeelding van hover item weergeven
		jQuery(this).stop(true,true).find("img").css({opacity: 1});
		counter = myValue;
	}).mouseleave(function(){ timer = setInterval(slideItem, 5000); });
	// slide volgende item
	function slideItem() {
		if (counter == 0) { counter++; return; }
		var thisSlide = jQuery("li.active");
		var nextSlide = thisSlide.next();
		if(counter == 5){
			nextSlide = jQuery("li.slide-item:eq(0)");
		}
		thisSlide.removeClass("active").addClass("inactive").find("img").css({opacity: 0});
		nextSlide.addClass("active").removeClass("inactive").find("img").animate({opacity: 1}, 500);
		counter == 5 ? counter = 1 : counter++;
	}

	
	// buttons toevoegen
	jQuery(this).append('<li class="slide-buttons">');
	jQuery(".slide-buttons").append('<a href="#prev" class="prev" title="Vorige">&laquo;</a>');
	jQuery(".slide-buttons").append('<a href="#next" class="next" title="Volgende">&raquo;</a>');
	
	// vorige click event
	jQuery("a.prev").click(function(event){
		event.preventDefault();
		var currentId = jQuery("li.slide-item.active").attr("id");
		var currentValue = parseInt(currentId.match(/[0-9]/));
		if(currentValue == 1){ var prevId = 5; } else { var prevId = currentValue-1; }
		var prevItem = "#slide-"+prevId;
		jQuery("li.active.slide-item").removeClass("active").addClass("inactive");
		// alle images opacity van 0 meegeven
		jQuery("li.active.slide-item img").css({opacity: 0});
		jQuery(prevItem).addClass("active").removeClass("inactive");
		jQuery(prevItem).find("img").animate({opacity: 1}, 500);
	});
	
	// volgende click event
	jQuery("a.next").click(function(event){
		event.preventDefault();
		var currentId = jQuery("li.slide-item.active").attr("id");
		var currentValue = parseInt(currentId.match(/[0-9]/));
		if(currentValue == 5){ var nextId = 1; } else { var nextId = currentValue+1; }
		var nextItem = "#slide-"+nextId;
		jQuery("li.active.slide-item").removeClass("active").addClass("inactive");
		// alle images opacity van 0 meegeven
		jQuery("li.active.slide-item img").css({opacity: 0});
		jQuery(nextItem).addClass("active").removeClass("inactive");
		jQuery(nextItem).find("img").animate({opacity: 1}, 500);
	});
};



jQuery.fn.sdimSubmenu = function() {
  
  jQuery( 'ul.submenu' ).find('li').each( function(){
    jQuery(this).addClass('nochildren');
  });
	
  jQuery("ul.submenu li.page_item ul").parent().removeClass('nochildren').addClass("smparent");

  jQuery('li.smparent').find('a').append('<span class="click"></span>');

  jQuery('li.nochildren a span.click').remove();


	jQuery("ul.children li.current-page").parent().parent().parent().parent().addClass("current_page_ancestor");
	jQuery("ul.children li.current-page").parent().parent().addClass("current_page_parent");
	jQuery("ul.children li.current-page").parent().parent().addClass("current_page_ancestor");
	
	jQuery( 'ul.submenu li a span.click' ).bind('click', function(){
	  if( jQuery(this).parent().parent().hasClass( 'current_page_ancestor' ) ) {
	    jQuery(this).parent().parent().removeClass( 'current_page_ancestor' );
	  }
	  else {
  	  jQuery(this).parent().parent().addClass( 'current_page_ancestor' );
  	}
	  
	  return false;
	});
	
	
	
	jQuery( 'ul.submenu li ul.children li a span.click' ).bind( 'click', function() {
	  if( jQuery(this).parent().parent().hasClass( 'current-page' ) ) {
	    jQuery(this).parent().parent().removeClass( 'current-page' ).removeClass( 'current_page_ancestor' );
	  }
  	else if( jQuery(this).parent().parent().hasClass( 'current_page_parent' ) ) {
	    jQuery(this).parent().parent().removeClass( 'current_page_parent' ).removeClass('current-page').removeClass( 'current_page_ancestor' );  	  
  	}
  	else {
	    jQuery(this).parent().parent().addClass( 'current_page_parent' ).addClass( 'current_page_ancestor' ); 
	    jQuery(this).parent().parent().parent().parent().addClass( 'current_page_ancestor' );     	
  	}
  	
	  return false;
	});
/* 
	jQuery( 'li a span.click' ).bind( 'click', function() {
	  
	  //Level 3
	  if( jQuery(this).parent().parent().hasClass( 'current_page_ancestor' ) || jQuery(this).parent().parent().hasClass( 'current_page_parent' ) || jQuery(this).parent().parent().hasClass( 'current-page' ) ) {
      jQuery(this).parent().parent().addClass('inactive');	    
      jQuery(this).parent().parent().removeClass('current_page_ancestor');	    
      jQuery(this).parent().parent().removeClass('current_page_parent');	    
      jQuery(this).parent().parent().removeClass('current-page');	    
	  }
	  //Level 2
	  else if ( jQuery(this).parent().parent().hasClass( 'current_page_ancestor' ) ) {
	    
	  }
	  	  	  
    return false;	
	});

 */
/* 
	jQuery("li.smparent").addClass("closed");

	jQuery("ul.children").prev().addClass("fly");
	
	// Geef de parents class open mee als page active is
	jQuery('ul.submenu li.current-page').parents("li").removeClass("closed").addClass("opened");
	jQuery('ul.submenu li.current-page > ul, ul.submenu li.current_page_ancestor ul li.current_page_item > ul').show();

 */
	
};



jQuery.fn.marginFix = function() {
	jQuery('.ref-image-frame img').each(function(){
		var height = jQuery(this).height(); // 70
		var parentHeight = jQuery(this).parent().height(); //120
		var space = parentHeight - height;
		var topmargin = space/2;
		
		jQuery(this).css({marginTop:topmargin});
		
	});
};

jQuery.fn.infiniteCarousel = function () {

	function repeat(str, n) {
    	return new Array( n + 1 ).join(str);
    }
    
    return this.each(function () {
        // magic!
        var jQuerywrapper = jQuery('> div', this).css('overflow', 'hidden'),
            jQueryslider = jQuerywrapper.find('> ul').width(9999),
            jQueryitems = jQueryslider.find('> li'),
            jQuerysingle = jQueryitems.filter(':first')
            
            singleWidth = jQuerysingle.outerWidth(),
            visible = Math.ceil(jQuerywrapper.innerWidth() / singleWidth),
            currentPage = 1,
            pages = Math.ceil(jQueryitems.length / visible);
            
        /* TASKS */
        
        // 1. pad the pages with empty element if required
        if (jQueryitems.length % visible != 0) {
            // pad
            jQueryslider.append(repeat('<li class="empty" />', visible - (jQueryitems.length % visible)));
            jQueryitems = jQueryslider.find('> li');
        }
        
        // 2. create the carousel padding on left and right (cloned)
        jQueryitems.filter(':first').before(jQueryitems.slice(-visible).clone().addClass('cloned'));
        jQueryitems.filter(':last').after(jQueryitems.slice(0, visible).clone().addClass('cloned'));
        jQueryitems = jQueryslider.find('> li');
        
        // 3. reset scroll
        jQuerywrapper.scrollLeft(singleWidth * visible);
        
        // 4. paging function
        function gotoPage(page) {
            var dir = page < currentPage ? -1 : 1,
                n = Math.abs(currentPage - page),
                left = singleWidth * dir * visible * n;
            
            jQuerywrapper.filter(':not(:animated)').animate({
                scrollLeft : '+=' + left
            }, 500, function () {
                // if page == last page - then reset position
                if (page > pages) {
                    jQuerywrapper.scrollLeft(singleWidth * visible);
                    page = 1;
                } else if (page == 0) {
                    page = pages;
                    jQuerywrapper.scrollLeft(singleWidth * visible * pages);
                }
                
                currentPage = page;
            });
        }
        
        // 5. insert the back and forward link
        jQuerywrapper.after('<a href="#" class="arrow back reference-previous">&laquo;</a><a href="#" class="arrow forward reference-next">&raquo;</a>');
        
        // 6. bind the back and forward links
        jQuery('a.back', this).click(function () {
            gotoPage(currentPage - 1);
            return false;
        });
        
        jQuery('a.forward', this).click(function () {
            gotoPage(currentPage + 1);
            return false;
        });
        
        jQuery(this).bind('goto', function (event, page) {
            gotoPage(page);
        });
        
        // THIS IS NEW CODE FOR THE AUTOMATIC INFINITE CAROUSEL
        jQuery(this).bind('next', function () {
            gotoPage(currentPage + 1);
        });
    });  
};

jQuery(document).ready(function(){
	jQuery('html').addClass('js');
	
	jQuery("#big-fat-footer").equalHeights(true);
	jQuery("div.service404-blocks").equalHeights();
	
	jQuery("#menubar #menu-item-24").mouseenter(function(){
		jQuery(".sub-menu",this).show();
	}).mouseleave(function(){
		jQuery(".sub-menu",this).hide();
	});
		
	jQuery("input[type=text]").labelify({
  		text: "label",
  		labelledClass: "labelHighlight"
	});
	
	jQuery("textarea").labelify({
  		text: "label",
  		labelledClass: "labelHighlight"
	});
	
	jQuery("#referenties-overzicht").marginFix();
	
	jQuery("#carousel").sdimCarousel();
	jQuery("div.fancymenu").sdimSubmenu();
    
	if(jQuery('body').hasClass('home')){
    	var autoscrolling = true;
    
	    jQuery('.infiniteCarousel').infiniteCarousel().mouseover(function () {
	        autoscrolling = false;
	    }).mouseout(function () {
	        autoscrolling = true;
	    });
	    
	    setInterval(function () {
	        if (autoscrolling) {
	            jQuery('.infiniteCarousel').trigger('next');
	        }
	    }, 5000);
	};
	
	// Functie om zoekfunctie in helpcentrum ook te laten zoeken binnen hele site
	jQuery('#search-helpcentrum').submit(function(){
		if(jQuery("input[type=checkbox]").is(":checked")) {
			jQuery("input[type=hidden]").removeAttr("value").removeAttr("name");
		}
	});
	
	jQuery(".inlinefancybox").fancybox({
		'height' : '400px',
		'width' : 554,
		'autoDimensions' : false, 
		'overlayColor' : '#000', 
		'modal' : false, 
		'centerOnScroll' : true, 
		'titleShow' : false,
		'overlayOpacity' : 0.75
	});
	
	
	// Functie om externe links automatisch een target blank mee te geven
	jQuery('a').each(function() {
	   var a = new RegExp('/' + window.location.host + '/');
	   if(!a.test(this.href)) {
	       jQuery(this).click(function(event) {
	           event.preventDefault();
	           event.stopPropagation();
	           window.open(this.href, '_blank');
	       });
	   }
	});
	
	
});

