
;(function(jQuery) {
	var loaded = {};

	var preLoadImage = function(basename, ext, postfix) {
		var regex = new RegExp(postfix + "$");
		if (!basename.match(regex)) {
			var imgObject = new Image;
			imgObject.onload = function() {
				loaded[basename + ext] = 1;
			}
			imgObject.src = basename + postfix + ext;
		}
	};

	jQuery.fn.dfrollover = function(options) {
		var options = jQuery.extend(
			{},
			jQuery.fn.dfrollover.defaults, 
			options
		);
		this.each(function(){
			var src = jQuery(this).attr("src");
			if (src.match(/^(.+)(\.(?:jpg|gif|png))$/)) {
    			var basename = RegExp.$1;
    			var ext = RegExp.$2;
				if (options.useImage) {
					preLoadImage(basename, ext, options.postfix);
				}
				jQuery(this).hover(
					function(){
						if (loaded[src] == 1) {
							jQuery(this).attr("src", basename + options.postfix + ext);
						} else {
							jQuery(this).fadeTo(0, options.alpha);
						}
					},
					function(){
						jQuery(this).attr("src", src);
						jQuery(this).fadeTo(0, 1);
					}
				);
			}
		});


	};
	jQuery.fn.dfrollover.defaults = {
		useImage: true,
		postfix: "_on",
		useAlpha: true,
		alpha: 0.5
	};

 
})(jQuery);

