GoldmanSachs.ImageMouseover = new Class( {
	images : [],
	options : {
		listenToParent : false
	},
	initialize: function (i, options) {
		IMAGE_ON_SUFFIX = '_on';
		IMAGE_DISABLE_SUFFIX = '_dis';
		this.setOptions(options);
		this.image = i;
		this.parent = this.image.getParent();
		if (i.src.indexOf(IMAGE_ON_SUFFIX + '.') > 0) { 
			this.image.overSrc = i.src; 
		} else {
			this.image.overSrc = i.src.substr(0, i.src.lastIndexOf(".")) + IMAGE_ON_SUFFIX + i.src.substr(i.src.lastIndexOf("."), 4);	
		}
		this.image.outImage = Asset.image(this.image.src); 
		this.image.overImage =  Asset.image(this.image.overSrc);
		this.image.isOn = false;
		this.enableMO();
	},
	doSwap : function() {
		if (this.image.isOn) {this.image.src = this.image.outImage.src; this.image.isOn = false;} 
		else { this.image.src = this.image.overImage.src; this.image.isOn = true; }
	},
	doOn : function() {
		this.image.src = this.image.overImage.src; this.image.isOn = true;
	},
	doOff : function() {
		this.image.src = this.image.outImage.src; this.image.isOn = false;
	},
	enableMO: function() {
		(this.image.isOn)? this.image.src = this.image.overImage.src: this.image.src = this.image.outImage.src;
		if (this.options.listenToParent == true) {
			this.parent.addEvent('mouseenter', this.doOn.bind(this));
			this.parent.addEvent('mouseleave', this.doOff.bind(this))
			this.parent.addEvent('click', this.doOff.bind(this));
		} else {
			this.image.addEvent('mouseenter', this.doOn.bind(this));
			this.image.addEvent('mouseleave', this.doOff.bind(this));
			this.image.addEvent('click', this.doOff.bind(this));
		}	
	},
	disableMO: function () {
		this.image.src = this.image.disableImage.src;
		if (this.options.listenToParent == true) {
			this.parent.removeEvent('mouseenter', this.doOn);
			this.parent.removeEvent('mouseleave', this.doOff);
			this.parent.removeEvent('click', this.doOff);
		} else {
			this.image.removeEvent('mouseenter', this.doOn);
			this.image.removeEvent('mouseleave', this.doOff);
			this.image.removeEvent('click', this.doOff);
		}
	}
});
GoldmanSachs.ImageMouseover.implement(new Options)