jQuery(document).ready(function() {
	jQuery('span.rolloverSpan').hover(jQuery.fn.rolloverShow, jQuery.fn.rolloverHide);
	jQuery('span.rolloverSpan').click(jQuery.fn.toggleRollover);

	
	jQuery('span.rolloverTop div.rolloverDiv').each(function(){
		spanHeight = jQuery(this).parent().height();
		divHeight = jQuery(this).height();
		divPadding = jQuery(this).css('padding-top');
		
		// the 6 below comes from the border on the div
		jQuery(this).css('margin-top', -(divHeight + spanHeight + (2 * parseInt(divPadding)) + 6) + 'px');
	});
	
	jQuery('span.rolloverLeft div.rolloverDiv').each(function(){
		divWidth = jQuery(this).width();
		jQuery(this).css('margin-left', -(divWidth));
	});
	
});

jQuery.fn.toggleRollover = function() {
	if(jQuery('div.rolloverDiv', this).css('display') != 'none') {
		jQuery('div.rolloverDiv', this).fadeOut('slow');		
	} else {
		jQuery('div.rolloverDiv', this).fadeIn('slow');
	}
}

jQuery.fn.rolloverShow = function() {
	rolloverDelay = jQuery.fn.checkRolloverDelay(this);
	if(rolloverDelay == 0) {
		jQuery.fn.rolloverFadeIn(this);	
	} else {			
		myElement = this;
		this.delayTimeout = setTimeout("jQuery.fn.rolloverFadeIn(myElement);", rolloverDelay);
	}
};

jQuery.fn.rolloverFadeIn = function(self) {
	if(jQuery('div.rolloverDiv', self).css('display') == 'none') {
		jQuery('div.rolloverDiv', self).fadeIn('slow');
	}
}

jQuery.fn.rolloverHide = function() {
	clearTimeout(this.delayTimeout);
	if(jQuery('div.rolloverDiv', this).css('display') != 'none'){
		jQuery('div.rolloverDiv', this).fadeOut('slow');
	}
};

jQuery.fn.checkRolloverDelay = function(element) {
	delay = jQuery(element).attr('id').replace(/rolloverDelay-([0-9]+)/, "$1");
	if(delay == '' || isNaN(parseInt(delay))){
		delay = 0;
	}
	return parseInt(delay);
}

