function isIE67() {
	return nza.globals.ieVersion < 8;
}
function isIE() {
	return nza.globals.ieVersion < 99;
}
function isMozilla() {
	return ($.browser.mozilla);
}

function createCookie(name, value, days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
		var expires = "; expires=" + date.toGMTString();
	} else
		var expires = "";
	document.cookie = name + "=" + value + expires + "; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for ( var i = 0; i < ca.length; i++) {
		var c = ca[i];
		while (c.charAt(0) == ' ')
			c = c.substring(1, c.length);
		if (c.indexOf(nameEQ) == 0)
			return c.substring(nameEQ.length, c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name, "", -1);
}

function initCollapsibleSections() {
	var $triggers = $("ul.collapsible-list > li > a.trigger");
	// by default: hide everything except extended items. keeps stylesheet such
	// that all FAQs are at least readable without javascript
	$("ul.collapsible-list > li:not('.extended') .collapsible").hide();
	// wire the events for the regular triggers;
	$triggers.attr('href', 'javascript:;');
	$triggers.click( function(event) {
		event = event || window.event;
		event.stopPropagation();
		event.cancelBubble = true;
		var $thisItem = $(this).parent("li");

		// close other open item
			var $otherOpenItem = $thisItem.siblings(".extended");
			if (!isIE67()) {
				$(".collapsible", $otherOpenItem).slideUp(200, function() {
					$otherOpenItem.removeClass("extended");
				});
			} else {
				$(".collapsible", $otherOpenItem).hide();
				$otherOpenItem.removeClass("extended");
			}

			if ($thisItem.hasClass("extended")) {
				if (!isIE67()) {
					$(".collapsible", $thisItem).slideUp(250, function() {
						$thisItem.removeClass("extended");
					});
				} else {
					$(".collapsible", $thisItem).hide();
					$thisItem.removeClass("extended");
				}

			} else {
				$thisItem.addClass("extended");
				if (!isIE67()) {
					$(".collapsible", $thisItem).slideDown(500, function() {
						$thisItem.addClass("extended");
					});
				} else {
					$(".collapsible", $thisItem).show();
					$thisItem.addClass("extended");
				}
			}
			return false;
		});

	var $nestedTriggers = $("ul.collapsible-list > li > .collapsible .trigger");
	// wire the events for the nested triggers (close);
	$nestedTriggers.attr('href', 'javascript:;');
	$nestedTriggers.click( function(event) {
		event = event || window.event;
		event.stopPropagation();
		event.cancelBubble = true;
		var $containingListItem = $(this).parents().filter("li.extended");
		var $firstRegularTrigger = $containingListItem.children("a.trigger")
				.eq(0);

		// close this item by triggering the click event of the regular trigger
			// object
			$firstRegularTrigger.click();

			return false;
		});
}

function initSearchFromWithinTabs() {
	var $searchKeyword = $("#search-keyword");
	if ($searchKeyword) {
		// set initial value
		$searchKeyword.val(nza.globals.defaultSearchKeyword);
		// clear field on focus but only when default value is still present
		$searchKeyword.focus( function() {
			var $this = $(this);
			if ($this.val() == nza.globals.defaultSearchKeyword)
				$this.val("");
		});
	}
}
function searchAreaChangeActionToSelectedVal(val, $clickedItem) {
	var $formRef = $clickedItem.parents("form").eq(0);
	$formRef.attr("action", val);
}

