function isIE(){
  return /msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent);
}

function getBaseURL() {
  var url     = location.href;
  var baseURL = url.substring(0, url.indexOf('/', 14));

  if(baseURL.indexOf('http://localhost') != -1){
    var url = location.href;  // window.location.href;
    var pathname = location.pathname;  // window.location.pathname;
    var index1 = url.indexOf(pathname);
    var index2 = url.indexOf("/", index1 + 1);
    var baseLocalUrl = url.substr(0, index2);
    return baseLocalUrl + "/";
  }
  else return baseURL + "/";
}

function findPos(obj){
  if(!obj) return 0;
  var curleft = 0;
  var curtop  = 0;
  if(obj.offsetParent){
    for(; true; obj = obj.offsetParent){
      curleft += obj.offsetLeft;
      curtop += obj.offsetTop;
    }
  }
  return curleft;
}
   
function hasClass(elem,clss){
  return elem.className.match(new RegExp('(\\s|^)'+clss+'(\\s|$)'));
}
function addClass(elem,clss){
  if(!hasClass(elem,clss)) elem.className += " "+clss;
}
function removeClass(elem,clss){
  if(hasClass(elem,clss)){
    var reg = new RegExp('(\\s|^)'+clss+'(\\s|$)');
    elem.className=elem.className.replace(reg,' ');
  }
}
function createCookie(name, value, days) {
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
  }
  else var expires = "";
  document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
  var nameEQ = name + "=";
  var ca = document.cookie.split(';');
  for(var i=0;i < ca.length;i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1,c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
  }
  return null;
}

function eraseCookie(name) {
  createCookie(name,"",-1);
}

function triggerLink(elem){
  if(elem==null) return;
  var elems = elem.getElementsByTagName('a');
  for(var i=0; i<elems.length; ++i){
    var celem = elems[i];
    document.location = celem.href;
  }
}

function bodyPostInit(){
  imageScroller.postInit();
  checkItemLinks();
}

function checkLink(elem){
	if(elem==null) return true;
	var target = elem.href;
	var me     = getBaseURL();
	
	if(target.indexOf(me)>=0) return true;
	else{
    window.open(target);
    return false;
	}
}

function checkItemLinks(){
  var elems = document.getElementsByTagName('div');
  var items = new Array();
  for(var i=0; i < elems.length; ++i){
    if(hasClass(elems[i], 'body-content-text-item'))  items.push(elems[i]);
    if(hasClass(elems[i], 'body-content-image-item')) items.push(elems[i]);
    if(hasClass(elems[i], 'body-sidebar-item'))       items.push(elems[i]);
    if(hasClass(elems[i], 'body-outlet-item'))       items.push(elems[i]);
  }
  var baseref = getBaseURL();
  for(var i=0; i < items.length; ++i){
    elems = items[i].getElementsByTagName('a');
    for(var j=0; j < elems.length; ++j){
      if(!hasClass(elems[j], 'link')) continue;
      if(elems[j].href==baseref) continue;
      elems[j].style.display = 'block';
    }
  }
}

function ImageScroller(){
  this.images   = new Array();
  this.imageCan = null;
  this.current  = 0;
  this.next     = 0;
  this.ticks    =  50; // 25 ms
  this.maxwait  = 200; // 5s
  this.maxrun   =  30; // 1s
  this.waittime = 0;
  this.runtime  = 0;
  
  this.addImage = function(elem){
    var cookie    = readCookie('banner-image');
    if(cookie=='NaN') cookie = null;
    if(cookie!=null)  cookie = parseInt(cookie);
    
    var index       = this.images.length;
    elem.style.top  = '0px';
    elem.style.left = '0px';
    this.images.push(elem);
    
    if(cookie==null){
      if(this.images.length==1){
        this.setImage(elem, 1);
      }
    }
    else{
    	if(index==cookie) this.setImage(elem, 1);
    	else              this.setImage(elem, 0);
    }
  }
  this.preInit = function(elemid){
    this.waittime = this.maxwait;
    this.runtime  = 0;
    this.imageCan = document.getElementById(elemid);
    if(this.imageCan==null) return;
    var elems     = this.imageCan.getElementsByTagName('img');
    for(var i=0; i<elems.length; ++i) this.addImage(elems[i]);
    
    var cookie    = readCookie('banner-image');
    this.current  = cookie!=null && cookie!='NaN' ? parseInt(cookie) : this.current;
    if(this.current<0) this.current = 0;
    if(this.current>=elems.length) this.current = this.current % elems.length;
    this.next     = (this.current+1)%elems.length;
  }
  this.postInit = function(){
    if(this.images.length>0) setTimeout('callback();', this.ticks);
  }
  this.checkHeight = function(){
    var height = 0;
    for(var i=0; i<this.images.length; ++i) height = Math.max(height, this.images[i].offsetHeight);
    this.imageCan.style.height = height+'px';
  }
  this.run = function(){
    this.checkHeight();
    if(this.waittime>0){
      this.waittime--;
      setTimeout('imageScroller.run();', this.ticks);
      return;
    }
    if(this.waittime==0 && this.runtime<=0) this.runtime = this.maxrun;
    if(this.runtime>0){
      this.runtime--;
      var alpha = this.runtime / this.maxrun;
      this.setImage(this.images[this.current], alpha);
      this.setImage(this.images[this.next]   , 1-alpha);
    }
    if(this.runtime==0){
      this.waittime = this.maxwait;
      this.current  = this.next;
      this.next     = (this.next+1)%this.images.length;
    	createCookie('banner-image', this.current, 0.25);
    }
    setTimeout('imageScroller.run();', this.ticks);
  }
  this.setImage = function(image, alpha){
    if(image==null) return;
    image.style.opacity = alpha;
    image.style.filter  = "alpha(opacity="+Math.round(alpha*100)+")";   
    image.style.display = alpha==0 ? 'none' : 'block';
  }
}

