Rollover = function (selector) {
	this.selector = selector;
	
	this.imgCache = new Array();

	if(selector.indexOf('img') == selector.length - 3 || selector.indexOf('input') == selector.length - 5)	
		this.binds();
	
	Rollover.list.push(this);
}

Rollover.list = new Array();

addOnload =	function () {
		for(var i = 0; i < Rollover.list.length; i++) {
			var rollover = Rollover.list[i];
			var tags = document.getBySelector(rollover.selector);
			if(tags.length > 0) {
				if(tags[0].tagName == 'IMG' || tags[0].tagName == 'INPUT') {	// use img tags, get image source from src attr
					for(var iTag = tags.length - 1; iTag >= 0; iTag--) {
						rollover.cacheSrc(tags[iTag].src);
					}
				} else {	// use div or other tags, get image source from applied CSS
					for(var iTag = tags.length - 1; iTag >= 0; iTag--) {
						tags[iTag].getStyle = Tag_getStyle;
						var src = tags[iTag].getStyle('background-image');
						rollover.cacheSrcCss(src);
					}					
				}
			}
		}
	}


p = Rollover.prototype;

p.cacheSrcCss = function (src) {
	if(src.indexOf("url('") == 0 || src.indexOf('url("') == 0) {	// url('') func with quotes
		this.cacheSrc(src.substring(5, src.length - 2));
	} else {
		this.cacheSrc(src.substring(4, src.length - 1));
	}
}

p.cacheSrc = function (src) {
	if(src.indexOf('-active') > 0)	// don't attempt to cache active images
		return;
		
	this.imgCache.push(Rollover.getImage(src));
	
	var sParts = Rollover.splitSrc(src);
	
	this.imgCache.push(Rollover.getImage(sParts[0] + '-hover.' + sParts[1]));
}

Rollover.getImage = function (src) {
	var image = new Image();
	image.src = src;
	return image;
}

Rollover.splitSrc = function (src) {
	var indexOfDot = src.lastIndexOf('.');
	return [src.substr(0, indexOfDot), src.substr(indexOfDot + 1)];
}

p.binds = function () {
	var ev;
	try {
		ev = Events.get(this.selector, 'onmouseover');
		ev.bind(Rollover.over);
	
		ev = Events.get(this.selector, 'onmouseout');
		ev.bind(Rollover.out);
	} catch(e) {
	}
}

Rollover.over = function (ntevent, ev, tag) {
	if(tag.src.toString().indexOf('-active') > 0)	// don't hover active images
		return false;

	var sParts = Rollover.splitSrc(tag.src.toString());

	tag.src = sParts[0] + '-hover.' + sParts[1];
}

Rollover.out = function (ntevent, ev, tag) {
	if(tag.src.toString().indexOf('-active') > 0)	// don't hover active images
		return false;

	var sParts = tag.src.toString().split('-hover');

	tag.src = sParts[0] + sParts[1];
}