

// getElementById
function getEl(el){
  return document.getElementById(el);
};


// browser sniffer
function Browser(){
  this.iE = navigator.appName.toLowerCase().indexOf('microsoft') != -1 ? 1 : 0;
  this.mac =  navigator.userAgent.toLowerCase().indexOf('mac') != -1 ? 1 : 0;
  this.win = navigator.userAgent.toLowerCase().indexOf('windows') != -1 ? 1 : 0;
  this.safari =  navigator.userAgent.toLowerCase().indexOf('safari') != -1 ? 1 : 0;
  this.opera =  navigator.userAgent.toLowerCase().indexOf('opera') != -1 ? 1 : 0;    
  this.mozilla = navigator.appName.toLowerCase().indexOf('netscape') != -1 && !this.safari ? 1 : 0;
  this.winMozilla = this.mozilla && this.win ? 1 : 0;
  this.winIE = this.iE && this.win && !this.opera ? 1 : 0;
  this.macIE = this.iE && this.mac ? 1 : 0;
};
var browser = new Browser();


// thanx Laurens (laurens@vd.oever.nl)
Function.prototype.closure = function(obj){
  if (!window.__objs){
    window.__objs = [];
    window.__funs = [];
  }
  var fun = this;
  var objId = obj.__objId;
  if (!objId)
    __objs[objId = obj.__objId = __objs.length] = obj;
  var funId = fun.__funId;
  if (!funId)
    __funs[funId = fun.__funId = __funs.length] = fun;
  if (!obj.__closures)
    obj.__closures = [];
  var closure = obj.__closures[funId];
  if (closure)
    return closure;
  obj = null;
  fun = null;
  return __objs[objId].__closures[funId] = function (){
    return __funs[funId].apply(__objs[objId], arguments);
  };
};


// add event
function addEvent(obj, evType, fn, useCapture){
  if (obj.addEventListener){
    obj.addEventListener(evType, fn, useCapture);
    return true;
  }
  else if (obj.attachEvent){
    var r = obj.attachEvent("on"+evType, function() { fn.apply(obj); });
    return r;
  }
  else {
    alert("Handler could not be attached");
    return null;
  }
};


// event on part of element
function eventOnPartOfElement(e,element,to){
  var t;
  if (window.event){
    t = to ? window.event.toElement : window.event.srcElement;
  }
  else if (e){
    t = to ? e.relatedTarget : e.target;
  } 
  else {
    return false;
  }
  if (t == null){
    return false;
  }
  while (t.tagName != 'BODY'){
    if (t == element){
      return true;
    }
    t = t.parentNode;
  }
  return false;
};


// setInlineStyle 
function setInlineStyle(el,cssText){
  if (!cssText){
    return;
  }
  var elStyle = el.getAttribute('style');
  if (elStyle){
    elStyle.setAttribute('cssText',cssText);
  }
  else {
    el.setAttribute('style',cssText);
  }
};


// setClassName
function setClassName(el,className){
  if (!className){
    return;
  }
  if (el.getAttribute('className') != null){
    el.setAttribute('className',className);
  }
  else {
    el.setAttribute('class',className);
  }
};


// getClassName
function getClassName(el){
  var cN;
  if (el.getAttribute('className') != null){
    cN = el.getAttribute('className');
  }
  else {
    cN = el.getAttribute('class');
  }
  return cN ? cN : '';
};


// get src Element
function getTarget(e,to){
  if (window.event){
    var t = to ? window.event.toElement : window.event.srcElement;
  }
  else if (e){
    var t = to ? e.relatedTarget : e.target;
  }
  if (t == null){
    window.body;
  }  
  return t;
};


// getElementsFromSelector
function getElementsFromSelector(selector,pN){
  var els = [];
  var iterator = 0;
  var pNs = pN;
  if (!pNs){
    pNs = Array(document);
  }
  var selectorArr = selector.split(' ');
  var cN = false;
  var currSelector = selectorArr[0];
  if (currSelector.indexOf('#') != -1){
    var elFromId  = document.getElementById(currSelector.split('#')[1]);
    if (!elFromId){
      return els;
    }
    els[0] = elFromId;
  }
  else {
    if (currSelector.indexOf('.') != -1){
      var currSelectorArr = currSelector.split('.');
      currSelector = currSelectorArr[0];
      cN = currSelectorArr[1];
    }
    for (var i = 0; i < pNs.length; i++){
      var elsFromTN = pNs[i].getElementsByTagName(currSelector);
      for (var j = 0; j < elsFromTN.length; j++){
        if (cN && elsFromTN[j].className.indexOf(cN)== -1){
          continue;
        }
        els[iterator] = elsFromTN[j];
        iterator++;
      }
    }
    if (iterator == 0){
      return [];
    }        
  }

  if (selectorArr.length == 1){
    return els;
  }
  var s = '';
  var space = '';
  for (var i = 1; i < selectorArr.length; i++){
    s += space + selectorArr[i];
    space = ' ';
  }
  return getElementsFromSelector(s,els);
};


