(function($) {
   $.facebox = function(data, title) {
      $.facebox.loading()
      if (data.ajax) fillFaceboxFromAjax(data.ajax, title)
      else $.facebox.reveal(data, title)
   }

   /*
   * Public, $.facebox methods
   */

   $.extend($.facebox, {
      settings: {
		   opacity		: 1,
		   overlay		: true,
		   //loadingImage : '../images/facebox/loading.gif',//staat nu in de css, want dan is de plek van de img onafhankelijk van de diepte van de dir waar de facebox in wordt geladen
		   imageTypes   : [ 'png', 'jpg', 'jpeg', 'gif' ],
		   faceboxHtml  : '\
         <div id="facebox" style="display:none;"> \
   		   <div class="popup"> \
   		      <table cellpadding="0" cellspacing="0" border="0" class="facebox_table"> \
   		         <tbody> \
   				      <tr> \
   				         <td class="tl"/><td class="tc"><div class="fbclose close" /></td><td class="tr"/> \
         				</tr> \
         				<tr> \
         				   <td class="lc"/> \
         				   <td class="body"> \
   				            <div class="content" id="facebox_content"> \
   				            </div> \
   				         </td> \
   				         <td class="rc"/> \
   				      </tr> \
   				      <tr> \
   				         <td class="bl"/><td class="bc"/><td class="br"/> \
   				      </tr> \
   		         </tbody> \
   		      </table> \
   		   </div> \
         </div>'
		   /*
		   faceboxHtml  : '\
         <div id="facebox" style="display:none;"> \
   		   <div class="popup"> \
   		      <table cellpadding="0" cellspacing="0" border="0" class="facebox_table"> \
   		         <tbody> \
   				      <tr> \
   				         <td class="tl"/><td class="tc"><div class="fbclose close" /></td><td class="tr"/> \
         				</tr> \
         				<tr> \
         				   <td class="lc"/> \
         				   <td class="body"> \
   				            <div class="content" id="facebox_content"> \
   				            </div> \
   				         </td> \
   				         <td class="rc"/> \
   				      </tr> \
   				      <tr> \
   				         <td class="bl"/><td class="bc"/><td class="br"/> \
   				      </tr> \
   		         </tbody> \
   		      </table> \
   		   </div> \
         </div>'
         */
       },

      loading: function() {
		   init()
		   if ($('#facebox .loading').length == 1) return true
		   showOverlay()

		   $('#facebox_content').empty();
		   $('#facebox').show().fadeTo(1);
		   $('#facebox .body').children().hide().end().append('<div class="loading"><img src="'+$.facebox.settings.loadingImage+'"/></div>')
	 
		   $(document).bind('keydown.facebox', function(e) {
		      if (e.keyCode == 27) $.facebox.close()
		      return true
		   })
		   $(document).trigger('loading.facebox')
      },

      reveal: function(data, title) {
		   $(document).trigger('beforeReveal.facebox')
		   $('#facebox_content').append(data);
		   $('#facebox .loading').remove();		
		
		   posFacebox();
		
		   $(document).trigger('reveal.facebox').trigger('afterReveal.facebox')
	   },
		
	   close: function() {
		   $(document).trigger('close.facebox')
			return false
		}
   })

	$(window).resize(function() {
		posFacebox();							  
	});
	
   function posFacebox(){
	   var $elem = $('#facebox_content');
		var elem_width = $elem.width();
		var elem_height = $elem.height();

		//$('#facebox').animate({width:elem_width+'px',height:elem_height+'px',top:'50%',left:'50%',marginLeft:'-'+Math.ceil(elem_height/2)+'px',marginTop:'-'+Math.ceil(elem_height/2)+'px'},500);
		$('#facebox .body').children().fadeTo('slow',1);		
		
		$('#facebox').css('left', ($(window).width() / 2) - (elem_width / 2) + $(window).scrollLeft());
		$('#facebox').css('top', ($(window).height() / 2) - (elem_height / 2));							  
	}
	
   /*
   * Public, $.fn methods
   */

   $.fn.facebox = function(settings) {
      init(settings);
      function clickHandler() {
		   $.facebox.loading(true);
		   fillFaceboxFromHref(this.href, this.title);
		   return false;
      }
      return this.click(clickHandler);
  }

   /*
   * Private methods
   */

  // called one time to setup facebox on this page
   function init(settings) {
      if ($.facebox.settings.inited) return true;
      else $.facebox.settings.inited = true;

      $(document).trigger('init.facebox');
      makeCompatible();

      var imageTypes = $.facebox.settings.imageTypes.join('|');
      $.facebox.settings.imageTypesRegexp = new RegExp('\.' + imageTypes + '$', 'i');

      if (settings) $.extend($.facebox.settings, settings);
      $('body').append($.facebox.settings.faceboxHtml);

      var preload = [ new Image(), new Image() ];
      //preload[0].src = $.facebox.settings.closeImage
      preload[1].src = $.facebox.settings.loadingImage;

      $('#facebox').find('.bl, .bc, .br, .tl, .tc, .tr, .bl, .bc, .br').each(function() {
   		preload.push(new Image())
   		preload.slice(-1).src = $(this).css('background-image').replace(/url\((.+)\)/, '$1')
      })

      $('#facebox .close').click($.facebox.close)
      //$('#facebox .close_image').attr('src', $.facebox.settings.closeImage)
   }


   // Backwards compatibility
   function makeCompatible() {
      var $s = $.facebox.settings

      $s.loadingImage = $s.loading_image || $s.loadingImage
      //$s.closeImage = $s.close_image || $s.closeImage
      $s.imageTypes = $s.image_types || $s.imageTypes
      $s.faceboxHtml = $s.facebox_html || $s.faceboxHtml
   }

  // Figures out what you want to display and displays it
  // formats are:
  //     div: #id
  //   image: blah.extension
  //    ajax: anything else
   function fillFaceboxFromHref(href, title) {
      fillFaceboxFromAjax(href, title);
   }

   function fillFaceboxFromAjax(href, title) {
  	   var fburl = (href.indexOf("?")>0)?href+'&isajax=true':href+'?isajax=true';      
      $.get(fburl, function(data) { $.facebox.reveal(data, title) });
   }

   function skipOverlay() {
      return $.facebox.settings.overlay == false || $.facebox.settings.opacity === null;
   }

   function showOverlay() {
      if (skipOverlay()) return;    
	   if ($('#facebox_overlay').length == 0) $("body").append('<div id="facebox_overlay"></div>');

	   //.css('opacity', $.facebox.settings.opacity)
	   //.click(function() { $(document).trigger('close.facebox') })
      $('#facebox_overlay').fadeTo('slow', 0.75);
      $('.fbclose').hide();
	   setTimeout(function(){$('.fbclose').css({height:'0px', top:'0px', display:'block'}).animate({height:'27px',top:'15px'},500 );},700);
      return false
   }

   function hideOverlay() {
      if (skipOverlay()) return;
		$('#facebox_overlay').fadeOut();
		$('.fbclose').fadeOut();
      return false
   }

   /*
   * Bindings
   */

   $(document).bind('close.facebox', function() {
      $(document).unbind('keydown.facebox')
      $('#facebox').hide();
	   /* flash showen*/								   
	   $('object').css("visibility","visible");							   
		$('#facebox .content').removeClass().addClass('content')
		hideOverlay();
		$('#facebox .loading').remove();
	   //$('iframe').css("visibility","visible");
   })
})(jQuery);

