42 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
// $Id$
 | 
						|
(function($) {
 | 
						|
 | 
						|
Drupal.behaviors.textarea = {
 | 
						|
  attach: function(context, settings) {
 | 
						|
    $('textarea.resizable:not(.textarea-processed)', context).each(function() {
 | 
						|
      // Avoid non-processed teasers.
 | 
						|
      if ($(this).is(('textarea.teaser:not(.teaser-processed)'))) {
 | 
						|
        return false;
 | 
						|
      }
 | 
						|
      var textarea = $(this).addClass('textarea-processed'), staticOffset = null;
 | 
						|
 | 
						|
      // When wrapping the text area, work around an IE margin bug. See:
 | 
						|
      // http://jaspan.com/ie-inherited-margin-bug-form-elements-and-haslayout
 | 
						|
      $(this).wrap('<div class="resizable-textarea"><span></span></div>')
 | 
						|
        .parent().append($('<div class="grippie"></div>').mousedown(startDrag));
 | 
						|
 | 
						|
      var grippie = $('div.grippie', $(this).parent())[0];
 | 
						|
      grippie.style.marginRight = (grippie.offsetWidth - $(this)[0].offsetWidth) +'px';
 | 
						|
 | 
						|
      function startDrag(e) {
 | 
						|
        staticOffset = textarea.height() - e.pageY;
 | 
						|
        textarea.css('opacity', 0.25);
 | 
						|
        $(document).mousemove(performDrag).mouseup(endDrag);
 | 
						|
        return false;
 | 
						|
      }
 | 
						|
 | 
						|
      function performDrag(e) {
 | 
						|
        textarea.height(Math.max(32, staticOffset + e.pageY) + 'px');
 | 
						|
        return false;
 | 
						|
      }
 | 
						|
 | 
						|
      function endDrag(e) {
 | 
						|
        $(document).unbind("mousemove", performDrag).unbind("mouseup", endDrag);
 | 
						|
        textarea.css('opacity', 1);
 | 
						|
      }
 | 
						|
    });
 | 
						|
  }
 | 
						|
};
 | 
						|
 | 
						|
})(jQuery);
 |