function Rollover(){

}

/**
setting for time to wait before checking if preload worked (in ms)
*/
Rollover.wait_for_preload=2000;
	
/**
installs rollovers on images which fit the naming scheme
*/
Rollover.install= function(){

	
	var imgs = document.getElementsByTagName('img');
	for (var i=0;i<imgs.length;i++){
		if (imgs[i].src.match(/_ro\..*$/i)){
			var img=imgs[i];
			img.i_src=img.src;
			img.r_src=img.i_src.replace(/_ro\./i,"_over.");
			event_install(img,"onmouseover",function(){this.src=this.r_src;});
			event_install(img,"onmouseout",function(){this.src=this.i_src;});
			Rollover.preload(img.i_src);
			Rollover.preload(img.r_src);
		}
	}

}
	
	
	


/**
preload an arbitrary src
*/
Rollover.preload=function(src){
	var img = new Image();
	
	//test for success
	//img.onerror would be easiest but mozilla does not support it for local files
	img.onload=function(){this.loaded=true;};
	window.setTimeout(function(){Rollover.check_loaded(img)},Rollover.wait_for_preload)	;
	
	img.src=src;
	
}

/**
show developer error for any image which doesnt preload
*/
Rollover.check_loaded=function(img){
	/*if (!img.loaded){
		alert("Image "+img.src.split("/").pop()+" does not exist but rollover wants to preload it. Full path is:\n"+img.src);
	}*/

}

//install this onload
event_install(window,"onload",Rollover.install);
function event_install(obj,event_name,f){
	if (obj.addEventListener){	//W3C
		obj.addEventListener(event_name.substr(2), f,false);
	}else if (obj.attachEvent){	 //IE 
		obj.attachEvent(event_name, function(){obj._f=f;obj._f();obj_f=null});
	}
}