Base_StdImageMenu = function(menuId){
	
	this.menuId = menuId;
	this.imageDir = '';
	this.imagePrefix = 'menu_';
	this.imageExtension = '';
	this.selected = null;
	this.useCollage = false;
	this.offsets = new Array();
	this.states = new Array();
	this._menuObj = document.getElementById(this.menuId);
	this._menuItems = new Array();
	
	this.init = function(){
		this._menuItems = this._menuObj.getElementsByTagName('a');
		var link, state, menu = this;
		
		for(var i=0;i<this._menuItems.length;i++){
			link = this._menuItems[i];
			
			for(var j=0;j<this.states.length;j++){
				state = this.states[j];
				
				switch(state){
					case 'active':
						link.onmousedown = function(e){menu.eventMouseDown(e);};
						link.onmouseup = function(e){menu.eventMouseUp(e);};
					break;
					case 'hover':
						link.onmouseover = function(e){menu.eventMouseOver(e);};
						link.onmouseout = function(e){menu.eventMouseOut(e);};
					break;
				}
			}
		}
	}
	
	this.changeItemState = function(item,state){
		var imgState;
		var link = this._menuItems[item];
		
		if(this.useCollage){
			link.style.backgroundPosition = (-this.offsets[item][state])+'px 0px';
		}
		else{
			if(this.selected == item){
				if(state == '_default') imgState = 'selected';
				else imgState = 'selected_'+state;
			}
			else{
				if(state == '_default') imgState = 'unselected';
				else imgState = 'unselected_'+state;
			}
			
			var img = this.imageDir+'/'+this.imagePrefix+item+'_'+imgState+this.imageExtension;
			link.style.backgroundImage = 'url('+img+')';
		}
	}
	
	this.restoreItemState = function(item){
		this.changeItemState(item,'_default');
	}
	
	this.getItemByIndex = function(index){
		return (typeof this._menuItems[index] == 'undefined')?null:this._menuItems[index];
	}
	
	this.setImageDir = function(uri){
		this.imageDir = uri;
	}
	
	this.setImagePrefix = function(prefix){
		this.imagePrefix = prefix;
	}
	
	this.setImageExtension = function(ext){
		this.imageExtension = ext;
	}
	
	this.setUseCollage = function(use){
		this.useCollage = use;
	}
	
	this.setStates = function(states){
		this.states = states;
	}
	
	this.setOffsets = function(offsets){
		this.offsets = offsets;
	}
	
	this.setSelected = function(item){
		this.selected = item;
	}
	
	this.eventMouseDown = function(e){
		var i = this._resolveMenuItemIndex(e);
		this.changeItemState(i,'active');
	}
	
	this.eventMouseUp = function(e){
		var i = this._resolveMenuItemIndex(e);
		this.restoreItemState(i);
	}
	
	this.eventMouseOver = function(e){
		var i = this._resolveMenuItemIndex(e);
		this.changeItemState(i,'hover');
	}
	
	this.eventMouseOut = function(e){
		var i = this._resolveMenuItemIndex(e);
		this.restoreItemState(i);
	}
	
	this._resolveMenuItemIndex = function(e){
		var t;
		if (!e) e = window.event;
		
		if (e.target) t = e.target;
		else if (e.srcElement) t = e.srcElement;
		else return null;

		if(t){
			if(t.nodeName.toLowerCase() == 'img') t = t.parentNode;
			
			for(var i=0;i<this._menuItems.length;i++){
				if(this._menuItems[i] == t) return i;
			}
		}
	}
}