var	elements	= {};
var ie6 = false;

window.onload = function() {
		var hrefRegEx = new RegExp("^#|mailto:|javascript:|(http|https)://" + window.location.hostname, "gi");
		var anchors	= document.getElementsByTagName("a");
		function newWindow() {
			return !window.open(this.href, "_blank");
		}
		function addIcon(anchor)
		{
			var icon = new Image();
	
			icon.src = "icon_external.gif";
			icon.alt = "Externe pagina";
	
			anchor.appendChild(icon);
		}
		function check(anchor) {
			extend(anchor);
			if (anchor.href && ((!anchor.href.match(hrefRegEx) && !anchor.hasClass("nopopup")) || anchor.hasClass("popup"))) {
				anchor.onclick = newWindow;
					anchor.title = (!anchor.title ? "Opent in een nieuw venster" : anchor.title + " (Opent in een nieuw venster)");
				if (!anchor.getElementsByTagName("img").length) {
					anchor.addClass("external");
	
					addIcon(anchor);
				}
			}
		}
		for (var i = 0, anchorsLength = anchors.length; i < anchorsLength; i++) {
			check(anchors[i]);
		}
	}	
function createSocket() {
	try {
		return new XMLHttpRequest();
	}
	catch (exception) {}
	var xmlImplementations = [
		"MSXML2",
		"Microsoft",
		"MSXML",
		"MSXML3"
	];

	for (var i = 0; i < xmlImplementations.length; i++) {
		try {
			return new ActiveXObject(xmlImplementations[i] + ".XMLHTTP");
		}
		catch (exception) {}
	}
	return null;
}

function require(moduleName) {
	if (mod[moduleName]) {
		return true;
	}

	var socket	= createSocket();

	if (!socket) {
		return false;
	}

	socket.open("GET", "/js/" + moduleName.toLowerCase() + ".js", false);
	socket.send(null);
	if (socket.status == 200) {
		eval(socket.responseText);

		if (typeof dependencies != "undefined") {
			for (var i = 0; dependencies[i] !== undefined; i++) {
				require(dependencies[i]);
			}
		}

		return true;
	}
	return false;
}

function collapse(itemname, itemlink) {
	var elementobject = element(itemname);
	var elementlink = element(itemlink);
	var toggle = extend(elementlink);
	var target = extend(elementobject);

	if (target.hasClass("active")) {
		target.removeClass("active");
		toggle.removeClass("active");
	} else {
		target.addClass("active");
		toggle.addClass("active");
	}

	return false;
}
function checkIE6(){
	var myApp = navigator.appName;
	var myVers = navigator.appVersion.split(' ')[0];
	  
	if(myApp == "Microsoft Internet Explorer"){
	  	if(myVers == "4.0"){
	  		return true
	  	}
	  	else
	  	{
	  		return false;
	  	}
  	}
  	else
	{
		return false;
	}
}

function jsEnabled() {
	first("body", document).addClass("js");
}

function element(id, overwriteCache) {
	if (overwriteCache && elements[id]) {
		delete elements[id];
	}

	if (elements[id]) {
		return elements[id];
	}
	if ((elements[id] = document.getElementById(id))) {
		extend(elements[id]);

		return elements[id];
	}

	return null;
}
function newElement(nodeName, attributes, contents) 
{
    if (!nodeName) {
        return false;
    }

    var element = document.createElement(nodeName);
    if (contents && contents.constructor == Array) {
		for (var i = 0; contents[i] !== undefined; i++) {
			if (typeof contents[i] !== "object") {
				element.appendChild(document.createTextNode(contents[i]));
			} else if (contents[i].nodeType && contents[i].nodeType == 1) {
				element.appendChild(contents[i]);
			}
		}
    }
    if (attributes) {
        for (var attribute in attributes) {
            element[attribute] = attributes[attribute];
        }
    }
    return extend(element);
}
function first(nodeName, parentNode) {
	if (this.nodeType && this.nodeType == 1) {
		parentNode = this;
	}
	if (!parentNode) {
		return null;
	}
	var element;
	if ((element = parentNode.getElementsByTagName(nodeName)[0])) {
		return extend(element)
	}
	return null;
}
function addClass(className, element) {
	if (this.nodeType && this.nodeType == 1) {
		element = this;
	}
	if (!element) {
		return false;
	}
	element.className += (element.className == "" ? "" : " ") + className;
	return true;
}
function removeClass(className, element) {
	if (this.nodeType && this.nodeType == 1) {
		element = this;
	}
	if (!element) {
		return false;
	}
	var classRegExp = new RegExp(" ?" + className, "g");
	element.className = element.className.replace(classRegExp, "");
	return true;
}
function hasClass(className, element) {
	if (this.nodeType && this.nodeType == 1) {
		element = this;
	}
	if (!element) {
		return false;
	}
	var classRegExp = new RegExp("(^|[ ])(" + className + ")($|[ ])", "g");
	return element.className.match(classRegExp) ? true : false;
}
function getPosition(element) {
	if (this.nodeType && this.nodeType == 1) {
		element = this;
	}

	var position = {
		x : 0,
		y : 0
	}

	if (element.offsetParent) {
		position.x = element.offsetLeft;
		position.y = element.offsetTop;

		while ((element = element.offsetParent)) {
			position.x += element.offsetLeft;
			position.y += element.offsetTop;
		}

		return position;
	}

	return null;
}
function extend(element) {
	element.first		= first;
	element.addClass	= addClass;
	element.removeClass	= removeClass;
	element.hasClass	= hasClass;
	element.getPosition	= getPosition;

	return element;
}
function insertFlash(container, file, showwidth, showheight) {
	if(checkIE6() == true){
		var replacement;

		replacement = '<object type="application/x-shockwave-flash" data="' + file + '" width="' + showwidth + '" height="' + showheight + '">';
		replacement += '<param name="movie" value="' + file + '" />';
		replacement += '</object>';

		element(container).innerHTML = replacement;
	}
	else
	{
		replacement = element(container);
			replacement.appendChild(
				newElement(
					"object",
					{
		    			type	:"application/x-shockwave-flash",
		        		data	: file,
		       			width	: showwidth,
		        		height	: showheight
					},
		   		[
		    			newElement(
		        		"param",
		           		{	name	: "movie",
		               			value	: file
		           		}
		        		)
		    		]
		 	)
 		);
	}
}