/* encrypted email for each class "encryptedEmailLink" */
(function($) {
$.fn.yasp = function () {
	$(this).each(function () {
		var textAsASCII = '&#'+$(this).text().replace(/[,]+/g, ";&#")+';';
		if (this.href=='mailto:') 
			$(this).replaceWith('<a href="mailto:'+textAsASCII+'" class="emailLink">'+textAsASCII+'</a>');
		else
			$(this).replaceWith(textAsASCII);
	});	
};
})(jQuery);

/* equal heights */
(function($) {
	$.fn.equalHeights = function(minHeight, maxHeight) {
		tallest = (minHeight) ? minHeight : 0;
		this.each(function() {
			if($(this).height() > tallest) {
				tallest = $(this).height();
			}
		});
		if((maxHeight) && tallest > maxHeight) tallest = maxHeight;
		return this.each(function() {
			//$(this).height(tallest).css("overflow","auto");
			$(this).height(tallest);
		});
	}
})(jQuery);


// Animates the dimensional changes resulting from altering element contents
// Usage examples: 
//	 $("#myElement").showHtml("new HTML contents");
//	 $("div").showHtml("new HTML contents", 400);
//	 $(".className").showHtml("new HTML contents", 400, 
//						  function() {/* on completion */});
(function($)
{
	$.fn.showHtml = function(html, speed, callback)
	{
		return this.each(function()
		{
			// The element to be modified
			var el = $(this);

			// Preserve the original values of width and height - they'll need 
			// to be modified during the animation, but can be restored once
			// the animation has completed.
			var finish = {width: this.style.width, height: this.style.height};

			// The original width and height represented as pixel values.
			// These will only be the same as `finish` if this element had its
			// dimensions specified explicitly and in pixels. Of course, if that 
			// was done then this entire routine is pointless, as the dimensions 
			// won't change when the content is changed.
			var cur = {width: el.width()+'px', height: el.height()+'px'};

			// Modify the element's contents. Element will resize.
			el.html(html);

			// Capture the final dimensions of the element 
			// (with initial style settings still in effect)
			var next = {width: el.width()+'px', height: el.height()+'px'};

			el .css(cur) // restore initial dimensions
				.animate(next, speed, function()  // animate to final dimensions
				{
					el.css(finish); // restore initial style settings
					if ( $.isFunction(callback) ) callback();
				});
		});
	};
})(jQuery);
