
var fluffySearch = function( sID, defaultVal ) {
	
	/*
	 * Search box handling
	 */
	jQuery(sID + ' .fluffy-search-input').focus( function() {
		if ( jQuery(this).val() == defaultVal ) {
			jQuery(this).val('');
			jQuery(this).css({color: '#000'});
		}
	});
	
	jQuery(sID + ' .fluffy-search-input').blur( function() {
		if ( !jQuery(this).val() ) {
			jQuery(this).val(defaultVal);
			jQuery(this).css({color: '#aaa'});
		}
	});
	
	if ( !jQuery(sID + ' .fluffy-search-input').val() ) {
		jQuery(sID + ' .fluffy-search-input').blur();
	}


	/* Additional Stuff */
	jQuery(sID + ' .fluffy-search-form').bind('submit', function() {
		jQuery(sID + ' .search-help').mouseout();
	});
	
    jQuery(sID).each(function () {
        var distance = 50;
        var time = 250;
        var hideDelay = 200;
        
        var hideDelayTimer = null;

        var beingShown = false;
        var shown = false;
        var trigger = jQuery('.help-bubble-trigger', this);
        
        jQuery(this).css({position: 'relative'});
        
        var info = jQuery('.search-help', this).css('opacity', 0);


        jQuery([trigger.get(0), info.get(0)]).mouseover(function () {
            if (hideDelayTimer) clearTimeout(hideDelayTimer);
            if (beingShown || shown) {
                // don't trigger the animation again
                return;
            } else {
                // reset position of info box
                beingShown = true;

                info.css({
                    top: 85,
                    left: -10,
                    display: 'block'
                }).animate({
                    top: '-=' + distance + 'px',
                    opacity: 1
                }, time, 'swing', function() {
                    beingShown = false;
                    shown = true;
                });
            }

            return false;
        }).bind('mouseout',function () {
            if (hideDelayTimer) clearTimeout(hideDelayTimer);
            hideDelayTimer = setTimeout(function () {
                hideDelayTimer = null;
                info.animate({
                    top: '-=' + (distance*-1) + 'px',
                    opacity: 0
                }, time, 'swing', function () {
                    shown = false;
                    info.css('display', 'none');
                });

            }, hideDelay);

            return false;
        });
    });
}