// addStyle
function addStyle(selector,properties){
  if (document.styleSheets) {
    var s = document.getElementsByTagName('STYLE');
    if (s.length == 0){
      var sheet = document.createElement('style');
      sheet.setAttribute('type','text/css');
      document.getElementsByTagName('HEAD')[0].appendChild(sheet);
    }
    if (browser.winIE){
      var lastSheet = document.styleSheets[document.styleSheets.length - 1];
      lastSheet.addRule(selector, properties);
    }
    else {
      var lastSheet = s[0];
      lastSheet.appendChild(document.createTextNode(selector + ' { ' + properties + ' }'));
    }
  }
};


//power animator dev 1.2, mDI, march 2006, adds partial clipping
animTimer = [];
animate = function (oArg){
  clearTimeout(animTimer[oArg.timerName]);
  var cD,cS,pS,pD
  cD = !oArg.currDist ? 0 : oArg.currDist;
  cS = !oArg.currSpeed ? 0 : oArg.currSpeed;
  cS = !oArg.currSpeed && !oArg.easeIn ? oArg.speed : cS;
  pS = !oArg.peakSpeed ? oArg.speed : oArg.peakSpeed;
  if (oArg.peakDist){
    pD = oArg.peakDist;
  }
  else { 
    pD = oArg.easeIn && oArg.easeOut ? parseInt((oArg.dist)/(oArg.easeIn+oArg.easeOut)*oArg.easeIn) : 0;
  }
  if (cD >= pD && oArg.easeOut){
    cS = parseInt(((oArg.dist-cD)+((oArg.speed-cS)/5))/(oArg.easeOut+0.5)+1);
    if (cS > pS){
      cS = pS;
    }
  }
  else if (oArg.easeIn){
    cS = parseInt((cD+((oArg.speed-cS)/5))/(oArg.easeIn-0.5)+1);
    if (cS > oArg.speed){
      cS = oArg.speed;
    }
  }
  if (cD+cS > oArg.dist){
    cS = oArg.dist-cD;
  }
  //status = cS;
  cD += cS;
  for (var i in oArg.elements){
    var o = oArg.elements[i];
    var currPosition = o.negMove ? o.startPos-cD : o.startPos+cD;
    if (o.style == 'clip'){
      if (o.clipType == 'vertFromCenter'){
        var d = 'rect(' + (o.maxHeight - currPosition) + 'px, ' + o.clipRight + 'px, ' + currPosition + 'px, 0)' ;
        getEl(o.id).style[o.style] = d;
      }
    }
    else {
      getEl(o.id).style[o.style] = currPosition + 'px';
    }
  }
  if (cD < oArg.dist){
    oArg.currDist = cD;
    oArg.currSpeed = cS;
    oArg.peakDist = pD;
    oArg.peakSpeed = pS;
    animTimer[oArg.timerName] = setTimeout(function(){animate(oArg)},40);
    return;
  }
  if (oArg.afterFunc != ''){
    if (!oArg.obj){
      oArg.obj = 'window';
    }    
    animTimer[oArg.timerName] = setTimeout(oArg.obj + '.' + oArg.afterFunc,0);
  }	
};


//handy trace
function trace(str){
  var el = getEl('trace');
  if (!el){
    return;
  }
  el.value = str;
};

/*************************
flash adapted for this project, see wiki for last version, mdi 1.1
*************************/


// check if the proper version is installed
function hasMinFlashVersion(versionNumber){
  if (browser.winIE){
    try{
    	var flash = new ActiveXObject("ShockwaveFlash.ShockwaveFlash." + versionNumber);
    	return 1;
    }
    catch(e){
    	return 0;
    }
  }
  else {
    if(navigator.plugins.length){
    	for (var i=0; i < navigator.plugins.length; i++){
    		var pluginIdent = navigator.plugins[i].description.split(" ");
    		if(pluginIdent[0] == "Shockwave" && pluginIdent[1] == "Flash"){
    			var versionArray = pluginIdent[2].split(".");
    			return versionArray[0] >= versionNumber;
    		}
    	} 	
    }
  }
  return 0;
};

