/**
 * zudolab jqRollover
 *
 * @version    1
 * @copyright    (c)2008 Takeshi Takatsudo (http://zudolab.net/)
 * @license    MIT (http://www.opensource.org/licenses/mit-license.php)
 */

(function($){

	jqRollover = function(selector)
	{
		this.selector = selector;
		this.elemSets = [];
		
		/* exec setup when onload */
		var self = this;
		$(function(){ self.setup(); });
	}
	jqRollover.prototype.setup = function()
	{
		this.prepareSets();
		if(!this.elemSets) return;
		this.preploadImgs();
		this.setEvents();
	}
	jqRollover.prototype.prepareSets = function()
	{
		var self = this;
		var $elems = $(self.selector);
		if(!$elems) return;
		$elems.each(function(){ 
			var img = $(this).find("img").eq(0).get(0);
			var imgSrc = img.src;
			if(imgSrc.indexOf("/off/")==-1) return;
			var srcOff = imgSrc;
			var srcOn = imgSrc.replace(/\/off\//,"/on/");
			self.elemSets.push({
				anchor: this,
				img: img,
				srcOff: srcOff,
				srcOn: srcOn
			});
		});
	}
	jqRollover.prototype.setEvents = function()
	{
		var self = this;
		for(var i=0,set; set=this.elemSets[i]; i++){
			$(set.anchor)
				.mouseover(function(){ toOn(this); })
				.focus(function(){ toOn(this); })
				.mouseout(function(){ toOff(this); })
				.blur(function(){ toOff(this); });
		}
		function toOn(anchor){
			var elemSet = self.getElemSetFromAnchor(anchor);
			elemSet.img.src = elemSet.srcOn;
		}
		function toOff(anchor){
			var elemSet = self.getElemSetFromAnchor(anchor);
			elemSet.img.src = elemSet.srcOff;
		}
	}
	jqRollover.prototype.preploadImgs = function()
	{
		for(var i=0,set; set=this.elemSets[i]; i++){
			(new Image).src = set.srcOn;
		}
	}
	jqRollover.prototype.getElemSetFromAnchor = function(anchor)
	{
		for(var i=0,set; set=this.elemSets[i]; i++){
			if(set.anchor==anchor) return set;
		}
	}
	
})(jQuery);

