var rollover = {
	overSuffix: '_over',
	onSuffix: '_on',
	ignoreClass: 'current',

	regex: {
		regular: /^(.*)(\.\w{3,4})$/i,
		modified: /^(.*)_(?:on|over)(\.\w{3,4})$/i
	},

	init: function() {
		var elems = $('.rollover');
		elems.mouseover(rollover.onmouseover);
		elems.mouseout(rollover.onmouseout);
		rollover.preload(elems);
	},

	preload: function(sel) {
		sel = $(sel);
		sel.each(function() {
			var elem = $(this);
			var src = elem.attr('src');
			var img = null;

			src = rollover.makeFilename(src);
			src = rollover.makeFilename(src, 'over');
			img = $('<img/>');
			img.attr('src', src);

			src = rollover.makeFilename(src);
			src = rollover.makeFilename(src, 'on');
			img = $('<img/>');
			img.attr('src', src);
		});
	},

	onmouseover: function(e) {
		var img = $(this);
		var src = img.attr('src');
		if (/_on\.png$/.test(src))
			return;
		src = rollover.makeFilename(src, 'over');
		img.attr('src', src);
	},

	onmouseout: function(e) {
		var img = $(this);
		var src = img.attr('src');
		if (/_on\.png$/.test(src))
			return;
		src = rollover.makeFilename(src);
		img.attr('src', src);
	},

	makeFilename: function(name, state) {
		if (state) {
			var suffix = rollover[state + 'Suffix'];
			return name.replace(rollover.regex.regular, '$1' + suffix + '$2');
		}
		return name.replace(rollover.regex.modified, '$1$2');
	}

}

$(rollover.init);