// Class FlashObject
flashObjects = [];
function FlashObject(oArg){

  this.id = oArg.id;
  this.parentId = oArg.parentId;      
  this.uri = oArg.uri;
  this.width = oArg.width ? 'width:' + oArg.width + 'px;' : '';
  this.height = oArg.height ? 'height:' + oArg.height + 'px;' : '';
  this.hasRequiredVersion = hasMinFlashVersion(oArg.requiredVersion);
  this.className = oArg.className ? oArg.className : '';
  this.params = oArg.params;
  this.noFocus = oArg.noFocus;
  if (this.hasRequiredVersion){
    addStyle('#' + oArg.parentId + ' .alternate-content','display:none !important;');
  }
  
  // create the object
  this.create = function(){
    if ((!this.hasRequiredVersion) || (!getEl(this.parentId))){
      return;
    }
    var obj = document.createElement('object');
    obj.type = 'application/x-shockwave-flash';
    if (this.id){
      obj.setAttribute('id',this.id);
    }
    obj.setAttribute('data',this.uri);
    obj.setAttribute('src',this.uri);
    setInlineStyle(obj,'display:block;' + this.width + this.height);
    if (this.noFocus){
      obj.setAttribute('tabIndex',-1);
    }
    setClassName(obj,this.className);
    for (var i in this.params){
      var param = document.createElement('param');
      param.setAttribute('name',i);
      param.setAttribute('value',this.params[i]);
      obj.appendChild(param);
      obj[i] = this.params[i];
    };
    var title = document.title;
    getEl(this.parentId).appendChild(obj);
    document.title = title;
    
    try {
      obj.loadMovie(0,this.uri);
    }
    catch (e){
    }
  }
  
};

// make a flash object
function createFlashObject(oArg){
  flashObjects[flashObjects.length] = new FlashObject(oArg);
};

// create all the flash objects (onload)
function createFlashObjects(){
  for (var i in flashObjects){
    flashObjects[i].create();
  }
};



/*************************
flash header, mdi 1.3.4
*************************/


//height of calibrated header

var hGTempObjects = [];
var swfHeader = [];
var hGMinVersion;

function hGStart(){
  hGMinVersion = hasMinFlashVersion(6);
	if ((!hGMinVersion) || browser.macIE){
    return;
  }
  for (var i in swfHeader){
    addStyle(swfHeader[i].cssSelector,'visibility:hidden;');
  }
};

function SwfHeader(oArg){
  this.swfFont = oArg.swfFont;
  this.cssSelector = oArg.cssSelector;
  this.size = oArg.size ? oArg.size : '';
  this.align = oArg.align ? oArg.align : 'left';
  this.color = oArg.color ? '0x' + oArg.color : '';
  this.bGColor = oArg.bGColor ? '0x' + oArg.bGColor : '';
  this.hoverColor = oArg.hoverColor ? '0x' + oArg.hoverColor : '';
  this.hoverBGColor = oArg.hoverBGColor ? '0x' + oArg.hoverBGColor : '';
  this.paddingTop = oArg.paddingTop ? oArg.paddingTop : 0;
  this.paddingRight = oArg.paddingRight ? oArg.paddingRight : 0;
  this.paddingBottom = oArg.paddingBottom ? oArg.paddingBottom : 0;
  this.paddingLeft = oArg.paddingLeft ? oArg.paddingLeft : 0;
  this.menuHover = oArg.menuHover;
  this.capitalize = oArg.capitalize;
  this.getList = function(){
    return getElementsFromSelector(this.cssSelector);
  }
};

function addSwfHeader(oArg){
  swfHeader[swfHeader.length] = new SwfHeader(oArg);
};

function hGGenerateId(){
  return 'hG' + Math.round(Math.random() * 1000000);
};

function hGResize(){
  if (hGOldCalSize != getEl(hGCalId).offsetHeight){
    location.href = location.href;
  }
};

