function attachEventListener(target,eventType,functionRef,capture){
	// test for standards based event listener
	if (typeof target.addEventListener != "undefined"){
		target.addEventListener(eventType,functionRef,capture);
	}
	// else test for explorer event listener
	else if (typeof target.attachEvent != "undefined"){
		
		var functionString = eventType + functionRef;
		target["e" + functionString] = functionRef;
		
		target[functionString] = function(event){
			if (typeof event == "undefined"){
				event = window.event;
			}
			target["e" + functionString](event);
		};
		
		target.attachEvent("on" + eventType, target[functionString]);
	}
	// else do it the old fashioned way
	else {
		eventType = "on" + eventType;
		
		if (typeof target[eventType] == "function"){
			var oldListener = target[eventType];
			
			target[eventType] = function(){
				oldListener();
				return functionRef();
			};
		}
		else {
			target[eventType] = functionRef;
		}
	}
}

function $() {
  var elements = new Array();

  for (var i = 0; i < arguments.length; i++) {
    var element = arguments[i];
    if (typeof element == 'string')
      element = document.getElementById(element);

    if (arguments.length == 1) 
      return element;

    elements.push(element);
  }

  return elements;
}

function rolloverFunction(){
	var upImages = document.getElementsByTagName("img");
	var overImages = new Array();
	// loads rollover images and sets up event listeners
	for (var i = 0; i < upImages.length; i++){
		if ($(upImages[i]).className == "rollovers"){
			
			var upImage = $(upImages[i]);
			var upImageSrc = upImage.getAttribute('src');
			// grab the up image src
	    var imageType = upImageSrc.substring(upImageSrc.lastIndexOf('.'), upImageSrc.length);
	    // compute the over image src
	    var overImageSrc = upImageSrc.replace(imageType, '_o'+imageType);
	    
	    // assign new image object to that src
			overImages[i] = new Image();
			overImages[i].src = overImageSrc;
			attachEventListener(upImage,"mouseover",rolloverImageChange,false);
			attachEventListener(upImage,"mouseout",rolloffImageChange,false);
		}
	}
	
	function rolloverImageChange(){
		var curImage = $(this.id);
		var curImageSrc = curImage.getAttribute('src');
    var imageType = curImageSrc.substring(curImageSrc.lastIndexOf('.'), curImageSrc.length);
    var newImageSrc = curImageSrc.replace(imageType, '_o'+imageType);
    curImage.src = newImageSrc;
	}
	
	function rolloffImageChange(){
		var curImage = $(this.id);
		var curImageSrc = curImage.getAttribute('src');
		var newImageSrc = curImageSrc.replace("_o.",".");
		curImage.src = newImageSrc;
	}
	
}

attachEventListener(window,"load",rolloverFunction,false);
