// This function deals with clearing and restoring the values
// of a input field
jQuery.fn.resetField = function () {
	return this.focus(function(){
		if (this.value == this.defaultValue) {
			this.value = "";
			this.style.color = "#555555";
		}
	}).blur(function() {
		if ( !this.value.length ) {
			this.value = this.defaultValue;
			this.style.color = "#b3b3b3";
		}
	})
};

// This function limits the number of list items displayed
(function ($) {

	jQuery.fn.hideextra = function (options) {

		var defaults = {
			extraElement: 'li',
			extraClass: 'extra',
			buttonClass: 'showMore',
			maxItems: 4,
			moreText: "Show more...",
			lessText: "Show less..."
		};

		var options = jQuery.extend(defaults, options);

		return this.each(function (listIndex, listInstance) {

			var listItems = jQuery(listInstance).children(options.extraElement);

			for (i = 0; i < listItems.length; i++) {

				if (i > (options.maxItems - 1)) {
					jQuery(listItems[i]).hide();
					jQuery(listItems[i]).addClass(options.extraClass);
				}
			}

			var hiddenLis = jQuery(options.extraElement + '.' + options.extraClass, jQuery(listInstance));

			// Add More/Less Link
			if (listItems.length > options.maxItems) {
				jQuery(listInstance).append('<li><a href="#_" class="' + options.buttonClass + '">' + hiddenLis.length + ' ' + options.moreText + '</a></li>');
			}

			// Add the click events
			var moreLink = jQuery('.' + options.buttonClass, jQuery(listInstance));

			moreLink.click(function () {

				if (moreLink.text().indexOf(options.moreText) > 0) {
					hiddenLis.slideDown();
					moreLink.text(options.lessText);
				}
				else {
					hiddenLis.slideUp();
					moreLink.text(hiddenLis.length + ' ' + options.moreText);
				}
			});

		});

	};

})(jQuery);
