/*

	SB UI - Toplayer

*/
(function( $ ){
	$.fn.sb_ui_toplayer = function(options) {
	
		// Maintainin chainability 
		return this.each(function() {
	
			// Set standard values
			var s = {
				'use_background'		: true, // Use background for toplayer?
				'background_opacity'	: 0.25,
				'append_target'			: false, // Append target to body, moving it away from its current position
				'trigger'				: '',
				'automateTrigger'		: false // If this is set, the trigger will be the element with same id + _trigger (greatToplayer will have trigger greatToplayer_trigger)
			};
			
			// Merge submitted options with our settings
			if ( options ) { 
				$.extend( s, options );
			}
			
			// Set variables
			var toplayer = $(this);
			var body = $('body');
			var document_width = $(document).width(); // Get window width so we can position toplayer
			var toplayer_background = $('<div class="sb_ui_toplayer_background"></div>'); // Create toplayer background
			var sb_ui_toplayer_close = toplayer.find('.sb_ui_toplayer_close');
			var trigger = $([]);
			
			if ( s.automateTrigger == false && trigger.length > 0 )
			{
				trigger = $(s.trigger);
			}
			else if ( s.automateTrigger == true )
			{
				trigger = $('#' + toplayer.attr('id') + '_trigger');
			}
			
			trigger.addClass('sb_ui_toplayer_trigger');
			
			// Add background if set to
			if ( s.use_background == true )
			{
				// Fade background
				toplayer_background.css({ opacity : s.background_opacity });
				
				// Append
				body.append(toplayer_background);
			}
			
			// Add standard sb ui class to toplayer
			toplayer.addClass('sb_ui_toplayer');
			
			// Hide toplayer on click outside
			var $clickedElement;
			$(document).bind('click', function(e) {
				$clickedElement = $(e.target);
				if ( !$clickedElement.hasClass('sb_ui_toplayer_trigger') && !$clickedElement.hasClass('sb_ui_toplayer') && !$clickedElement.parents().hasClass('sb_ui_toplayer') )
				{
					// Hide toplayer
					toplayer.hide();
					toplayer_background.hide();
				}
			});
			
			// If trigger is set, add standard sb ui class and set binds
			if ( trigger.size() > 0 )
			{
				trigger.addClass('sb_ui_toplayer_trigger');
				
				trigger.live('click', function() {
				
					// Position toplayer
					var toplayer_width = toplayer.outerWidth(true);
					var toplayer_left = ( $(document).width() / 2 ) - (toplayer_width / 2);
					toplayer.css({'left': toplayer_left+'px'});
		
					// Show toplayer
					toplayer_background.show();
					toplayer.show();
					
				});
				
			}
			
			// If close button exists, bind it
			if ( sb_ui_toplayer_close.size() > 0 )
			{
				sb_ui_toplayer_close.bind('click', function() {
					toplayer_background.hide();
					toplayer.hide();
				});
			}
			
			// Move target if set to
			if ( s.append_target == true )
			{
				body.append(toplayer);
			}
		
		});

	};
})( jQuery );
