	var strStyleSheet = "";
	var objBody = document.body;
	
	function getNodeClasses(objNode, intRecursion, prefix){
		var strTabs = '';
		var idPrefix, classPrefix, tagPrefix, addPrefix;
		var newEntry = '';
		// for every recursion add one tab
		for(var intB=0; intB<intRecursion; intB++) strTabs += '\t';
		for(var intB=0; intB<intRecursion; intB++) strTabs += '\t';
		// get the child nodes
		var objChildNodes = objNode.childNodes;
		// for every childnode
		for(var intA=0; intA<objChildNodes.length; intA++){
			// reset prefixes
			idPrefix = '';
			classPrefix = '';
			tagPrefix = '';
			addPrefix = '';
			// if it has an id
			if(typeof(objChildNodes[intA].id)!='undefined'){
				if(objChildNodes[intA].id!=''){
					// add class to stylesheet prototype
					newEntry = strTabs + '#' + objChildNodes[intA].id + ' {}\n'
						// strStyleSheet += strTabs + prefix + '#' + objChildNodes[intA].id + ' {}\n'
					// add this style only if there's not double
					if(strStyleSheet.indexOf(newEntry)<0) strStyleSheet += newEntry;
					// update the prefix
					idPrefix = '#' + objChildNodes[intA].id;
				}
			}
			// if it has a className
			if(typeof(objChildNodes[intA].className)!='undefined'){
				if(objChildNodes[intA].className!=''){
					// split the classnames
					allClasses = objChildNodes[intA].className.split(' ');
					// for all classes
					for(var b=0; b<allClasses.length; b++){
						// add class to stylesheet prototype
						newEntry = strTabs + prefix + objChildNodes[intA].nodeName.toLowerCase() + '.' + allClasses[b] + ' {}\n';
						// add this style only if there's not double
						if(strStyleSheet.indexOf(newEntry)<0) strStyleSheet += newEntry;
						// update the prefix
						classPrefix = objChildNodes[intA].nodeName.toLowerCase() + '.' + allClasses[b];
					}
				}
			}
			// if it has neither
			if(
				objChildNodes[intA].className=='' && 
				objChildNodes[intA].id=='' && 
				objChildNodes[intA].nodeName.indexOf('text')<0 && 
				objChildNodes[intA].nodeName.indexOf('comment')<0
			){
				// add class to stylesheet prototype
				newEntry = strTabs + prefix + objChildNodes[intA].nodeName.toLowerCase() + ' {}\n';
				// add this style only if there's not double
				if(strStyleSheet.indexOf(newEntry)<0) strStyleSheet += newEntry;
				// update the prefix
				tagPrefix = objChildNodes[intA].nodeName.toLowerCase();
			}
			// if the last entry was a link
			if(newEntry.indexOf(' a {}')>-1){
				// repeat it four times with the mouseover states
				linkEntry = newEntry.replace('a {}','a:link,');
				if(strStyleSheet.indexOf(linkEntry)<0) strStyleSheet += '\t' + linkEntry;
				linkEntry = newEntry.replace('a {}','a:visited {}');
				if(strStyleSheet.indexOf(linkEntry)<0) strStyleSheet += '\t' + linkEntry;
				linkEntry = newEntry.replace('a {}','a:hover,');
				if(strStyleSheet.indexOf(linkEntry)<0) strStyleSheet += '\t' + linkEntry;
				linkEntry = newEntry.replace('a {}','a:active {}');
				if(strStyleSheet.indexOf(linkEntry)<0) strStyleSheet += '\t' + linkEntry;
				// and jump further in
				intRecursion += 1;
			}
			// if it has childNodes
			if(objChildNodes[intA].childNodes.length>0){
				// update the prefix
				if(idPrefix){
					addPrefix = idPrefix + ' ';
				}else if(classPrefix){
					addPrefix = prefix + classPrefix + ' ';
				}else if(tagPrefix){
					addPrefix = prefix + tagPrefix + ' ';
				}
				// recurse
				getNodeClasses(objChildNodes[intA], intRecursion+1, addPrefix);
			}
		}
	}

	function showNodeClasses(){
		getNodeClasses(objBody, 0 , '');
		document.body.innerHTML = '<pre>' + strStyleSheet + '</pre>';	
	}

	//document.writeln('<a href="javascript:{showNodeClasses()}" style="position : absolute; left : 0px; top : 0px;">Click here to create an empty stylesheet for this markup.</a>');

	
	
	