var hGOldCalSize;
function hGLoader(){
	var cHS = getEl(hGCalId);
	if (cHS){
		  hGOldCalSize = cHS.offsetHeight;
		  addEvent(window,'resize',hGResize);
	}
	var fontScale = cHS ? cHS.offsetHeight / hGCalHeight : 1;
	for (var i in swfHeader){
		var o = swfHeader[i];
		var list =  o.getList();
		for (var j = 0; j < list.length; j++){
			var el = list[j];
      if (el.getAttribute('hGSet')){
        continue;
      }
      el.style.visibility = 'visible';
			var text = o.capitalize ? el.innerHTML.toUpperCase() : el.innerHTML;
      text = URLEncode(text);
			var id = hGGenerateId();
      
      var hLinkEl = el.getElementsByTagName('A')[0];
      hLink = hLinkEl ? URLEncode(hLinkEl.href) : '';
      
      var oldHeader = document.createElement('DIV');
      oldHeader.innerHTML = el.innerHTML;
      el.innerHTML = '';
      el.appendChild(oldHeader);
      var width = oldHeader.offsetWidth;
			var height = oldHeader.offsetHeight;
      var parentId = el.getAttribute(parentId);
      if (!parentId){
        parentId = id + '_parent';
        el.setAttribute('id',parentId);     
      }
      el.setAttribute('hGSet',true);    
      setClassName(oldHeader,'printHeader');
      //el.removeChild(oldHeader);
      
		  var swfURL = hGPath + 
        '?swfFont=' + o.swfFont + 
        '&hText=' + text + 
        '&hSize=' + parseInt(o.size * fontScale,10)  + 
        '&hWidth=' + width + 
        '&hAlign=' + o.align +    
        '&hLink=' + hLink +     
        '&hPaddingTop=' + o.paddingTop + 
        '&hPaddingRight=' + o.paddingRight + 
        '&hPaddingBottom=' + o.paddingBottom + 
        '&hPaddingLeft=' + o.paddingLeft + 
        '&winIE=' + browser.winIE ;

      var colorSet = 
        '&hColor=' + o.color + 
        '&hBGColor=' + o.bGColor;
        
      if (!o.menuHover){
        colorSet +=         
        '&hHoverColor=' + o.hoverColor + 
        '&hHoverBGColor=' + o.hoverBGColor;
      }
        
		  var params = {'scale':'noscale','salign':'lt','wmode':'transparent'};

      var wTN = o.tagName == 'div' ? 'SPAN' : 'DIV'; //wrapperTagName
      if (hLinkEl){
        wTN = 'A';
      }
      var wrapper = document.createElement(wTN);
      var parentId = id + '_wrapper';
      wrapper.setAttribute('id',parentId);
      if (hLinkEl){
        wrapper.href = hLinkEl.href;
      }
      el.appendChild(wrapper);
        
      hGAddFlash(o,'flashHeader',hLinkEl,id,parentId,swfURL + colorSet,params,hGMinVersion,width,height);
      
      if (o.menuHover){
        colorSet = 
        '&hColor=' + o.hoverColor + 
        '&hBGColor=' + o.hoverBGColor +         
        '&hHoverColor=' + o.hoverColor + 
        '&hHoverBGColor=' + o.hoverBGColor;
		    hGAddFlash(o,'flashHeaderHover',hLinkEl,id + '_MH',parentId,swfURL + colorSet,params,hGMinVersion,width,height);
      }
	 }
	}
	if (browser.winIE) {
		setTimeout('hGShowAll()',10);
	}
};

function hGAddFlash(o,className,hLinkEl,id,parentId,swfURL,params,hGMinVersion,width,height){
  hGTempObjects[id] = o;
	var fO = new FlashObject({
    id:id,
    parentId:parentId,
    uri:(swfURL + '&hId=' + id),
    params:params,
    requiredVersion:7,
    className:className,
    width:width,
    height:height,
    noFocus:true
  });
  fO.create();
};

// win ie try and catch routine
function hGShowAll(){
	for (var i in hGTempObjects){
		hGTry(i,0);
	}
}

function hGTry(i,numTrys){
	var h = getEl(i);
	if (h){
		try {
			hGShow(i,h.GetVariable('headerHeight'));
		} 
    catch (e) {
			numTrys++;
			if (numTrys < 20){
				setTimeout('hGTry(\''+i+'\',' + numTrys + ')',200);
			}
		}
	}
}

function hGShow(_id,_height){
	var o = hGTempObjects[_id];
	var el = getEl(_id);
  el.style.height = _height +'px';
  el.style.visibility = 'visible';
}