function equalHeight(elementsToKeepEqual, elementsToManipulate, monitorActively) {
	if (!elementsToKeepEqual || elementsToKeepEqual.length == 0
			|| !elementsToManipulate || elementsToManipulate.length == 0
			|| elementsToKeepEqual.length != elementsToManipulate.length)
		return;
	var timeStamp = new Date().getTime();
	nza.globals["equalHeight" + timeStamp] = function() {
		// look for scrollbars on the elements that should not have them and
		// free their height before measuring
		for ( var i = 0; i < elementsToManipulate.length; i++) {
			// see if scrolling sticks
			elementsToManipulate[i][0].scrollTop = 1;
			if (elementsToManipulate[i][0].scrollTop == 1) {
				// clear height
				console.debug("found element that scrolled:"
						+ elementsToManipulate[i]);
				elementsToManipulate[i].css("height", "");
			}
		}
		// find highest element
		var index = 0;
		var maxHeight = elementsToKeepEqual[0][0].scrollHeight;
		var allTheSame = true;
		for ( var i = 1; i < elementsToKeepEqual.length; i++) {
			elHeight = elementsToKeepEqual[i][0].scrollHeight;
			if (elHeight != maxHeight) {
				allTheSame = false;
				if (elHeight > maxHeight) {
					index = i;
					maxHeight = elHeight;
				}
			}
		}

		if (!allTheSame) {
			// console.log("highestEl=" + index + " @ " + maxHeight);
			// set height of other elements
			for ( var x = 0; x < elementsToManipulate.length; x++) {
				if (x != index) {
					var heightToEqualise = elementsToKeepEqual[x][0].scrollHeight;
					var heightToManipulate = elementsToManipulate[x].height();
					// change
					var diff = maxHeight - heightToEqualise;
					elementsToManipulate[x].height(heightToManipulate + diff);
				}
			}
		} else {
			// console.log("all the same height: remain as is");
		}
	};
	eval("nza.globals.equalHeight" + timeStamp + "()");
	if (monitorActively) {
		setInterval( function() {
			eval("nza.globals.equalHeight" + timeStamp + "()");
		}, nza.globals.equalHeightMonitorInterval);
	}
}

function scrollBy(distance, speed, easing) {
	var currentScrollTop = document.body.scrollTop
			|| document.documentElement.scrollTop;
	$('html,body').animate( {
		scrollTop :currentScrollTop + distance
	}, speed, easing);

}

function nextCarouselItem(cselSelector) {
	var $currentItem = $(cselSelector + " .active");
	var $nextItem;
	if ($currentItem[0].id == $(cselSelector + " .c-page:last-child")[0].id) {
		$nextItem = $(cselSelector + " .c-page:first");
	} else {
		$nextItem = $currentItem.next(".c-page");
	}
	if (nza.globals.ieVersion == 99) {
		$currentItem.fadeOut(300);
		$nextItem.fadeIn(500);
	}
	$currentItem.slideUp(300).removeClass("active");
	$nextItem.slideDown(500).addClass("active");
}
function previousCarouselItem(cselSelector) {
	var $currentItem = $(cselSelector + " .active");
	var $prevItem;
	if ($currentItem[0].id == $(cselSelector + " .c-page:first")[0].id) {
		$prevItem = $(cselSelector + " .c-page:last-child");
	} else {
		$prevItem = $currentItem.prev(".c-page");
	}
	if (nza.globals.ieVersion == 99) {
		$currentItem.fadeOut(300);
		$prevItem.fadeIn(500);
	}
	$currentItem.slideUp(300).removeClass("active");
	$prevItem.slideDown(500).addClass("active");
}
function initCarousel(cselSelector) {
	if ($(cselSelector)) {
		$("ul" + cselSelector).css("overflow", "visible");
		$("ul" + cselSelector + " li.c-page").hide()
				.css("position", "absolute");
		$("ul" + cselSelector + " li#c-page-1").show().addClass("active");

		// start auto Rotate
		setCarouselAutoRotate(cselSelector);

		$(cselSelector + " .carousel-nav .c-next").click( function() {
			$(this).fadeOut(150, function() {
				$(this).fadeIn(150);
			});
			if (nza.globals.carouselTimer)
				clearInterval(nza.globals.carouselTimer);
			nextCarouselItem(cselSelector);
			setCarouselAutoRotate(cselSelector);
			return false;
		});
		$(cselSelector + " .carousel-nav .c-prev").click( function() {
			$(this).fadeOut(150, function() {
				$(this).fadeIn(150);
			});
			if (nza.globals.carouselTimer)
				clearInterval(nza.globals.carouselTimer);
			previousCarouselItem(cselSelector);
			setCarouselAutoRotate(cselSelector);
			return false;
		});
	}

}

function setCarouselAutoRotate(cselSelector) {
	nza.globals.carouselTimer = setInterval( function() {
		$(cselSelector + " .carousel-nav .c-next").click();
	}, nza.globals.carouselSwitchInterval);
}

