var RollOvers = {
	_img:				null,
	_cachemouseover:	null,
	_cachemouseout:		null,
	
	deinitialize: function () {
		if (!this._img)
			return;
		for (var iRollOvers = 0; iRollOvers < this._img.length; ++iRollOvers) {
			Event.stopObserving(this._img[iRollOvers], 'mouseover', this._cachemouseover[iRollOvers]);
			Event.stopObserving(this._img[iRollOvers], 'mouseout', this._cachemouseout[iRollOvers]);
		}
		delete this._img;
		delete this._cachemouseover;
		delete this._cachemouseout;
	},
	
	initialize: function () {
		this._img = $$('img[srcover]', 'input[srcover]');
		this._cachemouseover = [];
		this._cachemouseout = [];
		
		var mouseover = function () {
			this.src = this.readAttribute('srcover');
		};
		var mouseout = function (src) {
			this.src = this.readAttribute('srcorg');
		};
		
		for (var iRollOvers = 0; iRollOvers < this._img.length; ++iRollOvers) {
			this._cachemouseover[iRollOvers] = mouseover.bind(this._img[iRollOvers]);
			this._cachemouseout[iRollOvers] = mouseout.bind(this._img[iRollOvers]);
			Event.observe(this._img[iRollOvers], 'mouseover', this._cachemouseover[iRollOvers]);
			Event.observe(this._img[iRollOvers], 'mouseout', this._cachemouseout[iRollOvers]);
			this._img[iRollOvers].writeAttribute('srcorg', this._img[iRollOvers].getAttribute('src'));
		}
		
		Event.observe(window, 'unload', RollOvers.deinitialize.bind(RollOvers));
	}
};	
Event.observe(window, 'load', RollOvers.initialize.bind(RollOvers));