function URLEncode(inp){
	// The Javascript escape and unescape functions do not correspond
	// with what browsers actually do...
	var SAFECHARS = "0123456789" +					// Numeric
					"ABCDEFGHIJKLMNOPQRSTUVWXYZ" +	// Alphabetic
					"abcdefghijklmnopqrstuvwxyz" + 	//"éëèêáäãâöõóôüúùûïíìîÉËÈÊÁÄÃÂÖÕÓÔÜÚÙÛÏÍÌÎ" +
					"-_.!~*'()";					// RFC2396 Mark characters
	var HEX = "0123456789ABCDEF";
	var SAFECHARCODES = "|233|235|232|234|225|228|227|226|246|245|243|244|252|250|249|251|239|237|236|238|201|203|200|202|193|196|195|194|214|213|211|212|220|218|217|219|207|205|204|206";
	var plaintext = inp;
	var encoded = "";
	for (var i = 0; i < plaintext.length; i++ ) {
		var ch = plaintext.charAt(i);
	    if (ch == " ") {
		    encoded += "+";				// x-www-urlencoded, rather than %20
		}
		else if (SAFECHARS.indexOf(ch) != -1) {
		    encoded += ch;
		}
		else {
		    var charCode = ch.charCodeAt(0);
			if (SAFECHARCODES.indexOf('|'+charCode+'|') != -1){
				encoded += ch;
			}
			else if (charCode > 255) {
				encoded += "+";
			}
			else {
				encoded += "%";
				encoded += HEX.charAt((charCode >> 4) & 0xF);
				encoded += HEX.charAt(charCode & 0xF);
			}
		}
	}
	return encoded;
};



/************* end flash header *****************/


// set external links
var setExternalLinks = function(){
  var localDomain = (location.href.split('/')[2]);
  var exceptionDomain = "www.beeldengeluid.nl";
  var exceptionDomain2 = "portal.beeldengeluid.nl";
    
    var localExtensionsInNewWindow = Array('doc','xls','pdf');

    var list = document.getElementsByTagName('A');
    for (var i = 0; i < list.length; i++){
      var aEl = list[i];
      var aElHref = aEl.href;
 
      // check for extensions
      var extension = (aElHref.substring(aElHref.length - 4,aElHref.length)).toLowerCase();
      var foundExtension = false;
      for (var j = 0; j < localExtensionsInNewWindow.length; j++){
        if (extension == '.' + localExtensionsInNewWindow[j]){
          foundExtension = true;
          break;
        }
      }
      


      // open in new window if conditions are right
      if ((aElHref.split('/')[2] != localDomain && aElHref.indexOf(exceptionDomain) == -1&& aElHref.indexOf(exceptionDomain2) == -1 && aElHref.indexOf('mailto:') == -1 && aElHref.indexOf('javascript:') == -1) || foundExtension){
        aEl.onclick = function(){
        window.open(this.href);
        return false;
      }
    }
  }
};

 
/* Class mediaContainer */  
mediaContainers = [];
function MediaContainer(oArg){

  this.closing = false;
  this.opening = false;
  this.state = oArg.state;
  this.subject = oArg.subject;
  this.menu = oArg.menu;
  this.uri = oArg.uri;
  this.flashId = oArg.flashId;
  this.flashParentId = oArg.flashParentId;
  this.contentId = oArg.contentId;
  this.contentParentId = oArg.contentParentId;
  this.animation = oArg.animation;
  this.FlashVars = oArg.FlashVars;
  mediaContainers[this.flashId] = this;
  
  createFlashObject({
    id:this.flashId,
    parentId:this.flashParentId,
    uri:this.uri + '?subject=' + this.subject + '&togglemode=' + this.state + '&menupath=' + this.menu.path + '&currentnodeid=' + this.menu.nodeId + '&colorscheme=' + this.menu.colorScheme,
    params:{'scale':'noscale','salign':'lt','wmode':'transparent','FlashVars':this.FlashVars},
    className:'flashObject',
    requiredVersion:8
  });
	
  
	
  menu = new Menu({menuId:this.flashId});
  if (this.state == 'expanded'){
    addStyle('#'+this.contentParentId,'visibility:hidden;');
  }
  
  this.setup = function(){
    this.flashEl = getEl(this.flashId);
    if (!this.flashEl){
      return;
    }
    this.contentEl = getEl(this.contentId);
    if (this.state == 'expanded'){
      getEl(this.contentParentId).style.visibility = 'visible';
      this.contentEl.style.marginTop = (-this.contentEl.offsetHeight  + 303) + 'px';
      this.showHideSelects(false);
      this.onExpanded();
    }
    menu.setup();
  };
  
  this.delayedSetup = function(){
    getEl('nav-footer').parentNode.appendChild(getEl('nav-footer'));
  };
  
  this.getState = function(){
    return this.state;
  };
  
  this.setState = function(state){
    this.state = state;
  };
  
  this.onCollapsed = function(){
    this.setState('collapsed');
    this.closing = false;
    this.showHideSelects(true);
  };
  
  this.onExpanded = function(){
    this.setState('expanded');
    this.opening = false;
    //this.contentEl.style.visibility = 'hidden';
  };
  
  this.expand = function(){
    if (this.opening || this.getState() == 'expanded'){
      return;
    }
    this.opening = true;
    this.closing = false;
    this.setState('busy');
    this.showHideSelects(false);
    var currentHeight = this.flashEl.offsetHeight;
    animate({
      timerName:this.flashId,
      elements:Array(
        {id:this.flashId,style:'height',startPos:currentHeight,negMove:false},
        {id:this.contentId,style:'marginTop',startPos:-this.contentEl.offsetHeight + 599 + this.contentEl.offsetTop,negMove:true}
      ),
      dist:571 - currentHeight,
      speed:70,
      easeIn:5,
      easeOut:12,
      afterFunc:'mediaContainer.onExpanded()'
    });
  };
  
  this.collapse = function(){
    if (this.closing || this.getState() == 'collapsed'){
      return;
    }
    this.closing = true;
    this.opening = false;
    this.setState('busy');
    //this.contentEl.style.visibility = 'visible';
    var currentHeight = this.flashEl.offsetHeight;
    animate({
      timerName:this.flashId,
      elements:Array(
       {id:this.flashId,style:'height',startPos:currentHeight,negMove:true},
       {id:this.contentId,style:'marginTop',startPos:(this.contentEl.offsetHeight + this.contentEl.offsetTop - 599),negMove:false}
      ),
      dist:currentHeight - 275,
      speed:70,
      easeIn:5,
      easeOut:12,
      afterFunc:'mediaContainer.onCollapsed()'
    });
  };
  
  this.showHideSelects = function(show){
    var list = document.getElementsByTagName('select');
    for (var i = 0; i < list.length; i++){
      list[i].style.visibility = show ? 'visible' : 'hidden';
    }
  };
  
};


