// Sticky v1.0 by Daniel Raftery
// http://thrivingkings.com/sticky
//
// http://twitter.com/ThrivingKings
/*
 * Cambios VMC:
 * - Al cerrar, se aplica remove() adicionalmente a fadeOut()
 */

(function( $ )
	{
	
	// Using it without an object
	$.sticky = function(note, options, callback) {return $.fn.sticky(note, options, callback);};
	
	$.fn.sticky = function(note, options, callback) 
		{
		// Default settings
		var settings =
			{
			'speed'			:	'fast',	 // animations: fast, slow, or integer
			'duplicates'	:	true,  // true or false
			'autoclose'		:	2500,  // integer or false
			'onClose'		:   function() {},
			'position'		:	'bottom-left',  // top-left, top-right, bottom-left, or bottom-right
			'addClass'		:   '', //Clase que agregaremos al sticky
			'style'			:   ''
			};

		
		// Passing in the object instead of specifying a note
		if(!note)
			{note = this.html();}
		
		if(options)
			{$.extend(settings, options);}
		//Complementamos classes
		if (settings.addClass) settings.addClass = 'sticky-'+settings.addClass;
		
		// Variables
		var display = true;
		var duplicate = 'no';
		
		// Somewhat of a unique ID
		var uniqID = Math.floor(Math.random()*99999);
		
		// Handling duplicate notes and IDs
		$('.sticky-note').each(function()
			{
			if($(this).html() == note && $(this).is(':visible'))
				{ 
				duplicate = 'yes';
				if(!settings['duplicates'])
					{display = false;}
				}
			if($(this).attr('id')==uniqID)
				{uniqID = Math.floor(Math.random()*9999999);}
			});
		
		// Make sure the sticky queue exists
		if(!$('body').find('.sticky-queue.'+settings.position).is('*'))
			{$('body').append('<div class="sticky-queue ' + settings.position + '"></div>');}
		
		// Can it be displayed?
		if(display) {
			// Building and inserting sticky note
			$('.sticky-queue.'+settings.position).prepend('<div class="sticky border-' + settings.position + ' ' + settings.addClass + '" id="' + uniqID + '" style="'+settings.style+'"></div>');
			$('#' + uniqID).append('<img src="/img/misc/stickyClose.png" class="sticky-close" rel="' + uniqID + '" title="Close" />');
			if (settings.position != 'top-center') $('#' + uniqID).append('<img src="/img/misc/stickyMinimize.png" class="sticky-minimize" rel="' + uniqID + '" title="Minimize" />');
			$('#' + uniqID).append('<div class="sticky-note" rel="' + uniqID + '">' + note + '</div>');
			
			// Smoother animation
			var height = $('#' + uniqID).height();
			$('#' + uniqID).css('min-height', height);
			
			$('#' + uniqID).slideDown(settings['speed']);
			display = true;
			}
		
		// Callback data
		var response = 
			{
			'id'		:	uniqID,
			'duplicate'	:	duplicate,
			'displayed'	: 	display,
			'position'	:	settings.position
			}

		$('#'+uniqID).data('sticky',{
			'response' : $.extend({}, response),
			'settings' : $.extend({}, settings)
		});
		var stickyData = $('#'+uniqID).data('sticky');
			
		// Listeners
		$('.sticky').ready(function() {
			// If 'autoclose' is enabled, set a timer to close the sticky
			if(settings['autoclose']) { 
				stickyData.settings.onClose(stickyData.response);
				$('#' + uniqID).delay(settings['autoclose']).fadeOut(settings['speed'],function(){
					
					$('#'+uniqID).removeData('sticky');
					$('#'+uniqID).find('.sticky-close').unbind();
					$('#'+uniqID).find('.sticky-minimize').die('click');
					$('#'+uniqID).find('.sticky-maximize').die('click');
					$('#'+uniqID).find('.sticky-note').removeData();
					
					//If sticky-queue is empty, delete it
					if($(this).closest('.sticky-queue').children().length <= 1) {
						$(this).closest('.sticky-queue').remove();
					} else {
						$(this).remove();
					}
				});
			}
		});
		// Closing a sticky
		$('#'+uniqID).find('.sticky-close').one('click',function() {
			var thisRel = $('#' + $(this).attr('rel'));
			
			stickyData.settings.onClose(stickyData.response);
			thisRel.dequeue().fadeOut(settings['speed'],function(){
				thisRel.find('.sticky-note').removeData();
				thisRel.find('.sticky-minimize').die('click');
				thisRel.find('.sticky-maximize').die('click');
				$(this).removeData('sticky');
				//If sticky-queue is empty, delete it
				if($(this).closest('.sticky-queue').children().length <= 1) {
					$(this).closest('.sticky-queue').remove();
				} else {
					$(this).remove();
				}
			}); 
		});
		// Minimizing a sticky
		$('#'+uniqID).find('.sticky-minimize').live('click',function() {
			var thisRel = $('#' + $(this).attr('rel'));
			var papa = thisRel.find('.sticky-note');
			var ancho = papa.width();
			var alto = papa.height();
			thisRel.data('medidas',{'ancho':ancho,'alto':alto});
			papa.closest('.sticky-video').css('min-height','');
			papa.animate({'width':'32px','height':'0px'});
			thisRel.find('.sticky-minimize').attr('src','/img/misc/stickyMaximize.png')
				.addClass('sticky-maximize').removeClass('sticky-minimize');
		});
		// Restaurate a sticky
		$('#'+uniqID).find('.sticky-maximize').live('click',function() {
			var thisRel = $('#' + $(this).attr('rel'));
			var papa = thisRel.find('.sticky-note');
			var ancho = thisRel.data('medidas').ancho;
			var alto =  thisRel.data('medidas').alto;
			papa.closest('.sticky-video').css('min-height','');
			papa.animate({"width":ancho+"px","height":alto+"px"});
			thisRel.find('.sticky-maximize').attr('src','/img/misc/stickyMinimize.png')
				.addClass('sticky-minimize').removeClass('sticky-maximize');
		});
		
		// Callback function?
		if(callback)
			{callback(response);}
		else
			{return(response);}
		
		}
	})( jQuery );
