$(function(){
	initTabs();
	initPopup({
		openEvent:'click'
	});
	$('select').customSelect();
	
	initGallery({
		holder:'.block-gallery > ul > li',
		list:'ul.g1',
		effect:'fade',
		autoRotation:10000
	});
	initFaq();
	if ($("#contactform").length > 0)
		initValidation("#contactform");

	if ($("#inschrijfformulier").length > 0)
	{
		$("#inschrijfformulier").validate({
			errorLabelContainer: $("div#errorbox")
		});
	}

	$(".dienst-more-info").click(function(e){
		
		e.preventDefault();
		$(this).siblings(".moreInfoText").slideDown();
		$(this).hide();
	});
	
	if ($("#infoaanvraagform").length > 0)
		initValidation("#infoaanvraagform");
	

	
	$("#brochure_per_post").click(function(e){
		$("#hidden-fields").slideToggle();
	});
	
});

$(window).load(function(){
	initResize();
}).resize(function(){
	initResize();
});

function initGallery(option){
	var hold = jQuery(option.holder);
	var duration = option.autoRotation;
	var activeSlide = option.activeSlide || 0;
	var step = option.step || 1;
	var disableBtn = option.disableBtn || false;
	var switcher = option.switcher || false;
	var event = option.event || 'click';
	var onStart = option.onStart;
	var onChange = option.onChange;
	hold.each(function(){
		var _this = jQuery(this);
		var list = _this.find(option.list),
			count = list.children().length,
			w = list.children().outerWidth() * step,
			_t,
			a = 0,
			r = a,
			f = true;

		var holdW = list.parent().width();
		var visEl = Math.ceil(holdW/w);
		
		if(count <= visEl) f = false;
		
		list.css({marginLeft:-w*a});
		
		if(typeof onStart === 'function') onStart(list, a);
		
		if(option.prev && option.next){
			var prev = _this.find(option.prev).attr('rel', 'prev').click(animateSlide);
			var next = _this.find(option.next).attr('rel', 'next').click(animateSlide);
		}
		if(option.switcher){
			switcher = _this.find(switcher);
			switcher.eq(r).removeClass('active');
			switcher.eq(a).addClass('active');
			switcher.bind(event, function(){
				var ind = switcher.index($(this))+activeSlide;
				animateSlide(ind);
				return false;
			});
		}

		if(disableBtn){
			if(a == 0 && count > 1) {
				prev.addClass('disabled');
				next.removeClass('disabled');
			}
			if(a == count-1 && count > 1) {
				prev.removeClass('disabled');
				next.addClass('disabled');
			}
			if(count == 1 || count <= visEl) {
				prev.addClass('disabled');
				next.addClass('disabled');
			}
		}
		
		if(option.autoRotation && f) runTimer();
		if(option.effect == 'fade') {
			if(jQuery.browser.msie){
				list.children().css('display', 'none');
				list.children().eq(a).css('display', 'block').addClass('active');
			}
			else{
				list.children().css('opacity', 0);
				list.children().eq(a).css('opacity', 1).addClass('active');
			}
		}
		if(option.stopOnHover && _t){
			list.mouseenter(function(){
				clearTimeout(_t);
			}).mouseleave(runTimer);
		}
		function runTimer(){
			_t = setTimeout(function(){
				animateSlide('next');
			}, duration);
		}
		function animateSlide(e){
			if(f){
				r = a;
				if(typeof e == 'string' && e == 'next') a++;
				else if(typeof e == 'number') a=e;
				else{
					if(e.target.rel == 'next') a++;
					else if(e.target.rel == 'prev') a--;
				}
				if(_t) clearTimeout(_t);
				if(a == count) a=0;
				else if(a == -1) a=count-1;
				
				list.children().eq(r).removeClass('active');
				list.children().eq(a).addClass('active');
				
				if(option.switcher){
					switcher.eq(r).removeClass('active');
					switcher.eq(a).addClass('active');
				}
				
				if(disableBtn){
					if(a == 0) {
						prev.addClass('disabled');
						next.removeClass('disabled');
					}
					else if(a + visEl == count) {
						prev.removeClass('disabled');
						next.addClass('disabled');
					}
					else {
						prev.removeClass('disabled');
						next.removeClass('disabled');
					}
				}
				
				if(option.effect == 'fade'){
					if(jQuery.browser.msie){
						list.children().eq(r).css({display:'none'});
						list.children().eq(a).css({display:'block'});
						if(option.autoRotation) runTimer();
					}
					else{
						list.children().eq(r).animate({opacity:0}, {queue:false, duration:700});
						list.children().eq(a).animate({opacity:1}, {queue:false, duration:700, complete:function(){
							if(option.autoRotation) runTimer();
						}});
					}
				}
				else{
					if(a + visEl > count) a = 0;
					
					list.animate({marginLeft:-w*a}, {queue:false, duration:700, complete:function(){
						if(option.autoRotation) runTimer();
						if(typeof onChange === 'function') onChange(list, a);
					}});
				}
			}
			return false;
		}
	});
};