// Class Menu
function Menu(oArg){
  this.collapsed = true;
  this.menuId = oArg.menuId;
  
  this.setup = function(){
    window.document.body.setAttribute('menuId',this.menuId);
    addEvent(window.document.body,'mouseout',this.onMousemove);
    this.menuEl = getEl(this.menuId);
  };
  
  this.onMousemove = function(e){
    var overId = getTarget(e).getAttribute('id');
    var menuId = this.getAttribute('menuId');
    if(overId == menuId){
      getEl(menuId).collapseMenu();
    }
  };
    
  this.expand = function(height){
    var mediaState = mediaContainer.getState();
    if (mediaState == 'busy'){
      return false;
    };
    if (mediaState != 'expanded'){
      this.menuEl.style.height = (182 + height) + 'px';
    };
  };
  
  this.collapse = function(){
    this.menuEl.style.height = 275 + 'px';
  };
  
};




// generic expanding elements
function Expander(n) {
  if (!n) return;
  var that = this;
  this.element = n;
  this.container = n.parentNode;
  this.expanded = true;
  
  var node = document.createElement("a");
  node.href = "#";
  node.onclick = function() {
    that.trigger();
    return false;
  };
  while (n.hasChildNodes()) {
    node.appendChild(n.firstChild);
  }
  n.appendChild(node);
  
  this.trigger = function() {
    if (that.expanded) that.collapse();
    else that.expand();
  };
  this.expand = function() {
    that.container.className = "expander";
    that.container.style.height = "";
    that.expanded = true;
  };
  this.collapse = function() {
    that.container.className = "expander collapsed";
    that.container.style.height = that.element.offsetHeight + "px";
    that.expanded = false;
  };
  this.collapse();
}
Expander.instances = [];
Expander.setup = function() {
  var nl = document.getElementsByTagName("div");
  for (var i = 0, l = nl.length; i < l; i++) {
    if (nl[i].className.indexOf("expander-trigger") > -1)
      Expander.instances.push(new Expander(nl[i]));
  }
};


/* media player , mdi, aug 2006 */


/* get and set cookies */
function setCookie(cookieName,cookieValue,nDays) {
  var today = new Date();
  var expire = new Date();
  if (nDays==null || nDays==0) nDays=1;
  expire.setTime(today.getTime() + 3600000*24*nDays);
  document.cookie = cookieName+"="+escape(cookieValue)
                 + ";expires="+expire.toGMTString()+";path=/";
};

function getCookie(c_name){
  if (document.cookie.length>0){
    c_start=document.cookie.indexOf(c_name + "=")
    if (c_start!=-1){ 
      c_start=c_start + c_name.length+1 
      c_end=document.cookie.indexOf(";",c_start)
      if (c_end==-1) c_end=document.cookie.length
        return unescape(document.cookie.substring(c_start,c_end));
      } 
    }
  return null;
};