var imageScroller = new ImageScroller();

function callback(){imageScroller.run();}

function OutletHandler(){
  this.perpage = 5; 
  this.pages   = 0;
  this.can     = null;
  this.items   = new Array();
  
  this.init = function(elemid){
    this.can  = document.getElementById(elemid);
    if(this.can==null) return;
    var elems = this.can.getElementsByTagName('div');
    for(var i=0; i < elems.length; ++i) if(hasClass(elems[i], 'body-outlet-item')) this.addItem(elems[i]);
    this.initPages();
  }
  this.addItem = function(elem){
    this.items.push(elem);
    
    var base  = getBaseURL();
    var elems = elem.getElementsByTagName('img');
    for(var i=0; i<elems.length; ++i) if(elems[i].src==base) elems[i].style.display = 'none';
  }
  this.initPages = function(){
    var total  = this.items.length;
    this.pages = Math.floor(total / this.perpage);
    if(this.pages*this.perpage!=total) this.pages++;
    
    if(document.getElementById('body-outlet-footernav')==null){
      var elem = document.createElement('div');
      elem.setAttribute('id'   , 'body-outlet-footernav');
      elem.setAttribute('class', 'body-outlet-footernav');
      this.can.appendChild(elem);
    }
    this.setPage(0);
    this.updateFooterNav(0);
  }
  this.setPage = function(pageid){
    var total = this.items.length;
    var pages = Math.min(pageid * this.perpage, total);
    var pagee = Math.min(pages + this.perpage, total);
    var i     = 0;
    for(; i<pages; ++i) this.items[i].style.display = 'none';
    for(; i<pagee; ++i) this.items[i].style.display = 'block';
    for(; i<total; ++i) this.items[i].style.display = 'none';
    
    var pageelem = document.getElementById('body-outlet-pages');
    if(pageelem==null) return;
    var content = '';
    for(var i=0; i<this.pages; ++i) content += '<span class="pagebutton '+(i==pageid ? 'selected' : '')+'" onclick="outletHandler.setPage('+i+');">'+(i+1)+'</span>';
    pageelem.innerHTML = content=='' ? ': geen items' : content;    
    this.updateFooterNav(pageid);
  }
  this.updateFooterNav = function(pageid){
  	var content = '';
  	if(this.pages>1){
  	  var prev = '<span class="previous" onclick="outletHandler.setPage('+(pageid-1)+');">vorige pagina</span>';
  	  var next = '<span class="next"     onclick="outletHandler.setPage('+(pageid+1)+');">volgende pagina</span>';
  	
  	  if(pageid==0) content = next;
  	  else if(pageid==(this.pages-1)) content = prev;
  	  else content = prev + ' | ' + next;
  	}
  	var elem = document.getElementById('body-outlet-footernav');
  	elem.innerHTML = content;
  }
}

var outletHandler = new OutletHandler();

function showPopup(img){
  if(img==null) return;
  var newImg = new Image();
  newImg.src = img.src;
  var width  = newImg.width;
  var height = newImg.height;
  
  var elem = document.createElement('div');
  
  var w = 0;
  var h = 0;
  var max_w  = document.body.offsetWidth;
  var max_h  = document.body.offsetHeight;
  
  if(max_w>width && max_h>height){
    w = width;
    h = height;
  }
  else if(max_w/width >= max_h/height){
    h = max_h - 10;
    w = width * (max_h / height);
  }
  else if(max_w/width < max_h/height){
    w = max_w - 10;
    h = height * (max_w / width);
  }
    
  var url = img.src;
  
  if(document.getElementById('popup')!=null) killPopup('popup');
  
  elem.setAttribute('id', 'popup');
  elem.setAttribute('style', 'position: fixed; left: 50%; top: 50%; margin-left: -'+(w/2)+'px; margin-top: -'+(h/2)+'px; width: '+w+'px; height: '+h+'px; background: #FFFFFF url("'+url+'") left top no-repeat; z-index: 100000; border: 1px solid #000000; cursor: pointer;');
  elem.onclick = new Function('killPopup("popup");');
  document.body.appendChild(elem);
}

function killPopup(elemid){
  var elem = document.getElementById(elemid);
  if(elem==null) return;
  elem.parentNode.removeChild(elem);
}