var view;
function initResize() {
	view = document.getElementById("bg");
	if(view) {
		view.width = view.clientWidth;
		view.height = view.clientHeight;
		initBg();
		setTimeout("initBg()", 10);
	}
}
function initBg() {
	var w = document.documentElement.offsetWidth;
	var h = document.documentElement.offsetHeight;
	var pr = view.width/view.height;
	var spr = w/h;
	
	if(spr > pr) {
		view.style.width = w + "px";
		view.style.height = w/pr + "px";
		view.style.left = (w/2)*(-1) + "px";
		view.width = w;
		view.height = w/pr;
	}
	else {
		view.style.height = h + "px";
		view.style.width = h*pr + "px";
		view.style.left = (h*pr/2)*(-1) + "px";
		view.height = h;
		view.width = h*pr;
	}
}

function initPopup(_popup) {
	if (!_popup.popupHolderTag) _popup.popupHolderTag = 'div';
	if (!_popup.popupTag) _popup.popupTag = 'div';
	if (!_popup.popupHolderClass) _popup.popupHolderClass = 'box-phone';
	if (!_popup.popupClass) _popup.popupClass = 'popup';
	if (!_popup.linkOpenClass) _popup.linkOpenClass = 'open';
	if (!_popup.linkCloseClass) _popup.linkCloseClass = 'close';
	if (!_popup.openClass) _popup.openClass = 'active';
	if (!_popup.openEvent) _popup.openEvent = 'hover';
	
	var timer = [];	
	var _popupHolderTag = document.getElementsByTagName(_popup.popupHolderTag);
	if (_popupHolderTag) {
		for (var i=0; i<_popupHolderTag.length; i++) {
			if (_popupHolderTag[i].className.indexOf(_popup.popupHolderClass) != -1) {
				var _popupLink = _popupHolderTag[i].getElementsByTagName('a');
				for (var j=0; j<_popupLink.length; j++) {
					_popupLink[j].parent = _popupHolderTag[i];
					if (_popupLink[j].className.indexOf(_popup.linkOpenClass) != -1) {
						if (_popup.openEvent == 'click') {
							_popupLink[j].onclick = function(){
								if (this.parent.className.indexOf(_popup.openClass) != -1) {
									this.parent.className = this.parent.className.replace(_popup.openClass,'');
								} else {
									this.parent.className += ' '+_popup.openClass;
								}
								return false;
							}
						} else {
							var _popupTag = _popupHolderTag[i].getElementsByTagName(_popup.popupTag);
							for (var k=0; k<_popupTag.length; k++) {
								if (_popupTag[k].className.indexOf(_popup.popupClass) != -1) {
									_popupTag[k].parent = _popupHolderTag[i];
									_popupTag[k].onmouseover = function(){
										if (timer[j]) clearTimeout(timer[j]);
										if (this.parent.className.indexOf(_popup.openClass) == -1) {
											this.parent.className += ' '+_popup.openClass;
										}
									}
									_popupTag[k].onmouseout = function(){
										var _this = this;
										timer[j] = setTimeout(function(){
											_this.parent.className = _this.parent.className.replace(_popup.openClass,'');
										},2);
									}	
								}
							}
							_popupLink[j].onmouseover = function(){
								if (timer[j]) clearTimeout(timer[j]);
								if (this.parent.className.indexOf(_popup.openClass) == -1) {
									this.parent.className += ' '+_popup.openClass;
								}
							}
							_popupLink[j].onmouseout = function(){
								var _this = this;
								timer[j] = setTimeout(function(){
									_this.parent.className = _this.parent.className.replace(_popup.openClass,'');
								},2);
							}
						}
					} else if (_popupLink[j].className.indexOf(_popup.linkCloseClass) != -1) {
						_popupLink[j].onclick = function(){
							if (this.parent.className.indexOf(_popup.openClass) != -1) {
								this.parent.className = this.parent.className.replace(_popup.openClass,'');
							} else {
								this.parent.className += ' '+_popup.openClass;
							}
							return false;
						}
					}
				}
			}		
		}
	}
}