// check if the proper media player version is installed
function hasWMPPlugin(){
  // windows ie
	if (window.ActiveXObject){
		try{
			var obj = new ActiveXObject("WMPlayer.OCX");
      obj = null;
      return 1;
		}
		catch(e){
			return 0;
		}
	}
  //other
	else if(navigator.plugins.length){
  	for (var i = 0; i < navigator.plugins.length; i++){
      if (navigator.plugins[i].name.toLowerCase().indexOf('windows media') != -1){
        return 1;
      }
  	} 	
  }
	return 0;
};

//embedded media Class
var embeddedMedias = [];
function EmbeddedMedia(oArg){

  // instance variables
  this.id = oArg.id;
  embeddedMedias[this.id] = this;
  this.uriHighRes = oArg.uriHighRes;
  this.uriLowRes = oArg.uriLowRes;
  this.resUserPref = getCookie('embeddedMediaResUserPref');
  if (!this.uriLowRes){
    this.resPlaying = this.uriHighRes;
  }
  else if (!this.uriHighRes){
    this.resPlaying = this.uriLowRes;
  }
  else if(this.resUserPref == 'lowRes'){
    //remember the state from cookie
    this.resPlaying = this.uriLowRes;
  }
  else {
    //default
    this.resPlaying = this.uriHighRes;
  }
  this.mediaType = oArg.mediaType;
  this.mimeType = 'application/x-mplayer2';
  this.className = this.mediaType == 'wmv' ? 'embedded-video' : 'embedded-audio';
  this.hasWMPPlugin = hasWMPPlugin();
  if (browser.mac && this.mediaType == 'mp3'){
    this.mimeType = 'audio/x-mp3';
    this.hasWMPPlugin = true;
  }
  
  //hide and show content
  if (this.hasWMPPlugin){
    addStyle('#' + this.id + '-container .alternate-content','display:none !important;');
    addStyle('#' + this.id + '-button-bar','display:block !important;');
    if ((this.mediaType == 'wmv' && (!browser.winIE)) || this.mediaType != 'wmv'){
      addStyle('#' + this.id + '-button-fullscreen-container','display:none !important;');
    }    
    if (!this.uriLowRes){
      addStyle('#' + this.id + '-button-lowres-container','display:none !important;');
    }
    if (!this.uriHighRes){
      addStyle('#' + this.id + '-button-highres-container','display:none !important;');
    }
  }
  
  // set it up (window onload)
  this.setup = function(){
  
    // embed the player
    if (!this.hasWMPPlugin || !getEl(this.id + '-container')){
      return;
    }
    this.embedPlayer();
    
    //assign the custom controls
    
    //only assign fullscreen method if windows ie
    if (this.mediaType == 'wmv' && browser.winIE){
      var buttonFS = getEl(this.id + '-button-fullscreen');
      if (buttonFS){
        buttonFS.setAttribute('embeddedMediaId',this.id);
        addEvent(buttonFS,'click',
          function(){
            embeddedMedias[this.getAttribute('embeddedMediaId')].playFullScreen();
          }
        )
      }
    }
    
    var buttonLowRes = getEl(this.id + '-button-lowres');
    var buttonHighRes = getEl(this.id + '-button-highres');
    
    //set the selected state
    var selButton = this.resPlaying == this.uriHighRes ? buttonHighRes : buttonLowRes;
    if (selButton){
      selButton.click();
    }
    
    //only assign methods if both resolutions exist     
    if (this.uriHighRes && this.uriLowRes){
      if (buttonLowRes){
        buttonLowRes.setAttribute('embeddedMediaId',this.id);
          addEvent(buttonLowRes,'click',
            function(){
              embeddedMedias[this.getAttribute('embeddedMediaId')].playRes('lowRes',this);
            }
          )
      }
      if (buttonHighRes){
        buttonHighRes.setAttribute('embeddedMediaId',this.id);
          addEvent(buttonHighRes,'click',
            function(){
              embeddedMedias[this.getAttribute('embeddedMediaId')].playRes('highRes',this);
            }
          )
      }
    }
    
  };
  
  //do all the checks and implement the player
  this.embedPlayer = function(){
    var container = getEl(this.id + '-container');
    var w = '';
    if (browser.mac){
      w += '<embed type="' + this.mimeType +'" src="' + this.resPlaying +'" id="' + this.id +'" class="' + this.className +'" autostart="1"></embed>';
    }
    else {
      var wData = ' data="' + this.resPlaying +'"';
      var wClassid = '';
      if (browser.winIE){
        wData = '';
        wClassid = ' classid="CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6"'; // 7 and up
        //wClassid = ' classid="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95"'; // < 7
      }
      w += '<object type="' + this.mimeType +'" id="' + this.id +'" class="' + this.className +'"' + wData + wClassid + '>';
      w += '<param name="URL" value="' + this.resPlaying + '">';
      w += '<param name="Showcontrols" value="True">';
      w += '<param name="autoStart" value="True">';
      w += '<param name="autoSize" value="False">';
      w += '<param name="uiMode" value="full">';
      w += '<param name="fullScreen" value="False">';
      w += '</object>';
    }
    container.innerHTML = w;
  };
  
  this.playFullScreen = function(){
    var player = getEl(this.id);
    if (player.playState==3){ // gives error if not playing, 3 = playing
      player.setAttribute('fullScreen', 'true');
    }
    else {
      alert('Het video-bestand kan alleen op het volledige scherm \nworden getoond indien deze afspeelt.')
    }
  };
  
  this.playRes = function(res,obj){
    setCookie('embeddedMediaResUserPref',res);
    this.resPlaying = res == 'highRes' ? this.uriHighRes : this.uriLowRes;
    this.embedPlayer();
  };
  
};


