function lightbox() {
  var links = $('a[target^=popup]');
  var overlay = $(jQuery('<div id="overlay" style="display: none"></div>'));
  var container = $(jQuery('<div id="lightbox" style="display: none"></div>'));
  var target = $(jQuery('<div class="target"></div>'));
  var fplayer = $(jQuery('<div id="player"></div>'));
  var head = $(jQuery("<h2></h2>"));
  var closeButton = $(jQuery('<div class="close"><a href="#close">&times; sluit</a></div>'));
  var prev = $(jQuery('<a href="#prev" class="prev">&laquo; Previous</a>'));
  var next = $(jQuery('<a href="#next" class="next">Next &raquo;</a>'));
	
			
  $('body').append(overlay).append(container);
  
  overlay.css('width', $(window).width());
  overlay.css('height', $(window).height());
  
  container.append(closeButton);
  container.append(target);
  container.append(head);
  container.append(prev);
  container.append(next);
  
  container.show().css({
  			'top': Math.round(($(window).height() - container.outerHeight()) / 2) + 'px',
  			'left': Math.round(($(window).width() - container.outerWidth()) / 2) + 'px',
  			'marginTop': 0,
  			'marginLeft': 0
  			}).hide();
	
  closeButton.click(function(c) {
    c.preventDefault();
    closeLightbox();
  });
  function closeLightbox() {
  	overlay.add(container).fadeOut('normal');
  }
  overlay.click(function() {
  	closeLightbox();
  })
	
  prev.add(next).click(function(c) {
    c.preventDefault();
    var current = parseInt(links.filter('.selected').attr('lb-position'),10);
    var to = $(this).is('.prev') ? links.eq(current - 1) : links.eq(current + 1);
    if(!to.size()) {
      to = $(this).is('.prev') ? links.eq(links.size() - 1) : links.eq(0);
    }
    if(to.size()) {
      to.click();
    }
  });

  links.each(function(index) {
    var link = $(this);
    link.click(function(c) {
		c.preventDefault();
		openurl(link.attr('href'), link.attr('title'), $(this).attr("im"));
		links.filter('.selected').removeClass('selected');
		link.addClass('selected');
    });
    link.attr({'lb-position': index});
  });

  var openurl = function(imurl, t, im) {
	prev.hide();
	next.hide();
  	if(container.is(':visible')) {
      target.children().fadeOut('normal', function() {
        target.children().remove();
        if(im == "flowplayer") {
        	loadflow(imurl, t);
        } else {
			loadimage(imurl, t);
	    }
      });
    } else {
      
      target.children().remove();
      overlay.add(container).fadeIn('normal',function(){
        if(im == "flowplayer") {
        	loadflow(imurl, t);
        } else {
			loadimage(imurl, t);
		}
      });
    }
  }
	var loadflow = function (imurl, t) {
  		if(container.is('.loading')) { return; }
    	container.addClass('loading');
    	
    	w = 800;
    	h = 550;
    	_top = Math.round(($(window).height() - h - 75 - parseInt(container.css('padding-top'),10) - parseInt(container.css('padding-bottom'),10)) / 2) + $(window).scrollTop();
    	_left = Math.round(($(document).width() - w - parseInt(container.css('padding-left'),10) - parseInt(container.css('padding-right'),10)) / 2);
    	container.animate({'width': w,'height': h, 'top': _top + 'px', 'left': _left + 'px'},'normal', function(){
    		target.append(fplayer);
    		fplayer.show();
    		$(fplayer).css("width", w + "px");
    		$(fplayer).css("height", (h-50) + "px");
    		
    		flowplayer("player", "/flash/flowplayer.commercial-3.1.5.swf", { 
			    clip:  { 
			        url: imurl, 
			        autoPlay: false, 
			        autoBuffering: true 
			    } 
			});
			prev.show();
			next.show();
			container.removeClass('loading');
    	});
	}
  var loadimage = function(imurl, t) {
    if(container.is('.loading')) { return; }
    container.addClass('loading');
    
    var img = new Image();
	img.onload = function() {
	  	img.style.display = 'none';
	      
		var maxWidth = ($(window).width() - parseInt(container.css('padding-left'),10) - parseInt(container.css('padding-right'), 10)) - 100;
		var maxHeight = ($(window).height() - parseInt(container.css('padding-top'),10) - parseInt(container.css('padding-bottom'), 10)) - 150;
		if(img.width > maxWidth || img.height > maxHeight) { // One of these is larger than the window
			var ratio = img.width / img.height;
			if(img.height >= maxHeight) {
				img.height = maxHeight;
				img.width = maxHeight * ratio;
			} else {
				img.width = maxWidth;
				img.height = maxWidth * ratio;
			}
		}
	    head.text(t);
	      
		_top = Math.round(($(window).height() - img.height - 75 - parseInt(container.css('padding-top'),10) - parseInt(container.css('padding-bottom'),10)) / 2) + $(window).scrollTop();
		container.animate({'width': img.width,'height': img.height+50, 'top': _top + 'px', 'left': Math.round(($(document).width() - img.width - parseInt(container.css('padding-left'),10) - parseInt(container.css('padding-right'),10)) / 2) + 'px'},'normal', function(){
			target.append(img);
			$(img).fadeIn('normal', function() {
				prev.show();
				next.show();
				container.removeClass('loading');
			});
		})
    }
    img.src = imurl;
  }
  $(document).keyup(function(evt) {
		if (evt.keyCode == '27') {
			closeLightbox();
		}
	});

}

$(document).ready(function() {
	lightbox();
});
