(function($){
	$.fn.thickbox = function(options) {
		
		var
		  defaults = {
		  	background: '#fff',
			color: 'black',
			height: '400',
			width: '600',
			method: 'post',
			url: '',
			data: '',
			view: '',
			closeOnESC: 'true',
			closeOnClick: 'true',
			closeHeader: 'true',
			loaderGif: 'true'
		  },
		  settings = $.extend({}, defaults, options);
		  
		  this.each(function() {
		  	var $this = $(this);

			if($this.is('a') || $this.is('input')) {
				$this.click(function(e) {
					
						var Wheight = $(window).height();
						var Wwidth = $(window).width();
			
						var Dheight = $(document).height();
						var Dwidth = $(document).width();
	
						$('<div id="overlay-window" />')
						  .appendTo('body')
						  .hide()
						  .css({
							height: Dheight+"px",
							width: Dwidth+"px"
						  })
						  .fadeIn(350);
	
						$('<div id="view-window" />')
						  .appendTo('body')
						  .hide()
						  .css({
							height: settings.height-2+'px',
							width: settings.width+'px',
							top: (Wheight-settings.height)/2+'px',
							left: (Wwidth-settings.width)/2+'px',
							right: (Wwidth-settings.width)/2+'px',
							bottom: (Wheight-settings.height)/2+'px'
						  })
						  .fadeIn(350);
						
						if(settings.closeHeader=='true'){
							$('<div id="close-header" />')
							  .appendTo('body')
							  .hide()
							  .css({
								top: ((Wheight-settings.height)/2)-26+'px',
								left: (Wwidth-settings.width)/2+'px',
								right: (Wwidth-settings.width)/2+'px',
								width: settings.width+'px'
							  })
							  .html('<a href="#" id="thickbox-close" style="float:right;padding:4px;text-decoration:none;margin-right:10px;color:#999999;">close</a>')
							  .fadeIn(350);
						}
											
						if(settings.loadingGif=='true'){
							$('#view-window').html('<div id="loading-gif" style="display:block;">Loading<br /><img src="./images/ajax-loader.gif" /></div>')
						}
											
						if(settings.url!='')
						{
							$.ajax({
								type: settings.method,
								url: settings.url,
								data: settings.data,
								success: function(data) { $('#view-window').html(data) }
							});
						}
						else
						{
							data = $(''+settings.view+'').html();
							$('#view-window').html(data);
						}
	
						$(document).bind('keydown', function(event){
							if(event.keyCode && (event.keyCode == 27) && settings.closeOnESC=='true'){
								closeAll();
								return false
							}
							
						});
	
						$('#thickbox-close').bind('click', function(event){
							closeAll();
							return false
						});
	
						if(settings.closeOnClick=='true'){
							$('#overlay-window').bind('click', function(event){
								closeAll();
								return false
							});
						}
						
						function closeAll(){
							$("#overlay-window").detach(); 
							$("#view-window").detach();
							$("#close-header").detach();
						}

					return false
				});	
			}
		  });
		  // returns the jQuery object to allow for chainability.
		  return this;
	}
})(jQuery);

