

// 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);
};


// add stylesheet
var styleSheetFromScript = false;
function addStyle(selector,properties){
  if (document.styleSheets) {
    if (!styleSheetFromScript){
      styleSheetFromScript = document.createElement('style');
      styleSheetFromScript.setAttribute('type','text/css');
      document.getElementsByTagName('HEAD')[0].appendChild(styleSheetFromScript);
    }
    var lastSheet = document.styleSheets[document.styleSheets.length - 1];
    if(lastSheet && typeof lastSheet.addRule == 'object'){
      lastSheet.addRule(selector, properties);
    }
    else {
      styleSheetFromScript.appendChild(document.createTextNode(selector + ' { ' + properties + ' }'));
    }
  }
};


//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');
		//alert('#' + oArg.parentId + ' .alternate-content','display:none');
  }
	else {
		//alert('nee')
	}
  
  // 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.5
*************************/


//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 exceptionDomain1 = "educatie.beeldengeluid.nl";
var exceptionDomain2 = "instituut.beeldengeluid.nl";
var exceptionDomain3 = "webshop.beeldengeluid.nl";
var exceptionDomain4 = "archieven.beeldengeluid.nl";
var exceptionDomain5 = "portal.beeldengeluid.nl";
var exceptionDomain6 = "experience.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(exceptionDomain1) == -1&& aElHref.indexOf(exceptionDomain2) == -1 && aElHref.indexOf(exceptionDomain3) == -1&& aElHref.indexOf(exceptionDomain4) == -1&& aElHref.indexOf(exceptionDomain5) == -1&& aElHref.indexOf(exceptionDomain6) == -1&& aElHref.indexOf('mailto:') == -1 && aElHref.indexOf('javascript:') == -1) || foundExtension){
        aEl.onclick = function(){
        window.open(this.href);
        return false;
      }
    }
  }
};



/* 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;
};


// 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
    /* MODIFIED BY BASKET BUILDERS */
    document.write('<script type="text/javascript" defer="defer" src="Sites/BenG_Portal/Fabrique/_scripts/ie_onload.js"><\/script>');
  }
  window.onload = domLoader;
};

setupDomLoader();




/*init*/

// init flash headers

var hGCalHeight = 12;
var hGCalId = 'disclaimer';
/* MODIFIED BY BASKET BUILDERS */
var hGPath = 'Sites/BenG_Portal/Fabrique/_swf/hg.swf';

/* MODIFIED BY BASKET BUILDERS */
addSwfHeader({swfFont:'Sites/BenG_Portal/Fabrique/_swf/akzidenzCondensed.swf',cssSelector:'h1',size:35,color:'494949',bGColor:'E7E7E7',paddingLeft:-2,paddingBottom:-2,capitalize:true});
addSwfHeader({swfFont:'Sites/BenG_Portal/Fabrique/_swf/akzidenzCondensedReg.swf',cssSelector:'div#content-top h3',size:22,color:'494949',paddingLeft:-2,paddingBottom:-2,paddingTop:-5});
addSwfHeader({swfFont:'Sites/BenG_Portal/Fabrique/_swf/akzidenzCondensedReg.swf',cssSelector:'span.datenr',size:37,color:'D30000',paddingLeft:-2,paddingBottom:-1,paddingTop:-3,align:'center'});
addSwfHeader({swfFont:'Sites/BenG_Portal/Fabrique/_swf/akzidenzCondensed.swf',cssSelector:'div.special-b h2',size:35,color:'59BFFF',paddingLeft:-2,paddingBottom:-2,capitalize:true});
addSwfHeader({swfFont:'Sites/BenG_Portal/Fabrique/_swf/akzidenzCondensed.swf',cssSelector:'div.free-textbox h2',size:35,color:'D30000',paddingLeft:-2,paddingBottom:-2,capitalize:true});
addSwfHeader({swfFont:'Sites/BenG_Portal/Fabrique/_swf/akzidenzCondensed.swf',cssSelector:'div.special-c h2',size:35,color:'F3D900',paddingLeft:-2,paddingBottom:-2,capitalize:true});
addSwfHeader({swfFont:'Sites/BenG_Portal/Fabrique/_swf/akzidenzCondensed.swf',cssSelector:'div.home h2',size:35,color:'494949',bGColor:'E7E7E7',paddingLeft:-2,paddingBottom:-2,capitalize:true});
addSwfHeader({swfFont:'Sites/BenG_Portal/Fabrique/_swf/akzidenzCondensed.swf',cssSelector:'div#content-left h2',size:35,color:'4D4D4D',bGColor:'E7E7E7',paddingLeft:-2,paddingBottom:-2,capitalize:true});
addSwfHeader({swfFont:'Sites/BenG_Portal/Fabrique/_swf/akzidenzCondensedReg.swf',cssSelector:'div#nav-sub-container h2',size:20,color:'4D4D4D',bGColor:'E7E7E7',paddingLeft:-2,paddingBottom:-2});

hGStart();

// end init flash headers

//fast onload
var domOnload = function(){
	createFlashObjects();
  hGLoader();
  setExternalLinks(['pers.beeldengeluid.nl','www.beeldengeluid.nl','educatie.beeldengeluid.nl','experience.beeldengeluid.nl','webshop.beeldengeluid.nl']);
};
      
