roll = new ubRoll("_on","_off");

// primary object
function ubRoll(overSuffix, outSuffix){
	this.overSuffix = overSuffix;
	this.outSuffix= outSuffix;
	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){
		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){
		//alert(img.name);
		//alert(img.name.substr(0,img.name.lastIndexOf("_")));
		this.images[img.name.substr(0,img.name.lastIndexOf("_"))] = new ubRollImage(img, this.overSuffix, this.outSuffix);
	}		
}

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,overSuffix, outSuffix){
	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  + overSuffix + this.baseSuffix;
	this.outSrc = baseSrc  + outSuffix + 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;
}