function addSpecialFormFieldHandlers() {
	if (document.getElementsByName("formStep1").length > 0) {
		$("input[name=about]").bind("click", handleAMM);
		handleAMM();
	}
	if (document.getElementsByName("formStep2").length > 0) {
		$("input[name=what]").bind("click", handleRP);
		handleRP();
	}
	$("form.validated-form textarea[validate]").keyup(
			function() {
				var $this = $(this);
				var validateConfig = $this.metadata( {
					type :'attr',
					name :'validate'
				}).validate;
				if (validateConfig.maxlength) {
					var maxLength = validateConfig.maxlength;
					var val = $this.val();
					if (val.length > maxLength) {
						$($this[0].form).validate();
						$this.blur();
						$this.focus();
						$this.val(val.substr(0, maxLength));
						if (isIE()) {
							// IE fails to show the error right away so we need to insert it ourselves
							var $errorSpan = $this.parents(".row").eq(0).find(
									".status");
							$errorSpan.html(validateConfig.messages.maxlength);
							$this.parents(".row").eq(0).addClass("error");
						}
						// Fx scrolls to the top upon changing the value...
						$this.scrollTop(10000);
					}
					return false;
				}
			})
}
function handleRP() {
	if ($("#particulier")[0].checked) {
		$(".withRP").slideUp();
		$("#rechtsvorm").attr("disabled","true").css({opacity:.5});
	}
	if ($("#rechtspersoon")[0].checked) {
		$(".withRP").slideDown();
		$("#rechtsvorm").removeAttr("disabled").css({opacity:1});;
	}
}
function handleAMM() {
	if ($("#about-marktmacht")[0].checked) {
		$(".withAMM").slideDown();
	} else {
		$(".withAMM").slideUp().find("textarea,input").val("");
	}
	if ($("#about-overtreding")[0].checked) {
		$(".withOvertreding").slideDown();
	} else {
		$(".withOvertreding").slideUp().find("input[type=checkbox]").each(
				function() {
					this.checked = false;
				});
	}
}

function initFormValidation(formSelector) {
	if ($.fn.validate) {
		$.validator.addMethod("nodigits", function(value, element) {
			var re = new RegExp(/[0-9]/);
			return !re.test(value);
		});
		$.validator.addMethod("numeric", function(value, element) {
			var re = new RegExp(/[^\d]/g);
			return !re.test(value);
		});
		$.validator.addMethod("zipNL", function(value, element) {
			var re = new RegExp(/^\d{4}[\s]?[a-zA-Z]{2}$/);
			return (re.test(value));
		});

		$.validator.addMethod("choicerequired", function(value, element) {
			if (element.name == "about" && $("#about-overtreding")[0].checked) {
				var checked = false;
				$("input[name=overtredingType]").each( function() {
					if (this.checked)
						checked = true;
				})
				return checked;
			} else {
				var checked = false;
				$("input[name=" + element.name + "]").each( function() {
					if (this.checked)
						checked = true;
				})
				return checked;
			}
		});

		$.validator.messages.required = "U bent verplicht dit veld in te vullen";
		$.validator.messages.numeric = "Dit veld mag alleen cijfers bevatten";
		$.validator.messages.alphanumeric = "Dit veld mag alleen letters of cijfers bevatten";
		$.validator.messages.choicerequired = "Er dient een keuze te worden gemaakt in dit veld";
		$.validator.messages.zipNL = "Dit veld mag alleen een postcode bevatten";

		$.metadata.setType("attr", "validate");

		var valForm = $(formSelector);

		valForm.validate( {
			meta :"validate",
			errorClass :"error",
			errorElement :"span",
			errorPlacement : function(error, element) {
				var $parentRow = $(element).parents(".row");
				$parentRow.addClass(this.errorClass)
				var $errorSpan = $parentRow.find(".status");
				$parentRow.addClass(this.errorClass)
				$errorSpan.append(error.message ? error.message : error);
			},
			highlight : function(element, errorClass) {
				var $element = $(element);
				$element.addClass(errorClass);
				$(element.form).find("label[for=" + element.name + "]")
						.addClass(errorClass);
			},
			unhighlight : function(element, errorClass) {
				var $element = $(element);
				$element.removeClass(errorClass);
				$element.parents(".row").removeClass(errorClass);
				$(element.form).find("label[for=" + element.name + "]")
						.removeClass(errorClass);
			},
			focusCleanup :false,
			submitHandler : function(form) {
				form.submit();
			},
			success : function(label) {
				label.removeClass(this.errorClass);
				this.unhighlight(label, this.errorClass)
			},
			debug :true
		});
	}
	$("#next-button").click( function() {
		$(formSelector).submit();
		return false;
	});
}