function initTabs() {
	jQuery('ul.tabset').each(function(){
		var _list = jQuery(this);
		var _links = _list.find('a.tab');

		_links.each(function() {
			var _link = jQuery(this);
			var _href = _link.attr('href');
			var _tab = jQuery(_href);

			if(_link.hasClass('active')) _tab.show();
			else _tab.hide();

			_link.click(function(){
				_links.filter('.active').each(function(){
					jQuery(jQuery(this).removeClass('active').attr('href')).hide();
				});
				_link.addClass('active');
				_tab.show();
				$('select').customSelect();
				return false;
			});
		});
	});
	
	$(".btn-step-2").click(function(e){
		$("#tab1").hide();
		$("#tab2").show();
		$("[href='#tab1']").removeClass("active");
		$("[href='#tab2']").addClass("active");
	});
}

function initFaq(){
	//$(".faq").find(".answer:first").show();
	$(".faq").find(".opener").click(function(e){
		e.preventDefault();
		$(this).parent("li").siblings("li").removeClass("active");
		$(this).parent("li").siblings("li").find(".answer").slideUp("fast");
		$(this).siblings(".answer").slideToggle("fast");
		$(this).parent("li").addClass("active");
	});
}

$.fn.customSelect = function(_options) {
	var _options = $.extend({
		selectStructure: '<div class="selectArea"><span class="left"></span><span class="center"></span><a href="#" class="selectButton"></a><div class="disabled"></div></div>',
		hideOnMouseOut: false,
		copyClass: true,
		selectText: '.center',
		selectBtn: '.selectButton',
		selectDisabled: '.disabled',
		optStructure: '<div class="optionsDivVisible"><div class="select-top"></div><div class="select-center"><ul></ul><div class="select-bottom"></div></div>',
		optList: 'ul'
	}, _options);
	return this.each(function() {
		var select = $(this);
		if(!select.hasClass('outtaHere')) {
			if(select.is(':visible')) {
				var hideOnMouseOut = _options.hideOnMouseOut;
				var copyClass = _options.copyClass;
				var replaced = $(_options.selectStructure);
				var selectText = replaced.find(_options.selectText);
				var selectBtn = replaced.find(_options.selectBtn);
				var selectDisabled = replaced.find(_options.selectDisabled).hide();
				var optHolder = $(_options.optStructure);
				var optList = optHolder.find(_options.optList);
				if(copyClass) optHolder.addClass('drop-'+select.attr('class')); replaced.addClass(select.attr('class'));

				if(select.attr('disabled')) selectDisabled.show();
				select.find('option').each(function(){
					var selOpt = $(this);
					var _opt = $('<li><a href="#">' + selOpt.html() + '</a></li>');
					if(selOpt.attr('selected')) {
						selectText.html(selOpt.html());
						_opt.addClass('selected');
					}
					
					_opt.children('a').click(function() {
						optList.find('li').removeClass('selected');
						select.find('option').removeAttr('selected');
						$(this).parent().addClass('selected');
						selOpt.attr('selected', 'selected');
						selectText.html(selOpt.html());
						select.change();
						optHolder.hide();
						return false;
					});
					optList.append(_opt);
				});
				if(select.hasClass('no-option')){
					selectText.html(select.attr('title'));
					select.removeAttr('title');
				}
				replaced.width(select.outerWidth());
				replaced.insertBefore(select);
				optHolder.css({
					width: select.outerWidth(),
					display: 'none',
					position: 'absolute'
				});
				$(document.body).append(optHolder);

				var optTimer;
				replaced.hover(function() {
					if(optTimer) clearTimeout(optTimer);
				}, function() {
					if(hideOnMouseOut) {
						optTimer = setTimeout(function() {
							optHolder.hide();
						}, 200);
					}
				});
				optHolder.hover(function(){
					if(optTimer) clearTimeout(optTimer);
				}, function() {
					if(hideOnMouseOut) {
						optTimer = setTimeout(function() {
							optHolder.hide();
						}, 200);
					}
				});
				selectBtn.click(function() {
					if(optHolder.is(':visible')) {
						optHolder.hide();
					}
					else{
						optHolder.children('ul').css({height:'auto', overflow:'hidden'});
						optHolder.css({
							top: replaced.offset().top + replaced.outerHeight(),
							left: replaced.offset().left,
							display: 'block'
						});
						if(optHolder.children('ul').height() > 200) optHolder.children('ul').css({height:200, overflow:'auto'});
					}
					return false;
				});
				select.addClass('outtaHere');
			}
		}
	});
}
