"use strict";
var Modifiers, Animator;

window.onload = function () {
	var hasClassName,
		allElements,
		results = [],
		element, 
		i,
		externalLinks,
		elementClass,
		href;
	if (document.getElementsByClassName === undefined) {
		document.getElementsByClassName = function (className) {
			hasClassName = new RegExp("(?:^|\\s)" + className + "(?:$|\\s)");
			allElements = document.getElementsByTagName("*");
			results = [];
			for (i = 0; (element = allElements[i]) != null; i++) {
				elementClass = element.className;
				if (elementClass && elementClass.indexOf(className) !== -1 && hasClassName.test(elementClass)) {
					results.push(element);
				}
			}
			return results;
		};
	}
	externalLinks = document.getElementsByClassName('open_window');
	for (i = 0; (element = externalLinks[i]) != null; i++) {
		href = element.href;
		element.onclick = function() { window.open(href); return false;}
	}
};

function showCollection(jaar, maand, type) {
	var el = document.getElementById(type),
		elementen = el.getElementsByTagName('tr'),
		length, i,
		controle;
	for (i = 0, length = elementen.length; i < length; i++) {
		if (elementen[i].className.indexOf("archief") !== -1) {
			controle = "archief-" + jaar + "-" + maand;
			if (elementen[i].className === controle) {
				elementen[i].style.display = "";
			} else {
				elementen[i].style.display = "none";
			}
		} else {
			elementen[i].style.display = "none";
		}
	}
}

function expandContent() {
	var el, currentClassName, currentHeight, newClassName, newHeight, modifiers, result;
	// clean up current status
	el = document.getElementById("meer");
	el.style.overflow = "";
	el.style.height = "";
	// store old className and height
	currentClassName = el.className;
	currentHeight = el.offsetHeight;
	// get new className and height
	newClassName = (currentClassName === "collapsed") ? "expanded" : "collapsed";
	el.className = newClassName;
	newHeight = el.offsetHeight;
	// manually set to old
	el.style.height = currentHeight + "px";
	el.style.overflow = "hidden";
	modifiers = new Modifiers();
	modifiers.duration = 750;
	modifiers.profile = modifiers.DECELERATING;
	result = new Animator([{element: el, targetState: {height: newHeight}}], modifiers);
}

function toggle(trigger) {
	var element = document.getElementById(trigger),
		className = element.className,
		newClassName = className.replace("expanded|collapsed", className.match("expanded") ? "collapsed" : "expanded");
	element.className = newClassName;
}

function switchClass(who) {
	var el = document.getElementById(who);
	if (el.className === "hide") {
		el.className = "unhide";
	} else {
		el.className = "hide";
	}
}

function fillCheckBoxen(who) {
	var	textField = document.getElementById(who + "-editor").firstChild,
		//lokatie = document.getElementById(who),
		//checkBoxes = lokatie.getElementsByTagName("input"),
		waarde = textField.firstChild.data,
		item = waarde.split(";"),
		i, length;
	for (i = 0, length = item.length; i < length; i++) {
		if (document.getElementById(who + item[i])) {
			document.getElementById(who + item[i]).checked = "true";
		}
	}
}

function switchState(who) {
	var el = document.getElementById(who),
		zoekveld;
	if (who === "MetaTable") {
		if (el.style.display === 'none') {
			// ff de 2 rijen checkboxen vullen
			fillCheckBoxen('audience');
			fillCheckBoxen('category');
			fillCheckBoxen('organisationType');
		}
	}
	if (el.style.display === "") {
		el.style.display = 'none';
	} else {
		el.style.display = '';
		if (who === "aanmelden") {
			zoekveld = document.getElementById('aanmeldennb');
			zoekveld.focus();
		}
	}
}

function updateTextField(checkboxEl, Id) {
	var root = document.getElementById(Id),
		checkboxes = root.getElementsByTagName("input"),
		textField = document.getElementById(Id + "-editor").firstChild,
		s = [],
	i, length;
	for (i = 0, length = checkboxes.length; i < length; i++) {
		if (checkboxes[i].checked) {
			s.push(checkboxes[i].value);
		}
	}
	textField.firstChild.data = s.join(";");
}

function clickCheckboxContainer(Id) {
	// is er op een checkbox geklikt
	var el = event.srcElement;
	if (el.tagName === "INPUT") {
		updateTextField(el, Id);
	}
}

function fillRadioBoxen(who) {
	var textField = document.getElementById(who + "-editor").firstChild,
		//lokatie = document.getElementById(who),
		//checkBoxes = lokatie.getElementsByTagName("input"),
		waarde = textField.firstChild.data;
	if (document.getElementById(waarde)) {
		document.getElementById(waarde).checked = "true";
	}
}

function fillMeta() {
	// fill the metadata first
	if (document.getElementById("MetaTable") !== null) {
		fillCheckBoxen('audience');
		fillCheckBoxen('category');
		fillCheckBoxen('organisationType');
	}
}