jQuery.fn.customLightbox = function(_options){
	// defaults options	
	var _options = jQuery.extend({
		thumbnail:'a',
		lightboxContentBlock: 'div.lightbox',
		lightboxImage:'img.big-image',
		next:'a.btn-more',
		prev:'a.btn-prev',
		title:'div.nav-area',
		name:'h3',
		load:'img.load',
		galleryName:'none',
		faderOpacity: 0.5,
		faderBackground: '#000000',
		closeLink:'a.btn-close',
		paddingLeft:23,
		paddingRight:23,
		paddingTop:50,
		paddingBottom:33,
		lbMinWidth:305,
		onClick: null
	},_options);

	return this.each(function(i, _this){
		var _this = jQuery(_this);
		// generate code for the lightbox **************************************
		var _lightboxCode = '\
			<div class="popup lightbox"> \
				<div class="block-holder"> \
					<a class="btn-close" href="#">Close</a> \
					<div class="top"><span>&nbsp;</span><em>&nbsp;</em><div>&nbsp;</div></div> \
					<div class="holder-shadow"> \
						<div class="holder-shadow-ind"> \
							<span class="left">&nbsp;</span> \
							<span class="right">&nbsp;</span> \
							<div class="block-body"> \
								<div class="img-holder"><img alt="" class="load" src="wp-content/themes/areoff/images/load.gif" /><img alt="" class="big-image" src="" /></div> \
								<div class="navigation"> \
									<div class="holder"> \
										<a class="btn-prev" href="#">Previous</a> \
										<div class="nav-area"></div> \
										<a class="btn-more" href="#">More</a> \
									</div> \
								</div> \
							</div> \
						</div> \
					</div> \
					<div class="bottom"><span>&nbsp;</span><em>&nbsp;</em><div>&nbsp;</div></div> \
				</div> \
			</div>	\
		';
		var _faderCode = '<div class="lightbox-fader"></div>';
		
		/*if (!jQuery(_options.lightboxContentBlock).length)
			$('body').append(_lightboxCode);*/
		if (!jQuery('.lightbox-fader').length)
			$('body').append(_faderCode);

		// set style lightbox **************************************************
		//var _lightbox = jQuery(_options.lightboxContentBlock);
		var _lightbox = jQuery(_lightboxCode).appendTo($('body'))
		var _fader = jQuery('div.lightbox-fader');
		
		_lightbox.css({
			width:_options.lbMinWidth,
			display:'none',
			position:'absolute',
			top:0,
			left:0
		});
		_fader.css({
			opacity:_options.faderOpacity,
			backgroundColor:_options.faderBackground,
			display:'none',
			position:'absolute',
			top:0,
			left:0,
			zIndex:998,
			textIndent: -9999
		}).text('$nbsp');
		
		var _currentImage = 0;
		var _thumbnails = jQuery(_options.thumbnail, _this);
		var _closeLink = jQuery(_options.closeLink, _lightbox);
		var _mainImage = jQuery(_options.lightboxImage, _lightbox);
		var _load = jQuery(_options.load, _lightbox);
		var _title = jQuery(_options.title, _lightbox);
		var _linkNext = jQuery(_options.next, _lightbox);
		var _linkPrev = jQuery(_options.prev, _lightbox);
		var _imageHolder = _mainImage.parent();
		var _image = {};
		var _top = 0;
		var _left = 0;

		if(_thumbnails.length <= 1){
			_linkNext.hide();
			_linkPrev.hide();
		}
		_thumbnails.click(function(){
			if (jQuery.isFunction(_options.onClick)) {
				_options.onClick.apply(_this);
			}
			_currentImage = _thumbnails.index(jQuery(this));
			
			_fader.fadeIn(300, function(){
				_mainImage.hide();
				_title.hide();
				_lightbox.fadeIn(400, function(){
					onloadImage(_currentImage);
				});
				positionLightbox(_lightbox);
			});
			return false;
		});
		_linkNext.click(function(){
			_currentImage += 1;
			if (_currentImage >= _thumbnails.length) _currentImage = 0;
			onloadImage(_currentImage);			
			return false;
		});
		_linkPrev.click(function(){
			_currentImage -= 1;
			if (_currentImage < 0) _currentImage = _thumbnails.length-1;
			onloadImage(_currentImage);			
			return false;
		});
		_closeLink.click(function(){
			_lightbox.fadeOut(400, function(){
				_fader.fadeOut(300);
				_scroll = false;
			});
			return false;
		});
			
		function onloadImage(_cur) {
			_mainImage.hide();
			_load.show();
			_title.slideUp(300);
			var _img = new Image();
			_img.onload = function(){
				_image = _img;
				_image.w = this.width;
				_image.h = this.height;
				showImage();
				_img.onload = function(){};
			}
			_img.src = _thumbnails.eq(_cur).attr('href');
		}
		function showImage(){
			var _dinWidth = _image.w + _options.paddingLeft + _options.paddingRight;
			var _dinHeight = _image.h;
			var _titleText = _thumbnails.eq(_currentImage).attr('title');
			if (_dinWidth < _options.lbMinWidth) _dinWidth = _options.lbMinWidth;
			var _pos = setLocation();			
			_imageHolder.animate({height:_dinHeight},{queue:false, duration:400});
			_lightbox.animate({
				width:_dinWidth,
				top:_pos.top,
				left:_pos.left
			},{queue:false, duration:400, complete:function(){
				_load.hide();
				_mainImage.attr('src',_image.src).fadeIn(300);
				if (_titleText != '') {
					_title.text(_titleText).slideDown(300);
				}
			}});
		}
		var _height = 0;
		var _width = 0;
		var _scroll = false;
		function setLocation(){
			var _offset = {};
			if (window.innerHeight) {
				_height = window.innerHeight;
				_width = window.innerWidth;
			} else {
				_height = document.documentElement.clientHeight;
				_width = document.documentElement.clientWidth;
			}
			var _thisHeight = _image.h + _options.paddingTop + _options.paddingBottom;
			var _thisWidth = _image.w + _options.paddingLeft + _options.paddingRight;
			if (_thisWidth < _options.lbMinWidth) _thisWidth = _options.lbMinWidth;
			var _page = $('body > div:eq(0)');
			if (_lightbox.length) {
				if (_height > _thisHeight) {
					if (!window.innerHeight) {
						_lightbox.css({position:'absolute'});
						_offset.top = (document.documentElement.scrollTop + (_height - _thisHeight) / 2)
					} else {
						_lightbox.css({position:'fixed'});
						_offset.top = ((_height - _thisHeight) / 2)
					}
				}
				else {
					var _fh = parseInt(_fader.css('height'));
					if (!_scroll) {
					if (_fh - _thisHeight > parseInt($(document).scrollTop())) {
							_fh = parseInt($(document).scrollTop())
							_scroll = _fh;
						} else {
							_scroll = _fh - _thisHeight;
						}
					}
					_lightbox.css({position:'absolute'});
					_offset.top = _scroll;
				}
				if (_width > _thisWidth) 
					_offset.left  = (_width - _thisWidth) / 2;
				else {
					_lightbox.css({position:'absolute'})
					_offset.left = 0;
				};
			}
			return _offset;
		}
		function positionLightbox (_lbox) {
			var _minWidth = $('body > div:eq(0)').outerWidth();
			if (window.innerHeight) {
				_height = window.innerHeight;
				_width = window.innerWidth;
			} else {
				_height = document.documentElement.clientHeight;
				_width = document.documentElement.clientWidth;
			}
			var _thisHeight = _lbox.outerHeight();
			var _page = $('body > div:eq(0)');
			if (_lbox.length) {
				if (_height > _page.innerHeight()) _fader.css('height',_height); else _fader.css('height',_page.innerHeight());
				if (_width < _minWidth) {_fader.css('width',_minWidth);} else {_fader.css('width','100%');}
				if (_height > _thisHeight) {
					if (!window.innerHeight) {
						_lbox.css({
							position:'absolute',
							top: (document.documentElement.scrollTop + (_height - _thisHeight) / 2)+"px"
						});
					} else {
						_lbox.css({
							position:'fixed',
							top: ((_height - _lbox.outerHeight()) / 2)+"px"
						});
					}
				}
				else {
					var _fh = parseInt(_fader.css('height'));
					if (!_scroll) {
					if (_fh - _thisHeight > parseInt($(document).scrollTop())) {
							_fh = parseInt($(document).scrollTop())
							_scroll = _fh;
						} else {
							_scroll = _fh - _thisHeight;
						}
					}
					_lbox.css({
						position:'absolute',
						top: _scroll
					});
				}
				if (_width > _lbox.outerWidth()) _lbox.css({left:(_width - _lbox.outerWidth()) / 2 + "px"});
				else _lbox.css({position:'absolute',left: 0});
			}
		}
			
		jQuery(window).resize(function(){
			positionLightbox(_lightbox);
		});
			
		$(document).keydown(function (e) {
			if (!e) evt = window.event;
			if (e.keyCode == 27) {
				_lightbox.fadeOut(400, function(){
					_fader.fadeOut(300);
					_scroll = false;
				});
			}
		});
	});
}




	
