$.fn.delay = function(time, callback){
    // Empty function:
    jQuery.fx.step.delay = function(){};
    // Return meaningless animation, (will be added to queue)
    return this.animate({delay:1}, time, callback);
}

// Spotlight scroller plugin
// v 1.0 - James Edmonds, james@threeamdesign.com.au 20/01/2010
// Usage $('.spotlight').spotlight(options);
// Returns a jQuery object

jQuery.fn.spotlight = function(options) {
	var settings = jQuery.extend({
		wrapper: '.spotlight-items',
		items: '.item',
		duration: 100,
		cycle: true,
		constant: false,
		jump: false,
		force: false,
		margin: true
	}, options);
	
	return this.each(function() {
		var target = $(this);
		var parent = target.parent();
		var wrapper = target.find(settings.wrapper).addClass('spotlight-items-wrapper');
		var items = target.find(settings.items);
		var total = items.length;
		
		settings.prev = settings.prev || parent.find('a.previous');
		settings.next = settings.next || parent.find('a.next');
		
		var first = $(items[0]).addClass('first');
		var last = $(items[total - 1]).addClass('last');
		
		target.trigger('onInit', [items]);
		
		var width = 0;
		items.each(function() { width += $(this).outerWidth(); });
		
		target.find(settings.wrapper).width(width);
		target.serialScroll(settings).addClass('spotlight-processed');
	});
};

// Texta text replacement plugin
// v 1.0 James Edmonds, james@threeamdesign.com.au 16/02/2010
// Usage $('.texta').texta(options)
// Returns a jQuery object

jQuery.fn.texta = function(options) {
	var settings = jQuery.extend({
		textaURL: '/texta.php?t='
	}, options);
	return this.each(function() {
		var target = $(this);
		var width = target.width();
		var height = target.height();
		var text = target.text() || target.val();
		var texta = settings.textaURL + encodeURIComponent(text) + '&w=' + width;
		
		var preload = new Image();
		preload.src = texta;
		preload.onload = function() {
			target.css({width: preload.width, height: preload.height, display: 'block'});
			$(this).remove();
		}
		
		var background = "url('" + texta + "')";
		target.css({backgroundImage: background, backgroundPosition: '0 0', backgroundRepeat: 'no-repeat'}).attr('title', text).addClass('texta-processed');
	});
};

// Fading elements plugin
// v 1.0 James Edmonds, james@threeamdesign.com.au 16/02/2010
// Usage $('.fading').fading(options)
// Returns a jQuery object

jQuery.fn.fading = function(options) {

	var settings = jQuery.extend({
		startOpacity: 1,
		endOpacity: 0.5,
		speed: 'normal',
	}, options);
	
	return this.each(function() {
		var target = $(this).fadeTo(0, settings.startOpacity);
		target.hover(
			function() { $(this).fadeTo(settings.speed, settings.endOpacity); },
			function() { $(this).fadeTo(settings.speed, settings.startOpacity); }
		);
	});
};