/*
 * -------------- External links open in new window
 * --------------
 */

function makePopupLinks() {
	// check for morello in-situ-editing
	var queryString = document.location.search;
	if (queryString.indexOf('ms-in-situ-editing') == -1) {
		var entries = document.getElementsByTagName('a');
		for ( var i = 0; i < entries.length; i++) {
			// check for javascipt: and mail: too.
			var currentRef = entries[i].href;
			if (currentRef != "" && currentRef != "#"
					&& currentRef.indexOf('javascript:') < 0
					&& currentRef.indexOf('mailto:') < 0
					&& currentRef.indexOf(location.hostname) < 0) {
				entries[i].onclick = function() {
					window.open(this.href);
					return false;
				}
			}
		}
	}
}

/* ----------- Kleine zoekforumlier ----------- */

function smallSearchformSubmit(form) {
	// submit to link in select value if set ..
	if (form.area != null) {
		alert(form.area)
	} else {
		form.submit();
	}

}

/* -----------Oude VUMC pageNav code, no idea if this works----------- */

function artikelSubnavigatie() {
	var objNav = document.getElementById('artikelSubnav');
	if (objNav) {
		var objArtikel = document.getElementById('artikel_1');
		if (objArtikel) {
			objArtikel.style.display = 'block';
		}
	}
}

function artikelClassClear() {
	var oSubNavChildren = document.getElementById('artikelSubnav').childNodes;

	for (n = 0; n < oSubNavChildren.length; n++) {
		if (oSubNavChildren[n].tagName == 'DIV') {
			var oDivNodes = oSubNavChildren[n].childNodes;
			for (x = 0; x < oDivNodes.length; x++) {
				if (oDivNodes[x].tagName == 'UL') {
					var oUlNodes = oDivNodes[x].childNodes;
					for (y = 0; y < oUlNodes.length; y++) {
						if (oUlNodes[y].tagName == 'LI') {
							oUlNodes[y].className = '';
						}
					}
				}
			}
		}
	}
}

function toonArtikel(nArtikel, oThis) {
	var objFound = true;

	for (n = 1; objFound; n++) {
		var objArtikel = document.getElementById('artikel_' + n);
		if (objArtikel) {
			if (n == nArtikel)
				objArtikel.style.display = 'block';
			else
				objArtikel.style.display = 'none';

		} else
			objFound = false; // end the loop
	}

	artikelClassClear();

	if (oThis)
		oThis.parentNode.className = 'active';
}

function artikelNavigatie(nWaarde) {
	/* controleer welk artikel actief is */
	var objNav = document.getElementById('artikelSubnav');

	var artikelFound = true;
	var nArtikelen = 0;
	var nArtikelActief = -1;
	var objArtikel;

	if (objNav) {
		for (n = 1; (artikelFound); n++) {
			objArtikel = document.getElementById('artikel_' + n);
			if (objArtikel) {
				nArtikelen++;
				if (objArtikel.style.display == 'block') {
					nArtikelActief = n;
				}
			} else {
				artikelFound = false
			}
		}
	}

	if (nArtikelActief > -1) {
		var nTarget;
		if (nWaarde == 0)
			nTarget = 1
		else {
			nTarget = nArtikelActief + nWaarde;
		}

		if (nTarget >= 1 && nTarget <= nArtikelen) {
			toonArtikel(nTarget);
			document.getElementById('artikelNav_' + nTarget).className = 'active';
		}
	}
}

/* -------------------------------------------------------------------- */