/*
name			: Class Behaviour
update			: 20051129
author			: Xander Bindt, Frank van Rooijen, Maurice van Creij
dependencies		: lib_classbehaviour.js
info				: http://www.woollymittens.nl/content/details.asp?id=20040805133501
*/

	// main class-behaviour object
	function ClassBehaviour(){
		/* properties */
			this.handlers			=	new Array();
		/* methods */
			// return a parameter from the url's query strings
			this.getQueryParameter 	= 	function(paramName, defaultValue){
											// split the query string at the parameter name
											var queryParameters = document.location.search.split(paramName+"=");
											// split the parameter value from the rest of the string
											var queryParameter = (queryParameters.length>1) ? queryParameters[1].split("&")[0] : null ;
											// return the value
											return (queryParameter!=null) ? queryParameter : defaultValue ;
										}
			// returns a string of parameters found in the classname which can be [eval]uated
			this.getClassParameter	=	function(targetNode, paramName, defaultValue){
											// get the class parameter from the classname
											var classParameter = targetNode.className;
											// split the classname between the parameter name
											classParameter = classParameter.split(paramName + '_');
											// split the second piece between spaces and take the first part,  if there are two pieces
											classParameter = (classParameter.length>1) ? classParameter[1].split(' ')[0] : null ;
											// return the value
											return (classParameter!=null) ? classParameter : defaultValue ;
										}
			// parse the document for classnames
			this.parseDocument		=	function(){
											// get all document nodes
											var allNodes = (document.all) ? document.all : document.getElementsByTagName("*");
											// for all tags
											for(var a=0; a<allNodes.length; a++){
												// if the item has a className
												if(allNodes[a].className){
													// get the classname
													nodeClass = allNodes[a].className;
													// for all behaviours
													for(var b=0; b<this.handlers.length; b++){
														// if the behaviour's name exists in the class name, apply it's events
														if(nodeClass.indexOf(this.handlers[b].name)>-1) this.handlers[b].start(allNodes[a]);
													}
												}
											}
										}
			// returns the visible display state needed for this element
			this.getVisibleState	=	function(node){
											// what kind of node is this
											switch(node.nodeName.toLowerCase()){
												case 'table' : visibleState='table' ; break;
												case 'thead' : visibleState='table-header-group' ; break;
												case 'tfoot' : visibleState='table-footer-group' ; break;
												case 'tbody' : visibleState='table-row-group' ; break;
												case 'tr' : visibleState='table-row' ; break;
												case 'td' : visibleState='table-cell' ; break;
												case 'th' : visibleState='table-cell' ; break;
												default : visibleState='block';
											}
											// apply the state
											return (document.all && navigator.userAgent.indexOf('Opera')<0) ? 'block' : visibleState;
										}
	}
	// create the main class-behaviour object
	var classBehaviour = new ClassBehaviour;
	
	// Open an overlay as a popup window
		// define this class behaviour
		function OpenLayerPopUp(){
			/* properties */
			this.name 		= 	'openLayerPopUp';
			/* methods */
			this.start		=	function(node){
									// find the target layer
									targetPopUp = null;
									// process the node
									this.process(node);
									// the node's open button
									node.onclick = this.show;
								}
			this.fadeIn	=	function(id, amount){
									node = document.getElementById(id);
									nodes = node.getElementsByTagName('div');
									nodeShadow = nodes[0];
									nodeContent = nodes[1];
									// if the amount is not 50
									if(amount<50){
										// hide the popup content
										nodeContent.style.display = 'none';
										// set the shadow's fade to the next step
										nodeShadow.style.display = 'block';
										if(typeof(nodeShadow.style.MozOpacity)!='undefined')	nodeShadow.style.MozOpacity = amount/100;
										if(typeof(nodeShadow.style.filter)!='undefined')		nodeShadow.style.filter = "alpha(opacity=" + amount + ")";
										if(typeof(nodeShadow.style.opacity)!='undefined')		nodeShadow.style.opacity = amount/100;
										// show the popup collection
										node.style.display = 'block';
										// repeat the fade
										setTimeout("classBehaviour.openLayerPopUp.fadeIn('" + id + "'," + (amount+10) + ")",10);
									}else{
									// else
										// show the popup content
										nodeContent.style.display = 'block';
									}
								}
			this.fadeOut	=	function(id, amount){
									node = document.getElementById(id);
									nodes = node.getElementsByTagName('div');
									nodeShadow = nodes[0];
									nodeContent = nodes[1];
									// if the amount is not 100
									if(amount>0){
										// hide the popup content
										nodeContent.style.display = 'none';
										// set the fade to the next step
										if(typeof(nodeShadow.style.MozOpacity)!='undefined')	nodeShadow.style.MozOpacity = amount/100;
										if(typeof(nodeShadow.style.filter)!='undefined')		nodeShadow.style.filter = "alpha(opacity=" + amount + ")";
										if(typeof(nodeShadow.style.opacity)!='undefined')		nodeShadow.style.opacity = amount/100;
										// repeat the fade
										setTimeout("classBehaviour.openLayerPopUp.fadeOut('" + id + "'," + (amount-10) + ")",10);
									}else{
										// show the popup content
										node.style.display = 'none';
									}
								}
			/* events */
			this.process	=	function(that){
									var objNode = (typeof(this.nodeName)=='undefined') ? that : this ;
									// prepare the popup's layout
								}
			this.show		=	function(that){
									var objNode = (typeof(this.nodeName)=='undefined') ? that : this ;
									var olp = classBehaviour.openLayerPopUp;
// hide the page's selects
if(document.all){
	allSelects = document.getElementsByTagName('select');
	for(var a=0; a<allSelects.length; a++){allSelects[a].style.visibility = 'hidden'}
}
					
									// get the popup from the href or the popup itsself
									popUp = (objNode.href) ? document.getElementById(objNode.href.split('#')[1]) : objNode ;
									// find the close gadget
									popUpCloser = popUp.getElementsByTagName('span')[0];
									popUpCloser.onclick = olp.hide;
									// find the shadow overlay of the popup
									popUpOverlay = popUp.getElementsByTagName('div')[0];
									// set the overlay size in internet explorer
										//popUpOverlay.style.width = document.body.offsetWidth + 'px';
									popUpOverlay.style.height = (document.body.scrollHeight) ? document.body.scrollHeight + 'px' : document.body.offsetHeight + 'px';
					// set the distance from the left
					popUp.getElementsByTagName('div')[1].style.left = ((document.body.offsetWidth - 508 - 20) / 2) + 'px';
									// fade the popup in
									olp.fadeIn(popUp.id, 0);
										//popUp.style.display = 'block';
									// cancel the click
									return false;
								}
			this.hide		=	function(that){
									var objNode = (typeof(this.nodeName)=='undefined') ? that : this ;
									var olp = classBehaviour.openLayerPopUp;
									// fade the popup out
									olp.fadeOut(objNode.parentNode.parentNode.parentNode.parentNode.parentNode.id, 50);
										//objNode.parentNode.parentNode.style.display = 'none';
// hide the page's selects
if(document.all){
	allSelects = document.getElementsByTagName('select');
	for(var a=0; a<allSelects.length; a++){allSelects[a].style.visibility = 'visible'}
}
								}
		}
		// add this function to the classbehaviour object
		classBehaviour.openLayerPopUp = new OpenLayerPopUp;
		classBehaviour.handlers[classBehaviour.handlers.length] = classBehaviour.openLayerPopUp;
		
	// Defines something a layer popup and automaticaly opens it after a set time
		// define this class behaviour
		function LayerPopUp(){
			/* properties */
			this.name 		= 	'layerPopUp';
			/* methods */
			this.start		=	function(node){
									// get the required time delay
									delay = parseInt(classBehaviour.getClassParameter(node, 'autodeploy', '9999'));
									// if the delay is a rational one
									if(delay!=9999){
										// set a timeout for the popup
										setTimeout("classBehaviour.layerPopUp.showId('" + node.id + "')",delay);
									}
								}
			/* events */
			this.showId	=	function(id){
									classBehaviour.openLayerPopUp.show(document.getElementById(id));
								}
		}
		// add this function to the classbehaviour object
		classBehaviour.layerPopUp = new LayerPopUp;
		classBehaviour.handlers[classBehaviour.handlers.length] = classBehaviour.layerPopUp;
	
	// Add or remove display:none; onclick
		// define this class behaviour
		function ToggleNextNode(){
			/* properties */
			this.name 		= 	'toggleNextNode';
			this.lastNode	=	null;
			this.lastNext	=	null;
			/* methods */
			this.start		=	function(node){
									node.onclick = this.toggleNext;
								}
			/* events */
			this.toggleThis = 	function(that, strClosePrevious){
									var objNode = (typeof(this.nodeName)=='undefined') ? that : this ;
									var tnn = classBehaviour.toggleNextNode;
									// check if we are trying to close the last one
									if(strClosePrevious=='yes' && tnn.lastNode==objNode){return false}
									// restore previous node
									if(tnn.lastNode!=null && tnn.lastNode!=objNode && strClosePrevious=='yes') tnn.lastNode.style.display = 'none';
									// toggle node's visibility
									objNode.style.display = (objNode.style.display=='none') ? classBehaviour.getVisibleState(objNode) : 'none' ;
									// remember last node
									tnn.lastNode = objNode;	
								}
			this.toggleNext = 	function(that){
									var objNode = (typeof(this.nodeName)=='undefined') ? that : this ;
									var tnn = classBehaviour.toggleNextNode;
									// get parent recursion
									var intParentRecursion = parseInt(classBehaviour.getClassParameter(objNode,'useParent','0'));
									var objParentNode = objNode;
									for(var a=0; a<intParentRecursion; a++) objParentNode = objParentNode.parentNode;
									// check if a previousnode needs closing
									var strClosePrevious = classBehaviour.getClassParameter(objNode,'closePrevious','no');
									// get optional id
									var strCloseId = classBehaviour.getClassParameter(objNode, 'id', null);
									// determine the next node
									var objNextNode;
									if(strCloseId!=null){
										objNextNode = document.getElementById(strCloseId);
									}else if(objParentNode.nextSibling){
										objNextNode = (objParentNode.nextSibling.nodeName.indexOf("text")<0) ? objParentNode.nextSibling : objParentNode.nextSibling.nextSibling ;
									}
									// if there is a next node
									if(objNextNode!=null){
										// toggle it's visibility
										tnn.toggleThis(objNextNode, strClosePrevious);
										// If the next node has been hidden
										if(objNextNode.style.display=='none'){
											// restore current node's click state
											objNode.className = objNode.className.replace('active','link');
											if(objNode.src!=null) objNode.src = objNode.src.replace('active','link');
											// do the same to the parent node
//											objNode.parentNode.className = objNode.parentNode.className.replace('active','link');
										}else{
											// mark current node as active
											objNode.className = objNode.className.replace('link','active');
											objNode.className = objNode.className.replace('hover','active');
											if(objNode.src!=null) objNode.src = objNode.src.replace('link','active');
											if(objNode.src!=null) objNode.src = objNode.src.replace('hover','active');
											// do the same to the parent node
//											objNode.parentNode.className = objNode.parentNode.className.replace('link','active');
//											objNode.parentNode.className = objNode.parentNode.className.replace('hover','active');
											// restore previous node's click state
											if(tnn.lastNext!=null && tnn.lastNext!=objNode && strClosePrevious=='yes'){
												tnn.lastNext.className = tnn.lastNext.className.replace('active','link');
												if(objNode.src!=null) tnn.lastNext.src = tnn.lastNext.src.replace('active','link');
												// do the same to the parent node
//												tnn.lastNext.parentNode.className = tnn.lastNext.parentNode.className.replace('active','link');
											}
										}
										// remember last node
										tnn.lastNext = objNode;
									}
									// cancel onclick event
									return false;
								}
		}
		// add this function to the classbehaviour object
		classBehaviour.toggleNextNode = new ToggleNextNode;
		classBehaviour.handlers[classBehaviour.handlers.length] = classBehaviour.toggleNextNode;
		
	// Open links in a new window
		// define this class behaviour
		function OpenAsWindow(){
			/* properties */
			this.name 		= 	'openAsWindow';
			/* methods */
			this.start		=	function(node){
									node.target = "_blank"
								}
		}
		// add this function to the classbehaviour object
		classBehaviour.openAsWindow = new OpenAsWindow;
		classBehaviour.handlers[classBehaviour.handlers.length] = classBehaviour.openAsWindow;
		
	// Open links in a popup
		// define this class behaviour
		function OpenAsPopUp(){
			/* properties */
			this.name 		= 	'openAsPopUp';
			this.window		=	null;
			/* methods */
			this.start		=	function(node){
									node.onclick = this.process;
								}
			/* events */
			this.process 	= 	function(that){
									var objNode = (typeof(this.nodeName)=='undefined') ? that : this ;
									var oap = classBehaviour.openAsPopUp;
									// get the parameters from the classname
									var strWidth 		= 'width=' + classBehaviour.getClassParameter(objNode, 'width', '721');
									var strHeight 		= ',height=' + classBehaviour.getClassParameter(objNode, 'height', '600');
									var strLeft			= ',left=' + classBehaviour.getClassParameter(objNode, 'left', '');
									var strTop			= ',top=' + classBehaviour.getClassParameter(objNode, 'top', '');
									var strToolbars 	= ',toolbar=' + classBehaviour.getClassParameter(objNode, 'toolbar', 'no');
									var strScrolling 	= ',scrollbars=' + classBehaviour.getClassParameter(objNode, 'scrollbars', 'yes');
									var strStatus 		= ',status=' + classBehaviour.getClassParameter(objNode, 'status', 'no');
									var strResize 		= ',resizable=' + classBehaviour.getClassParameter(objNode, 'resizable', 'yes');
									var strLocation 	= ',location=' + classBehaviour.getClassParameter(objNode, 'location', 'no');
									var strMenu 		= ',menu=' + classBehaviour.getClassParameter(objNode, 'menu', 'no');
									var strName 		= classBehaviour.getClassParameter(objNode, 'name', 'popup');
									// open requested window
									oap.window = window.open(objNode.getAttribute('href'), strName, strWidth+strHeight+strScrolling+strToolbars+strStatus+strResize+strLocation+strMenu+strLeft+strTop);
									oap.window.focus();
									// cancel click
									return false;
								}
		}
		// add this function to the classbehaviour object
		classBehaviour.openAsPopUp = new OpenAsPopUp;
		classBehaviour.handlers[classBehaviour.handlers.length] = classBehaviour.openAsPopUp;
		
	// Class a link matching the document's url
		// define this class behaviour
		function MatchActiveUrl(){
			/* properties */
			this.name 		= 	'matchActiveUrl';
			/* methods */
			this.start		=	function(node){
									this.process(node);
								}
			this.convertAbsToRelUrls 	= 	function(strUrl){
												// is the url a relative path
												if(strUrl.indexOf('/')<0 || strUrl.substr(0,1)=='.' || strUrl.substr(0,1)=='/'){
													// the current absolute path
													strAbs = document.location.href;
													// remove the filename from the end
													strAbs = strAbs.substring(0, strAbs.lastIndexOf('/'));
													// while there are parent markers in the url
													while(strUrl.indexOf('../')==0){
														// remove one level from the absolute path
														strUrl = strUrl.replace('../','');
														// remove one parent marker from the relative path
														strAbs = strAbs.substring(0, strAbs.lastIndexOf('/'));
													}
													// remove all current dir markers from the relative url
													strUrl = strUrl.replace(/\.\//gi,'');
													// add the url to the absolute path
													strUrl = strAbs + '/' + strUrl;
												}
												return strUrl;
											}
			this.compareUrls 	= 	function(strUrlA,strUrlB){
										var intCurScore = 0;
										var intPotScore = 0;
										var intMaxScore = 0;
										var intA,intB;
										// replace most common illegal characters
										strUrlA = strUrlA.replace(/ /gi,"%20");
										strUrlB = strUrlB.replace(/ /gi,"%20");
										// remove anchors
										strUrlA = strUrlA.split('#')[0];
										strUrlB = strUrlB.split('#')[0];
										// make sure both paths are absolute
										strUrlA = this.convertAbsToRelUrls(strUrlA);
										strUrlB = this.convertAbsToRelUrls(strUrlB);
										// split the urls into manageable strings
										var arrUrlA = strUrlA.split(/[?&#\/]/i);
										var arrUrlB = strUrlB.split(/[?&#\/]/i);
										// for every string of UrlA
										for(intA=0; intA<arrUrlA.length; intA++){
											// is the string in the substrings of UrlB
											intB = 0; while(intB<arrUrlB.length && arrUrlA[intA]!=arrUrlB[intB]) intB += 1;
											// if a match was found, add length of string A to current score
											if(intB<arrUrlB.length) intCurScore += arrUrlA[intA].length;
											// add length of string A to potential score
											intPotScore += arrUrlA[intA].length;
										}
										// calcultate maximum score possible
										intMaxScore = strUrlB.length - arrUrlB.length + 1;
										// return the compare-score
										return intCurScore/intPotScore;
									}
			this.process 	= 	function(objNode){
									var cmh = classBehaviour.classMouseHover;
									var smh = classBehaviour.srcMouseHover;
									// get parent recursion
									var intToParent	= parseInt(classBehaviour.getClassParameter(objNode, 'toParent', '0'));
									// get parent href
									var intFromParent = parseInt(classBehaviour.getClassParameter(objNode, 'fromParent', '0'));
									// get the url and clean it up
									var strUrl = this.convertAbsToRelUrls(document.location.href);
									// get the href and clean it up
									var strHref = (intFromParent>0) ? this.convertAbsToRelUrls(objNode.parentNode.getAttribute('href')) : this.convertAbsToRelUrls(objNode.getAttribute('href')) ;
									// was the data bad
									if(strHref!=null){
										// compare score
										var ftlCompareScore = this.compareUrls(strUrl, strHref) * this.compareUrls(strHref, strUrl);
										// if the href matches the url 
										if(ftlCompareScore==1){
											// add the active class to the target item
											cmh.addActive(objNode);
											if(objNode.nodeName=='IMG') smh.addActive(objNode);
											// if a parent node also needs to be marked
											if(intToParent>0){
												// get the relevant parent node
												for(var intA=0; intA<intToParent; intA++) objNode = objNode.parentNode;
												// if the href matches the url
												if(ftlCompareScore==1){
													// add the active class to the parent item
													cmh.addActive(objNode);
												}
											}
											// report a match
											return true;
										}
									}
									// report no match
									return false;
								}
		}
		// add this function to the classbehaviour object
		classBehaviour.matchActiveUrl = new MatchActiveUrl;
		classBehaviour.handlers[classBehaviour.handlers.length] = classBehaviour.matchActiveUrl;
		
	// Make foldout menu
		// define this class behaviour
		function FoldOutMenu(){
			/* properties */
			this.name 			= 	'foldOutMenu';
			this.menuHeight	=	27;
			this.sizeDelay		=	null;
			this.resetDelay	=	null;
			this.hoverDelay	=	null;
			this.hoverObject	=	null;
			this.recursions	=	new Array();
			this.highlights	=	new Array();
			/* methods */
			this.start		=	function(node){
									if(node.className.indexOf('tabStrip')<0) this.process(node);
								}
			this.process 	= 	function(objNode){
									var objNodes, objMatch;
									// apply events to all LIs
									objNodes = objNode.getElementsByTagName('A');
									for(var intNode=0; intNode<objNodes.length; intNode++){
										// default class
										if(objNodes[intNode].parentNode.className.indexOf('closed')<0) objNodes[intNode].parentNode.className = 'closed passive ' + objNodes[intNode].parentNode.className;
										// tree events
										objNodes[intNode].onmouseover	= this.delayMouseOver;
										objNodes[intNode].onmouseout	= this.delayMouseOut;
										// sub-container event
										// hack for MSIE 6: manualy set the mouseover
										if(navigator.appVersion.indexOf('MSIE 5.')>-1 || navigator.appVersion.indexOf('MSIE 6.')>-1){
											// add a highlight
											objNodes[intNode].parentNode.onmouseover = this.addHighlight;
											objNodes[intNode].parentNode.onmouseout = this.remHighlight;
										}
									}
									// container mouseover
									objNode.onmouseover = this.cancelMouseOut;
									objNode.onmouseout = this.delayMouseOut;
									// add classnames for the recursion levels for reference
									this.recurse(objNode, 0);
								}
			this.recurse	=	function(node, recursion){
									// give this node the current recursion
									node.className += 'recursion_' + recursion;
									// get all subnodes
									var children = node.getElementsByTagName('UL');
									// for every subnode
									var nodeCounter = 0;
									for(var a=0; a<node.childNodes.length; a++){
										// if this subnode is a list node
										if(node.childNodes[a].nodeName=='LI'){
											// count the subnode
											nodeCounter += 1;
											// get the node's child container
											nodeContainer = node.childNodes[a].getElementsByTagName('UL');
											// if this node had a child container
											if(nodeContainer.length>0){
												// adjust the background-height of the child container
												if(navigator.userAgent.indexOf('Mac')>-1){
													nodeContainer[0].style.backgroundPosition = '0px -' + (204 - (nodeCounter * 18) + 5) + 'px';
												}else{
													nodeContainer[0].style.backgroundPosition = '0px -' + (204 - (nodeCounter * 18) + 8) + 'px';
												}
												// pass it this function with the next recursion counter
												this.recurse(nodeContainer[0], recursion + 1);
											}
										}
									}
								}
			/* reset menu */
			this.resetMenu	=	function(){
									var fom = classBehaviour.foldOutMenu;
									// get the active nodes from every recursion and close them
									for(var a=0; a<fom.recursions.length; a++) fom.remOpened(fom.recursions[a]);
									// set the menu back to the original height
									fom.setHeight()
								}
			/* menu resize animation */
			this.setHeight	=	function(){
									// cancel any animation in progress
									clearTimeout(this.sizeDelay);
									// get the menu's root node
									rootNode = document.getElementById('mainNavigation');
									// set default size
									childCount = 0;
									// get all nodes
									allNodes = rootNode.getElementsByTagName('ul');
									// for all nodes
									for(var a=0; a<allNodes.length; a++){
										// if it's marked with hover
										if(allNodes[a].parentNode.className.indexOf('opened')>-1){
											// if the count exceeds the default size, replace it
											if(allNodes[a].childNodes.length > childCount) childCount = allNodes[a].childNodes.length;
										}
									}
									// compensate the child-count for text-nodes
									if(navigator.userAgent.indexOf('MSIE')>-1 && childCount>0) childCount = childCount * 2 + 1;
									// calculate the new menu size
									newHeight = (navigator.userAgent.indexOf('Mac')>-1) ? (childCount * 10 + 28) : (childCount * 9 + 28);
									// set the menu to the new default size
									// aangepast zodat menu volledig uitklapt en uitgeklapt blijft tot je uit het menu navigeert
									if (newHeight > 215){
                     this.stepGrow(newHeight);
                  }
                  else {   
                     if(newHeight < this.menuHeight) this.stepShrink(215);                  
         					   if(newHeight > this.menuHeight) this.stepGrow(215);
         					}   
         					//if(newHeight < this.menuHeight) this.stepShrink(newHeight);
                  if(newHeight == 28) this.stepShrink(newHeight);
									
									
								}
			this.stepGrow = 	function(targetHeight){
									var fom = classBehaviour.foldOutMenu;
									// get the menu node
									rootNode = document.getElementById('mainNavigation');
									// if this is lower than the intended height
									if(fom.menuHeight<targetHeight && navigator.appVersion.indexOf('MSIE 7.')<0){
										// make it one step larger
										fom.menuHeight += 50;
										if(fom.menuHeight>targetHeight) fom.menuHeight = targetHeight;
										rootNode.style.height = fom.menuHeight + 'px';
										// then do another step
										fom.sizeDelay = setTimeout('classBehaviour.foldOutMenu.stepGrow('+targetHeight+')',10);
									}else{
										rootNode.style.height = targetHeight + 'px';
									}
								}
			this.stepShrink = 	function(targetHeight){
									var fom = classBehaviour.foldOutMenu;
									// get the menu node
									rootNode = document.getElementById('mainNavigation');
									// if this is higher than the intended height
									if(fom.menuHeight>targetHeight && navigator.appVersion.indexOf('MSIE 7.')<0){
										// make it one step smaller
										fom.menuHeight -= 50;
										if(fom.menuHeight<targetHeight) fom.menuHeight = targetHeight;
										rootNode.style.height = fom.menuHeight + 'px';
										// then do another step
										fom.sizeDelay = setTimeout('classBehaviour.foldOutMenu.stepShrink('+targetHeight+')',50);
									}else{
										rootNode.style.height = targetHeight + 'px';
									}
								}
			/* menu delay */
			this.delayMouseOver =	function(){
										var objNode = (typeof(this.nodeName)=='undefined') ? that : this ;
										var fom = classBehaviour.foldOutMenu;
										// cancel the last delayed request
										clearTimeout(fom.hoverDelay);
										clearTimeout(fom.resetDelay);
										// remember the requested object
										fom.hoverObject	= objNode;
										// set a new delayed request
										fom.hoverDelay = setTimeout('classBehaviour.foldOutMenu.addOpened(classBehaviour.foldOutMenu.hoverObject)',256);
									}
			this.delayMouseOut	=	function(){
										var objNode = (typeof(this.nodeName)=='undefined') ? that : this ;
										var fom = classBehaviour.foldOutMenu;
										// the parent container should close faster
										delay = (objNode.parentNode.nodeName.indexOf('DIV')<0) ? 1024 : 128;
										// clear a previous wait
										clearTimeout(fom.hoverDelay);
										clearTimeout(fom.resetDelay);
										// wait for the mouse interaction to end
										fom.resetDelay = setTimeout('classBehaviour.foldOutMenu.resetMenu()',delay);
									}
			this.cancelMouseOut=	function(){
										var fom = classBehaviour.foldOutMenu;
										// clear a previous wait
										clearTimeout(fom.resetDelay);
									}
			/* events */
			this.addHighlight =	function(that){
										var objNode = (typeof(this.nodeName)=='undefined') ? that : this ;
										var fom = classBehaviour.foldOutMenu;
										/*
										// get the recursion of the current item
										recursion = parseInt(classBehaviour.getClassParameter(objNode.parentNode, 'recursion', '0'));
										// simulate a mouseout of the current recursion
										if(fom.highlights[recursion]) fom.remHighlight(fom.highlights[recursion]);
										// store this node as the next mouseout of this recursion
										fom.highlights[recursion] = objNode;
										*/
										// highlight the current list item
										if(objNode.className.indexOf('highlight')<0)
											objNode.className = objNode.className.replace('passive','highlight');
									}
			this.remHighlight =	function(that){
										var objNode = (typeof(this.nodeName)=='undefined') ? that : this ;
										var fom = classBehaviour.foldOutMenu;
										// remove the highlight from current list item
										if(objNode.className.indexOf('passive')<0)
											objNode.className = objNode.className.replace('highlight','passive');
									}
			this.addOpened = 		function(that){
										var objNode = (typeof(this.nodeName)=='undefined') ? that : this ;
										var fom = classBehaviour.foldOutMenu;
						//	startTime = new Date();
										if(objNode){
											// cancel the menu reset wait
										//	clearTimeout(fom.resetDelay);
											// get the recursion level of this node
											recursion = parseInt(classBehaviour.getClassParameter(objNode.parentNode.parentNode, 'recursion', '0'));
											// clear the previous nodes on lower recursions
											for(var a=recursion; a<fom.recursions.length; a++) fom.remOpened(fom.recursions[a]);
											// emulate the :hover functionality in IE6
											if(objNode.parentNode.className.indexOf('opened')<0)
												objNode.parentNode.className = objNode.parentNode.className.replace('closed','opened');
											// set the height of the menu
											fom.setHeight();
											// change the src of a child image
											imgNodes = objNode.parentNode.getElementsByTagName('img');
											if(imgNodes.length>0)
												if(imgNodes[0].src.indexOf('_active')<0)
													imgNodes[0].src = imgNodes[0].src.replace('_link','_active');
											// store the given node in the active nodes list
											fom.recursions[recursion] = objNode;
										}
						//	endTime = new Date();
						//	debug(endTime - startTime);
									}
			this.remOpened = 		function(that){
										var objNode = (typeof(this.nodeName)=='undefined') ? that : this ;
										var fom = classBehaviour.foldOutMenu;
										if(objNode){
											// emulate the :hover functionality in IE6
											if(objNode.parentNode.className.indexOf('closed')<0)
												objNode.parentNode.className = objNode.parentNode.className.replace('opened','closed');
											// change the src of a child image
											imgNodes = objNode.parentNode.getElementsByTagName('img');
											if(imgNodes.length>0)
												if(imgNodes[0].src.indexOf('_link')<0) 
													imgNodes[0].src = imgNodes[0].src.replace('_active','_link');
										}
									}
		}
		// add this function to the classbehaviour object
		classBehaviour.foldOutMenu = new FoldOutMenu;
		classBehaviour.handlers[classBehaviour.handlers.length] = classBehaviour.foldOutMenu;
		
	// Make foldout menu
		// define this class behaviour
		function TabStrip(){
			/* properties */
			this.name 		= 	'tabStrip';
			this.timeout	=	null;
			this.delay		=	524;
			this.foldIns 	= 	new Array();
			this.activeNode =	null;
			/* methods */
			this.start		=	function(node){
									this.process(node);
								}
			this.process 	= 	function(objNode){
									var objNodes, objMatch;
									var mau = classBehaviour.matchActiveUrl;
									// apply events to all LIs
									objNodes = objNode.getElementsByTagName('LI');
									for(var intNode=0; intNode<objNodes.length; intNode++){
										// mouseover events
										objNodes[intNode].onmouseover	= this.addHover;
										objNodes[intNode].onmouseout	= this.remHover;
									}
									// apply default settings to all As
									objNodes = objNode.getElementsByTagName('A');
									for(var intNode=0; intNode<objNodes.length; intNode++){
										// if the item has no valid link
										if(objNodes[intNode].href.indexOf("#")==objNodes[intNode].href.length-1){
											// make it the link of it's first child
											objNodes[intNode].href = objNodes[intNode+1].href
										}
										// use matchActiveUrl to find active items OR use the ones marked manualy
										objMatch = (mau.process(objNodes[intNode]) || objNodes[intNode].className.indexOf('active')>-1) ? objNodes[intNode] : objMatch ;
									}
									// recurse back the last matching node
									if(objMatch!=null){
										this.recurse(objMatch.parentNode);
									}
								}
			this.recurse 	= 	function(objParentNode){
									var cmh = classBehaviour.classMouseHover;
									// add active class to the anchor
									if(objParentNode.getElementsByTagName('A').length>0) cmh.addActive(objParentNode.getElementsByTagName('A')[0]);
									// store the active node
									this.activeNode = objParentNode;
									// add the active src to any image in the node
									imgNodes = objParentNode.getElementsByTagName('img');
									if(imgNodes.length>0) imgNodes[0].src = imgNodes[0].src.replace('_link','_active');
									// next recursion to same node type
									if(objParentNode.nodeName == objParentNode.parentNode.parentNode.nodeName) this.recurse(objParentNode.parentNode.parentNode);
								}
			/* events */
			this.addHover 	= 	function(that){
									var objNode = (typeof(this.nodeName)=='undefined') ? that : this ;
									var cmh = classBehaviour.classMouseHover;
									var fom = classBehaviour.tabStrip;
									// if a delay is required
									if(fom.delay>0){
										// cancel the timeout on the delayed mouseevents
										clearTimeout(fom.timeout);
										// handle the delayed mouseouts
										while(fom.foldIns.length>0){
											// change the stored active node to "active"
											if(fom.activeNode!=null) if(fom.activeNode.getElementsByTagName('IMG').length>0) fom.activeNode.getElementsByTagName('IMG')[0].src = fom.activeNode.getElementsByTagName('IMG')[0].src.replace('_link','_active');
											// change the src of a child image
											imgNodes = fom.foldIns[fom.foldIns.length-1].getElementsByTagName('img');
											if(imgNodes.length>0) imgNodes[0].src = imgNodes[0].src.replace('_active','_link');
											// remove the active classes from every item to be folded in
											cmh.remHover(fom.foldIns[fom.foldIns.length-1]);
											fom.foldIns.length = fom.foldIns.length - 1;
										}
										// restore all select form elements
										allSelects = document.getElementsByTagName('SELECT');
										if(document.all){
											for(var a=0; a<allSelects.length; a++){
												allSelects[a].style.visibility = 'visible';
											}
										}
									}
									// is the node exists
									if(objNode!=null){
										// emulate the parent node's mouseout event
										cmh.addHover(objNode);
										// change the stored active node to "link"
										if(fom.activeNode!=null) if(fom.activeNode.getElementsByTagName('IMG').length>0) fom.activeNode.getElementsByTagName('IMG')[0].src = fom.activeNode.getElementsByTagName('IMG')[0].src.replace('_active','_link');
										// change the src of a child image
										imgNodes = objNode.getElementsByTagName('img');
										if(imgNodes.length>0) imgNodes[0].src = imgNodes[0].src.replace('_link','_active');
										// hide all select form elements
										allSelects = document.getElementsByTagName('SELECT');
										if(document.all){
											for(var a=0; a<allSelects.length; a++){
												allSelects[a].style.visibility = 'hidden';
											}
										}
									}
								}
			this.remHover 	= 	function(that){
									var objNode = (typeof(this.nodeName)=='undefined') ? that : this ;
									var cmh = classBehaviour.classMouseHover;
									var fom = classBehaviour.tabStrip;
									// if no delay is required
									if(fom.delay==0){
										// emulate the parent node's mouseout event
										cmh.remHover(objNode);
										// change the stored active node to "active"
										if(fom.activeNode!=null){}
										// change the src of a child image
										imgNodes = objNode.getElementsByTagName('img');
										if(imgNodes.length>0) imgNodes[0].src = imgNodes[0].src.replace('_active','_link');
										// restore all select form elements
										allSelects = document.getElementsByTagName('SELECT');
										if(document.all){
											for(var a=0; a<allSelects.length; a++){
												allSelects[a].style.visibility = 'visible';
											}
										}
									}else{
										// cancel the timeout on the delayed mouseevents
										clearTimeout(fom.timeout);
										// store the mouseout for delayed closing
										fom.foldIns[fom.foldIns.length] = objNode;
										// order a delayed handling of the saved up mouseouts
										fom.timeout = setTimeout('classBehaviour.tabStrip.addHover()',fom.delay);
									}
								}
		}
		// add this function to the classbehaviour object
		classBehaviour.tabStrip = new TabStrip;
		classBehaviour.handlers[classBehaviour.handlers.length] = classBehaviour.tabStrip;
	
	// Open print dialog
		// define this class behaviour
		function OpenAsPrintable(){
			/* properties */
			this.name 		= 	'openAsPrintable';
			/* methods */
			this.start		=	function(node){
									node.onclick = this.process;
								}
			this.process 	= 	function(that){
									var objNode = (typeof(this.nodeName)=='undefined') ? that : this ;
									// if this link was clicked from a popup that isn't the print popup
										// hide the rest of the document
										// place the content left - top
									// If there is a demo popup
									if(false/*document.getElementById('tgtPopTitle')*/){
										// copy the title to the print popup title
										document.getElementById('tgtPopTitle').innerHTML = document.getElementById('content').getElementsByTagName('h1')[0].innerHTML;
										// copy the content tot the print popup content
										document.getElementById('tgtPopText').innerHTML = (document.getElementById('content').innerHTML.indexOf('</h1>')>-1) ? document.getElementById('content').innerHTML.split('</h1>')[1] : document.getElementById('content').innerHTML.split('</H1>')[1];
										// show the print popup
										classBehaviour.openLayerPopUp.show(document.getElementById('popup0'));
										// open the print dialog
										setTimeout("window.print();",2048);
									}else{
										window.print();
									}
									// cancel the click
									return false;
								}
		}
		// add this function to the classbehaviour object
		classBehaviour.openAsPrintable = new OpenAsPrintable;
		classBehaviour.handlers[classBehaviour.handlers.length] = classBehaviour.openAsPrintable;

	// Close the window (it's cold)
		// define this class behaviour
		function CloseThisWindow(){
			/* properties */
			this.name 		= 	'closeThisWindow';
			/* methods */
			this.start		=	function(node){
									node.onclick = this.process;
								}
			this.process 	= 	function(that){
									var objNode = (typeof(this.nodeName)=='undefined') ? that : this ;
									window.close();
								}
		}
		// add this function to the classbehaviour object
		classBehaviour.closeThisWindow = new CloseThisWindow;
		classBehaviour.handlers[classBehaviour.handlers.length] = classBehaviour.closeThisWindow;
		
	// add display='none'; on parse
		// define this class behaviour
		function HideThisNode(){
			/* properties */
			this.name 		= 	'hideThisNode';
			/* methods */
			this.start		=	function(node){
									node.style.display = 'none';
								}
		}
		// add this function to the classbehaviour object
		classBehaviour.hideThisNode = new HideThisNode;
		classBehaviour.handlers[classBehaviour.handlers.length] = classBehaviour.hideThisNode;
		
	// affirms the visibility status in regard to toggles
		// define this class behaviour
		function ShowThisNode(){
			/* properties */
			this.name 		= 	'showThisNode';
			/* methods */
			this.start		=	function(node){
									// apply the visible state
									node.style.display = classBehaviour.getVisibleState(node);
									// fill the "previous node" parameters of a related object
									classBehaviour.toggleNextNode.lastNode = node;
// TODO: untested test for childnodes
									// if this isn't the first node
									if(node.parentNode.childNodes[0] != node){
										// pick the previousnode
										objPreviousNode = (node.previousSibling.nodeName.indexOf("text")<0) ? node.previousSibling : node.previousSibling.previousSibling ;
										// store it as the 'previous' toggle
										if(objPreviousNode!=null) classBehaviour.toggleNextNode.lastNext = objPreviousNode;
									}
								}
		}
		// add this function to the classbehaviour object
		classBehaviour.showThisNode = new ShowThisNode;
		classBehaviour.handlers[classBehaviour.handlers.length] = classBehaviour.showThisNode;
		
	// replace in src sub-string
		// define this class behaviour
		function SrcMouseHover(){
			/* properties */
			this.name 			= 	'srcMouseHover';
			this.cache 			= new Array();
			/* methods */
			this.start			=	function(node){
										this.cacheImages(node);
										node.onmouseover = this.addHover;
										node.onmouseout = this.remHover;
									}
			this.cacheImages	 = 	function(that) {
										var objNode = (typeof(this.nodeName)=='undefined') ? that : this ;
										// replace link by hover
										var cacheIdx = this.cache.length;
										// hover version
										this.cache[cacheIdx] = new Image();
										this.cache[cacheIdx].src = objNode.src.replace('_link','_hover');
										// active version
										this.cache[cacheIdx+1] = new Image();
										this.cache[cacheIdx+1].src = objNode.src.replace('_link','_active');
									}
			/* events */
			this.addActive 	= 	function(that){
									var objNode = (typeof(this.nodeName)=='undefined') ? that : this ;
									// replace link by active
									objNode.src = objNode.src.replace('_link','_active');
									// replace hover by active
									objNode.src = objNode.src.replace('_hover','_active');
								}
			this.addHover 	= 	function(that){
									var objNode = (typeof(this.nodeName)=='undefined') ? that : this ;
									// replace link by hover
									objNode.src = objNode.src.replace('_link','_hover');
								}
			this.remHover 	= 	function(that){
									var objNode = (typeof(this.nodeName)=='undefined') ? that : this ;
									// replace link by hover
									objNode.src = objNode.src.replace('_hover','_link');
								}
		}
		// add this function to the classbehaviour object
		classBehaviour.srcMouseHover = new SrcMouseHover;
		classBehaviour.handlers[classBehaviour.handlers.length] = classBehaviour.srcMouseHover;
		
	// replace in class
		// define this class behaviour
		function ClassMouseHover(){
			/* properties */
			this.name 		= 	'classMouseHover';
			/* methods */
			this.start		=	function(node){
									node.onmouseover = this.addHover;
									node.onmouseout = this.remHover;
								}
			this.hasNoStateClass 	= 	function(objNode){
											return (objNode.className.indexOf('link')<0 && objNode.className.indexOf('hover')<0 && objNode.className.indexOf('active')<0);
										}
			/* events */
			this.addHover 	= 	function(that){
									var objNode = (typeof(this.nodeName)=='undefined') ? that : this ;
									var cmh = classBehaviour.classMouseHover;
									// replace link by hover
									objNode.className = (cmh.hasNoStateClass(objNode)) ? 'hover ' + objNode.className : objNode.className.replace('link','hover') ;
								}
			this.remHover 	= 	function(that){
									var objNode = (typeof(this.nodeName)=='undefined') ? that : this ;
									var cmh = classBehaviour.classMouseHover;
									// replace hover by link
									objNode.className = (cmh.hasNoStateClass(objNode)) ? 'link ' + objNode.className : objNode.className.replace('hover','link') ;
								}
			this.addActive 	= 	function(that){
									var objNode = (typeof(this.nodeName)=='undefined') ? that : this ;
									var cmh = classBehaviour.classMouseHover;
									// replace link by active
									objNode.className = objNode.className.replace('link','active') ;
									// replace hover by active
									objNode.className = objNode.className.replace('hover','active') ;
									// if there's still no active class
									if(cmh.hasNoStateClass(objNode)) objNode.className = 'active ' + objNode.className;
								}
		}
		// add this function to the classbehaviour object
		classBehaviour.classMouseHover = new ClassMouseHover;
		classBehaviour.handlers[classBehaviour.handlers.length] = classBehaviour.classMouseHover;
		
	// tabbed content
		// define this class behaviour
		function TabbedContent(){
			/* properties */
			this.name 		= 	'tabbedContent';
			/* methods */
			this.start		=	function(node){
									// get all tabs
									allTabs = node.getElementsByTagName('label');
									// store the most likely opened tab
									openedTab = allTabs[0];
									// for all tabs
									for(var a=0; a<allTabs.length; a++){
										// get the id this tab refers to
										tabId = allTabs[a].getAttributeNode('for').value;
										// apply onclick events to the referred tab
										allTabs[a].onclick = this.open;
										// apply the starting state of the tab if needed
										if(allTabs[a].parentNode.className.indexOf('closedTab')<0) allTabs[a].parentNode.className += ' closedTab';
										// apply the starting state of the referred content if needed
										if(document.getElementById(tabId).parentNode.className.indexOf('closedTab')<0) document.getElementById(tabId).parentNode.className += ' closedTab';
										// if this tab is referred to in the page url, remember it as active
										if(document.location.href.indexOf(allTabs[a].href)>-1) openedTab = allTabs[a];
										// if this tab was manualy set
										if(allTabs[a].parentNode.className.indexOf('openedTab')>-1) openedTab = allTabs[a];
									}
									// open the most like first tab
									this.open(openedTab);
								}
			/* events */
			this.open		=	function(that){
									var objNode = (typeof(this.nodeName)=='undefined') ? that : this ;
									var tbd = classBehaviour.tabbedContent;								
									// get all tabs
									allTabs = objNode.parentNode.parentNode.getElementsByTagName('label');
									pageNumber = 0;
									// reset all tabs
									for(var a=0; a<allTabs.length; a++){
										// mark the previous tab as passive
										allTabs[a].parentNode.className = allTabs[a].parentNode.className.replace('openedTab', 'closedTab');
										// hide the previous tabbed content
										tabId = allTabs[a].getAttributeNode('for').value;
										document.getElementById(tabId).parentNode.className = document.getElementById(tabId).parentNode.className.replace('openedTab', 'closedTab');
									}
									// mark the next tab as active
									objNode.parentNode.className = objNode.parentNode.className.replace('closedTab', 'openedTab');
									// show the next tabbed content
									tabId = objNode.getAttributeNode('for').value;
									document.getElementById(tabId).parentNode.className = document.getElementById(tabId).parentNode.className.replace('closedTab', 'openedTab');
									// cancel the jump to the anchor
									return false;
								}
		}
		// add this function to the classbehaviour object
		classBehaviour.tabbedContent = new TabbedContent;
		classBehaviour.handlers[classBehaviour.handlers.length] = classBehaviour.tabbedContent;
		
		
	// tabbed content
		// define this class behaviour
		function AnimatedOfficeHours(){
			/* properties */
			this.name 		= 	'animatedOfficeHours';
			this.delay		=	null;
			this.interval	=	null;
			/* methods */
			this.start		=	function(node){
									// get the interval
									this.delay = parseInt(classBehaviour.getClassParameter(node, 'interval', '3000'));
									// initial state
									this.cycle(node);
									// start the display cycle
									this.interval = setInterval("classBehaviour.animatedOfficeHours.cycle(document.getElementById('" + node.id + "'))", this.delay);
								}
			/* events */
			this.cycle		=	function(that){
									var objNode = (typeof(this.nodeName)=='undefined') ? that : this ;
									var aoh = classBehaviour.animatedOfficeHours;								
									// get all the cycled elements in the container
									var allCycled = objNode.getElementsByTagName('span');
									var index = 0;
									// for all elements
									for(var a=0; a<allCycled.length; a++){
										// set the element's id if it hasn't got one
										if(!allCycled[a].id){allCycled[a].id = 'cycled' + a;}
										// if the element is visible, note it's index
										index = (allCycled[a].style.display=='inline') ? a : index ;
									}
									// determine the next element
									var nextIndex = (index+1 == allCycled.length) ? 0 : index+1 ;
									// fade the elements
									allCycled[nextIndex].style.display = 'inline';
									allCycled0.style.display = 'none';
								}
		}
		// add this function to the classbehaviour object
		classBehaviour.animatedOfficeHours = new AnimatedOfficeHours;
		classBehaviour.handlers[classBehaviour.handlers.length] = classBehaviour.animatedOfficeHours;
		
	// start the parsing of classes
	classBehaviour.parseDocument();
