
		roll = new ubRoll()
		
		// primary object
		function ubRoll(){
			this.images = new Object()
			this.initialized = false;
		}
		
		// out and over methods
		ubRoll.prototype.over = ubRollOver;
		function ubRollOver(imgName){
			if(this.initialized){
				this.images[imgName].over();
			}
		}
		
		ubRoll.prototype.out = ubRollOut;
		function ubRollOut(imgName){
			if(this.initialized){
				this.images[imgName].out();
			}
		}		
		
		// initialize roll object by mapping named images
		ubRoll.prototype.init = ubRollInit;
		function ubRollInit(){
			if(document.layers){
				for(var i = 0; i < document.images.length; i++){
					this.mapImage(document.images[i]);
				}
				for(var i = 0; i < document.layers.length; i++){
					this.map(document.layers[i]);
				}
			}
			else if(document.getElementById){
				var imgs = document.getElementsByTagName("img");
				for(var i = 0; i < imgs.length; i++){
					this.mapImage(imgs[i]);
				}			
			}
			else if(document.all && !document.getElementById){
				for(var i = 0; i < document.images.length; i++){
					this.mapImage(document.images[i]);
				}				
			}			
			this.initialized = true;
		}
		
		// map images
		ubRoll.prototype.mapImage = ubRollMapImage;
		function ubRollMapImage(img){
			if(img.name.indexOf("_ROLL") != -1){
				this.images[img.name.substr(0,img.name.lastIndexOf("_"))] = new ubRollImage(img);
			}		
		}
		
		ubRoll.prototype.map = ubRollMap;
		function ubRollMap(div){
			if(document.layers){
				for (var i =0; i < div.document.images.length; i++){
					this.mapImage(div.document.images[i])
				}
				for (var i =0; i < div.document.layers.length; i++){
					this.map(div.document.layers[i])
				}
			}
		}		
		
		function ubRollImage(img){
			this.img = img;
			var lastDotPos = this.img.src.lastIndexOf(".");
			this.baseSuffix = this.img.src.substr(lastDotPos);
			var baseSrc = this.img.src.substr(0,this.img.src.lastIndexOf("_"));
			this.overSrc = baseSrc  + "_on" + this.baseSuffix;
			this.outSrc = baseSrc  + "_off" + this.baseSuffix;
			// alert(this.overSrc + " : over \r" + this.outSrc + " : out"); // : nice debug tool 
			var preload = new Image(); 
			preload.src = this.overSrc;
			var preloadOut = new Image();
			preloadOut.src = this.outSrc;
		}
		
		ubRollImage.prototype.over = ubRollImageOver
		function ubRollImageOver(){
			this.img.src = this.overSrc;
		}
		
		ubRollImage.prototype.out = ubRollImageOut
		function ubRollImageOut(){
			this.img.src = this.outSrc;
		}