/*
* jQuery-1.4.4 popup by FirstView (http://firstviewmedia.com).
* This lets you generate a popup with various options
* Options include delay times, animation times, callbacks, and closing the pop up.
* You need to include the css file
*/
/*
Eg. :

$('.popupInit').click(function(e){
	e.preventDefault();
	$.popup({
		onPopupCreation:function($this){
			$this.find('.popUpContainer').html('Hey yo, <a class="closePopup" href="javascript:;">close pop up</a> the freak is up?');
			$('.closePopup').click(function(e){
				e.preventDefault();
				$.popup({
					closePopup:true
				});
			});
		}
	});
});

*/


	$.popup = function(opts) {
	
		var defaults = {
			onPopupCreation: null,				// Additional function to peform when pop up is created (before it fades in - for content generation & adding classes). //
			onOpenAnimEnd: null,				// Additional function to peform when anim ends. //
			onCloseAnimEnd: null,				// Additional function to peform when anim ends. //
			animSpeedIn: 500,					// Anim time in milliseconds. //
			animSpeedOut: 200,					// Anim time in milliseconds. //
			width: 700,
			height: 485,
			closePopup:false					// Overwrite function & close popup //
		};
		
		var opts								= $.extend(defaults, opts);
		var supportsOpacity						= $.support.opacity;
		var $this								= $('.lightBox');
		
		// Closes popup without doing anything else. //
		if( opts.closePopup ){
			closePopup();
			return;
		}
		
		
		// Create popup in HTML. //
		if( !$('.lightBox').length ){
			$('body').append("<div class='lightBox'><div class='blanket'></div><a href='javascript:;' class='closeTab'>X</a><div class='popUpContainer'></div></div>");
		}
		
		
		// Rebind $this, call popup creation callback & open popup. //		
		$this = $('.lightBox');
		var $popWrapper = $this.find('.popUpContainerWrapper');
		
		
		// Set dynamic css. //	
		$popWrapper.css({
			height: opts.height,
			width: opts.width,
			marginTop: -opts.height*.5-$popWrapper.css('paddingTop').replace('px',''),
			marginLeft: -opts.width*.5-$popWrapper.css('paddingLeft').replace('px','')
		});
		$this.find('.closeTab').css({
			marginTop:-opts.height*.5,
			marginLeft: opts.width*.5+Number($popWrapper.css('paddingLeft').replace('px',''))
		});
		
		
		// Call creation function & open popup. //
		if( opts.onPopupCreation ) opts.onPopupCreation($this);
		openPopup();
		
		
		// Close popup. //
		$this.find('.blanket, .closeTab').unbind('click').click(function(e){
			e.preventDefault();
			closePopup();
		});
		
		$('html').keydown( function ( e ) {
			if( e.keyCode == '27' ) closePopup();
		});
		
		
		// Show Blanket & Content. //
		function openPopup(){
			if( supportsOpacity ){
				$this.fadeIn(opts.animSpeedIn, function(){
					if( opts.onOpenAnimEnd ) opts.onOpenAnimEnd($this);
				});
			}else{
				$this.show();
				if( opts.onOpenAnimEnd ) opts.onOpenAnimEnd($this);
			}
		}
		
		
		// Hide Blanket & Content. //
		function closePopup(){
			if( supportsOpacity ){
				$this.fadeOut(opts.animSpeedOut, function(){
					if( opts.onCloseAnimEnd ) opts.onCloseAnimEnd($this);
				});
			}else{
				$this.hide();
				if( opts.onCloseAnimEnd ) opts.onCloseAnimEnd($this);
			}
		}
	};


