(function($) {
    $.fn.extend({
      spotlight: function(options) {
	  var defaults = {
	  adtext: 'ad-text',
	  adteaser: 'ad-teaser',
	  show_spotid: 'show-spotlight',
	  hide_spotid: 'hide-spotlight',
	  load_url:''
	  };
	  var options = $.extend(defaults, options);
	  if ($(this).children().length != 2) {
	    return null;
	  }

	  return this.each(function() {
	      var loaded = false;
	      var o = options;
	      var obj = $(this);
	      var children = obj.children();
	      var spotteaser = children[0];
	      var spotcontent = children[1];

	      var escapeSpotLight = function(e) { 
		if (e.type == 'click') {
		  if ( jQuery.contains(obj[0], e.target) )
		    return;
		} else if (e.keyCode && e.keyCode != 27) {
		  return;
		}
		if ( $(spotcontent).is(':visible') ) {
		  $('#' + o.show_spotid).trigger('click');
		}
	      }
	      var toggleSpotLight = function(e) {
		e.preventDefault();
		$(obj).children().slideToggle('slow');
		e.stopPropagation();
	      };
	      $(spotcontent).hide();
	      $('#'+ o.show_spotid +  ', #' + o.hide_spotid).live('click', toggleSpotLight);
	      $('html').click(escapeSpotLight).keyup(escapeSpotLight);
	      if (o.load_url) {
		$.get(o.load_url, function(data) {
		    var loader = $('<div id="loader"></div>').appendTo('body').append(data);
		    $(spotteaser).empty().append($('#' + o.adteaser));
		    $(spotcontent).empty().append($('#'+ o.adtext));
		    loader.remove();
		    loader = null;
		    obj.show();
		  }, 'html');
	      }
	    });
	}
      })
 })(jQuery);

