/*
 * rx.images for jQuery
 * 
 * $(..).preload(array||string)
 * Allow you to preload single (string) or multiple (array) images
 *  
 * $(..).rollover(options)
 * Allow you to easily add rollover for your image
 *
 * Copyright (c) 2008 Maxime Thirouin (moox.fr)
 *
 * @version 1.2
 */

(function($) {
    //If the rx scope is not available, add it
    $.rx = $.rx || {};

    $.rx.Images = {
		preload : function (imgs, path) {
			path = path||'';
	        if (imgs instanceof Array) {
	    		for(var i=0; i<imgs.length; i++) {
	    			var tmp = new Image();
	    			tmp.src = path+imgs[i];
	    			//Mx.Images.prelist.push(tmp);
	    		}
	        } else {
	            var tmp = new Image();
	            tmp.src = path+imgs;
	            return tmp;
	        }
		},
		rollover : function(elem, options) {
			var dot, slash, ext='', path='';
			var jEleme = jQuery(elem);
			var src = jEleme.attr('src');
			
			options = options||{};
			options.name = options.name||false;
			options.completeName = options.completeName||false;
			
			if (!options.completeName) {
				dot = src.lastIndexOf('.');
				if (dot == -1) {
					dot = src.length + 1;
				} else {
					ext = src.substr(dot, src.length-dot);
				}
				slash = 0;
				path = "/";
				if (options.name) {
					options.prefixe = '';
					options.suffixe = '';
					name = options.name;
				} else {
					options.prefixe = options.prefixe||'';
					options.suffixe = options.suffixe||'-on';
		            var name = src.substring(slash+1, dot);
					//Not already in over stat?
					if (name == src.substring(slash + 1, dot - 3) + options.suffixe) {
						return false;
					}
				}
			}
			if (name != '') {
				elem.originalImg = jEleme.attr('src');
				elem.overImg = jQuery.rx.Images.preload(path+options.prefixe+ name + options.suffixe + ext);
				jQuery(elem).bind('mouseover', function(){
					if (this.overImg.complete) {
						jQuery(this).unbind('mouseover').bind('mouseover', function(){
							this.src = this.overImg.src;
						});
						this.src = this.overImg.src;
					}
				});
				jQuery(elem).bind('mouseout', function(){
					this.src = this.originalImg;
				});
			}
		}
	};

    
    $.fn.rollover = function(options){
		jQuery(this).each(function() {
			jQuery.rx.Images.rollover(this, options);
		});
        return this;
    };

})(jQuery);