/*
* 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. //
			delayBlanketIn: 200,				// Delay time in milliseconds. //
			delayContentIn: 200,				// Delay time in milliseconds. //
			animSpeedBlanketIn: 500,			// Anim time in milliseconds. //
			animSpeedContentIn: 500,			// Anim time in milliseconds. //
			animSpeedBlanketOut: 200,			// Anim time in milliseconds. //
			animSpeedContentOut: 300,			// Anim time in milliseconds. //
			closePopup:false					// Overwrite function & close popup //
		};
		
		var opts								= $.extend(defaults, opts);
		var supportsOpacity						= $.support.opacity;
		var $this								= $('.popupWrapper');
		
		// Closes popup without doing anything else. //
		if( opts.closePopup ){
			closePopup();
			return;
		}
		
		
		// Create popup in HTML. //
		if( !$('.popupWrapper').length ){
			$('body').append("<div class='popupWrapper'><div class='popupBlanket'></div><div class='popupContainer'></div><a href='javascript:;' class='popupClose'>Close</a></div>");
		}
		
		
		// Rebind $this, call popup creation callback & open popup. //		
		$this = $('.popupWrapper');
		if( opts.onPopupCreation ) opts.onPopupCreation($this);
		openPopup();
		
		
		// Close popup. //
		$this.find('.popupBlanket, .popupClose').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.show().find('.popupBlanket').hide().delay(opts.delayBlanketIn).fadeIn(opts.animSpeedBlanketIn, function(){
					$this.find('.popupContainer').filter(':hidden').delay(opts.delayContentIn).fadeIn(opts.animSpeedContentIn, function(){
						if( opts.onOpenAnimEnd ) opts.onOpenAnimEnd($this);
					});
					$this.find('.popupClose').filter(':hidden').delay(opts.delayContentIn).fadeIn(opts.animSpeedContentIn);
				});
			}else{
				$this.show().find('.popupBlanket, .popupContainer, .popupClose').show();
				if( opts.onOpenAnimEnd ) opts.onOpenAnimEnd($this);
			}
		}
		
		
		// Hide Blanket & Content. //
		function closePopup(){
			if( supportsOpacity ){
				$this.find('.popupClose, .popupContainer').filter(':visible').fadeOut(opts.animSpeedContentOut, function(){
					$this.find('.popupBlanket').andSelf().fadeOut(opts.animSpeedBlanketOut, function(){
						if( opts.onCloseAnimEnd ) opts.onCloseAnimEnd($this);
					});
				});
			}else{
				$this.hide().find('.popupBlanket, .popupContainer, .popupClose').hide();
				if( opts.onCloseAnimEnd ) opts.onCloseAnimEnd($this);
			}
		}
	};