/* tabs in mediaplayer */

//setup styles for javascript tabbed navigation (drempelsvrij)

addStyle('div.mediaplayer #tabs-container','display:block;background-position:0 0;');
addStyle('div.mediaplayer .tab-container','background:none; !important;position:absolute;');
addStyle('div.mediaplayer #content #content-right .content-item','display:none;background:none;');
addStyle('div.mediaplayer div.tab','display:block;');

//set the tabs
function mediaplayerSetTab(id){
  var el = getEl(id);
  if (!el){
    return;
  }
  var list = el.parentNode.childNodes;
  for (var i = 0; i < list.length; i++){
    if ((!list[i].tagName) || list[i].tagName != 'DIV'){
      continue;
    }
    if (list[i] == el){
      list[i].className = 'tab-container tab-selected';
      continue;
    }
    list[i].className = 'tab-container';
  }
};

/* end tabs in mediaplayer */


/* end media player */




// Dom Loader
var domLoader = function(){
  if (arguments.callee.done){
    return;
  }
  if (!document.body){
    return;
  }
  arguments.callee.done = true;
  domOnload();
};

// setup Dom Loader
function setupDomLoader(){
  if (document.addEventListener) {
    document.addEventListener("DOMContentLoaded", domLoader, null);
  }
  if (browser.winIE){
    //het is bahh maar it works like a charm
    document.write('<script type="text/javascript" defer="defer" src="_scripts/ie_onload.js"><\/script>');
  }
  window.onload = domLoader;
};

setupDomLoader();




/*init*/

// init flash headers

var hGCalHeight = 27;
var hGCalId = 'nav-generic';
var hGPath = '_swf/hg.swf';

//specials

//education
addSwfHeader({swfFont:'_swf/akzidenzCondensedBold.swf',capitalize:true,cssSelector:'h1',size:35,color:'494949',bGColor:'E7E7E7',paddingLeft:-2});
addSwfHeader({swfFont:'_swf/akzidenzCondensedReg.swf',cssSelector:'div#subnavigation h2',size:20,color:'424242',bGColor:'E7E7E7',paddingLeft:-2,paddingBottom:-3});
addSwfHeader({swfFont:'_swf/akzidenzCondensedBold.swf',capitalize:true,cssSelector:'h2',size:35,color:'494949',bGColor:'E7E7E7',paddingLeft:-2});
hGStart();


// init flash Media
if (window.hasFlashMedia){
  var mediaContainer = new MediaContainer({
    state:window.mediaState ? window.mediaState : 'expanded',
    subject:window.mediaSubject,
    menu: {
      colorScheme:window.menuColorScheme,
      nodeId:window.menuNodeId,
      path:escape(window.menuPath)
    },
    FlashVars:window.FlashVars,
    uri:'_swf/flashcontroller.swf',
    flashId:'flashMedia',
    flashParentId:'flash-controller-container',
    contentId:'content-animation',
    contentParentId:'content-container',
    animation:{
      speed:70,
      easeIn:5,
      easeOut:12
    }
  });
};


//fast onload
var domOnload = function(){
  hGLoader();
  setExternalLinks();
  Expander.setup();
  createFlashObjects();
  if (document.forms[0]){
  	window.flashMedia = document.forms[0].flashMedia;
  }
};

//onload of all assets
  if (window.hasFlashMedia){  
    addEvent(window,'load',function(){mediaContainer.setup()});
  }

function checkFlashLink(url){
	window.location = url;
}

function slideshowPopup(id){
  var w = window.open('slideshow_popup.html?id=' + id, 'player', 'width=537,height=465,resizable=no,scrollbars=auto,location=no,status=no,statusbar=no,menubar=no');
}