jQuery.fn.overlay = function(_options){

	var _options = jQuery.extend({
		opacity: '70',
		color: '#000',
		window_width: '400',
		window_height: '300',
		window_background_color: '#fff',
		close_img: 'images/close.bmp',
		close_styles: 'position: absolute; right: 25px; top: 15px;',
		src: '<p>Dit is de inhoud van de overlay</p>',	// Can contain html or een url, url will result in an ajaxcall to that url and source of that page is shown in the overlay window. url must start with: "url:"
		callback_ajax: '',	// Put function names here that need to be executed after de ajaxcall is done
		callback_closing: ''
	}, _options);
	
	return $(this).each(function(){
		var body = $(this);
		var margintop = parseInt(_options.window_height) / 2;
		margintop = margintop + "px";
		var marginleft = parseInt(_options.window_width) / 2;
		marginleft = marginleft + "px";
		
		var top = body.offset().top;
		
		$('html,body').animate({scrollTop: top}, 500, function(){
		if ($("#overlay").length == 0)
		{
			body.css({
				'overflow' : 'hidden'
			});
			
			var window_src = _options.src;
			
			if (_options.src.substring(0,4) == "url:")
			{
				var ajaxUrl = _options.src.substring(4,_options.src.length);
				$.ajax({
				  type: 'GET',
				  url: ajaxUrl,
				  cache: false,
				  success: function(html){
				  
					var get_src = html.split("<body>");
					if (get_src.length > 0)
					{
						var correct_src = get_src[1].split("</body>");
						if (correct_src.length > 0)
						{
							window_src = correct_src[0];
						}
						else
							window_src = html;
					}
					else				  
						window_src = html;
					
					//$("#results").append(html);
					if ($("#overlay").length == 0)
					{
					
						body.append('<div id="overlay" style="z-index: 9998; position: absolute; left: 0; top: 0; width: 100%; height: 100%; background: '+_options.color+'; opacity:.'+_options.opacity+'; filter: alpha(opacity='+_options.opacity+'); -moz-opacity: 0.'+_options.opacity+';"></div>');
						body.append('<div id="overlay-window" style="margin-top: -'+margintop+'; margin-left: -'+marginleft+'; z-index: 9999;position: absolute; left: 50%; top: 50%; width: '+_options.window_width+'px; height: '+_options.window_height+'px; background-color: '+_options.window_background_color+';"><div class="inner_window"><a href="javascript:;" class="close-overlay" id="btn-close-overlay" style="'+_options.close_styles+'"><img src="'+_options.close_img+'" alt="Sluiten" /></a>'+window_src+'</div></div>');
					
						$(".close-overlay").click(function(event){
							event.preventDefault();
							$("#overlay").remove();
							$("#overlay-window").remove();
							body.css({
								'overflow' : 'auto'
							});
							eval(_options.callback_closing);
						});
						
						$("#overlay").click(function(event){
							event.preventDefault();
							$("#overlay").remove();
							$("#overlay-window").remove();
							body.css({
							'overflow' : 'auto'
							});
						});
					}
				  },
				  complete: function(){
					eval(_options.callback_ajax);
				  }
				});
			}
			else
			{
				body.append('<div id="overlay" style="z-index: 9998; position: absolute; left: 0; top: 0; width: 100%; height: 100%; background: '+_options.color+'; opacity:.'+_options.opacity+'; filter: alpha(opacity='+_options.opacity+'); -moz-opacity: 0.'+_options.opacity+';"></div>');
				body.append('<div id="overlay-window" style="margin-top: -'+margintop+'; margin-left: -'+marginleft+'; z-index: 9999;position: absolute; left: 50%; top: 50%; width: '+_options.window_width+'px; height: '+_options.window_height+'px; background-color: '+_options.window_background_color+';"><div class="inner_window"><a href="javascript:;" class="close-overlay" id="btn-close-overlay" style="'+_options.close_styles+'"><img src="'+_options.close_img+'" alt="Sluiten" /></a>'+_options.src+'</div></div>');
				
				eval(_options.callback_ajax);
				
				$(".close-overlay").click(function(event){
					event.preventDefault();
					$("#overlay").remove();
					$("#overlay-window").remove();
					body.css({
					'overflow' : 'auto'
					});
					eval(_options.callback_closing);
				});
				$("#overlay").click(function(event){
					event.preventDefault();
					$("#overlay").remove();
					$("#overlay-window").remove();
					body.css({
					'overflow' : 'auto'
					});
				});
			}
		
		}
		});
	});
}
