function TabMenu(){
	
	this.table = document.createElement("TABLE");
	this.beforeShowTab = function(currentTab,newtab){
		if (currentTab==newtab) 
		{
			return false
		}else 
		{
			return true
		}
	};
	this.afterShowTab = function(currentTab){};
	this.defaultTab = 0;
	this.verticalAlign = "top"
	this.container = null;
	this.containerWidth = 240;
	this.containerHeight = 140;
	this.tabWidth = 100;
	this.tabStripes = null;
	this.currentTabIndex = -1;
	this.divs = null;
	
	this.showHelpButton = false;
	this.helpRef = "javascript:void(null);"
	this.helpTarget = null;
	this.helpAlt = "Ver ayuda";
	this.helpButtonWidth = 17;
	
	this.scrollable = false;
	
	this.create = function(){
	
		this.table.cellSpacing = 0;
		this.table.cellPadding = 0;
		
		if(!this.tabStripes)return ;
			
		if(!this.divs){
			this.divs = new Array();
			
			for ( i=0; i<this.tabStripes.length;i++ ){
				divId = this.getTabId(i);
				if((d = document.getElementById(divId))==null){
					d = document.createElement("DIV");
					d.id = divId;
				}
				this.divs[this.divs.length] = d;			
			}
		}
	
		var oRow = this.table.insertRow(0);
		for ( i=0; i<this.tabStripes.length;i++ ){
			var oCell = oRow.insertCell(oRow.cells.length);
			oCell.id = this.cleanName(this.tabStripes[i]);
			oCell.className = "enabledButton";
			oCell.width = (this.tabWidth instanceof Array)?this.tabWidth[i]:this.tabWidth;
			oCell.style.width = (this.tabWidth instanceof Array)?this.tabWidth[i]:this.tabWidth;
			oCell.noWrap = true;
			oCell.appendChild(document.createTextNode(this.tabStripes[i]));
			oCell.onclick =  this.onClickMenu;
			oCell.pane = this;
			
		}
		oCell = oRow.insertCell(oRow.cells.length);
		oCell.className = "emptyCell";
		oCell.innerHTML = "&nbsp;";
		l = this.containerWidth 
		if (this.tabWidth instanceof Array){
			for(var ii=0; ii< this.tabStripes.length;ii++)
				l-= this.tabWidth[ii]
		}else
			l-= ( this.tabWidth * this.tabStripes.length);
		
		if(l>0){oCell.width = l;
		oCell.style.width = l;
		}
		
		oRow = this.table.insertRow(1);
		this.container = oRow.insertCell(0);
		this.container.colSpan = this.tabStripes.length+1;
		this.container.setAttribute("align","center");
		this.container.style.verticalAlign=this.verticalAlign;
		this.container.className = "paneContainer";
		this.container.width = this.containerWidth;
		this.container.height = this.containerHeight;
		for ( i=0; i<this.divs.length;i++ ){		
			this.divs[i].width = this.containerWidth;
			this.divs[i].height = this.containerHeight;
			this.divs[i].style.display = "none";
			
			if(this.scrollable){
				this.divs[i].style.width = this.containerWidth;
				this.divs[i].style.height = this.containerHeight;
				this.divs[i].style.overflow = "scroll";
			}
			this.container.appendChild(this.divs[i]);
		}
		this.showTab(this.defaultTab);
	}
	
	this.getTabId = function(i){
		return "_"+ this.cleanName(this.tabStripes[i]) + "_TAB";
	}
	
	this.showTabByName = function(id){
		for ( i=0; i<this.tabStripes.length;i++ ){
			if(id==this.tabStripes[i]){
				this.showTab(i);
				return;
			}
		}
	}
	
	this.showTab = function(j){

		if(j==this.currentTabIndex)return;
		if (!this.beforeShowTab(this.currentTabIndex,j)) return;
		
		var cells = this.table.rows[0].cells;
		for ( i=0; i<this.tabStripes.length;i++ ){
			if(i==j){
				this.divs[i].style.display = "block";
				cells[i].className = "disabledButton";
				if (this.showHelpButton)
					this.addHelpButton(cells[i]);
			}else{
				this.divs[i].style.display = "none";
				cells[i].className = "enabledButton";
				if (this.showHelpButton)
					this.removeHelpButton(cells[i]);
			}
		}
		this.currentTabIndex = j;
		this.afterShowTab(this.currentTabIndex)
	}
	
	this.appendTo = function(obj){
		if (document.getElementById(obj))
			document.getElementById(obj).appendChild(this.table);
	}
	
	this.onClickMenu = function(element){
		if (!(element)) {
		  	element = window.event.srcElement;   
		}else
		{
			element = findObject(element.target,"TD");
		}
		if(element!=null)
			this.pane.showTab(element.cellIndex);
	}
	
	this.cleanName = function(name) {
			// replace sensitive characters.
			name = name.replace("=","e");
			name = name.replace(".","d");
			name = name.replace(" ","_");
name = name.replace("\u0080","");//?->128  
name = name.replace("\u0081","");//?->129  
name = name.replace("\u0082","");//?->130  
name = name.replace("\u0083","");//?->131  
name = name.replace("\u0084","");//?->132  
name = name.replace("\u0085","");//?->133  
name = name.replace("\u0086","");//?->134  
name = name.replace("\u0087","");//?->135  
name = name.replace("\u0088","");//?->136  
name = name.replace("\u0089","");//?->137  
name = name.replace("\u008a","");//?->138  
name = name.replace("\u008b","");//?->139  
name = name.replace("\u008c","");//?->140  
name = name.replace("\u008d","");//?->141  
name = name.replace("\u008e","");//?->142  
name = name.replace("\u008f","");//?->143  
name = name.replace("\u0090","");//?->144  
name = name.replace("\u0091","");//?->145  
name = name.replace("\u0092","");//?->146  
name = name.replace("\u0093","");//?->147  
name = name.replace("\u0094","");//?->148  
name = name.replace("\u0095","");//?->149  
name = name.replace("\u0096","");//?->150  
name = name.replace("\u0097","");//?->151  
name = name.replace("\u0098","");//?->152  
name = name.replace("\u0099","");//?->153  
name = name.replace("\u009a","");//?->154  
name = name.replace("\u009b","");//?->155  
name = name.replace("\u009c","");//?->156  
name = name.replace("\u009d","");//?->157  
name = name.replace("\u009e","");//?->158  
name = name.replace("\u009f","");//?->159  
name = name.replace("\u00a0","");// ->160  
name = name.replace("\u00a1","");//?->161  
name = name.replace("\u00a2","");//?->162  
name = name.replace("\u00a3","");//?->163  
name = name.replace("\u00a4","");//?->164  
name = name.replace("\u00a5","");//?->165  
name = name.replace("\u00a6","");//?->166  
name = name.replace("\u00a7","");//?->167  
name = name.replace("\u00a8","");//?->168  
name = name.replace("\u00a9","");//?->169  
name = name.replace("\u00aa","");//?->170  
name = name.replace("\u00ab","");//?->171  
name = name.replace("\u00ac","");//?->172  
name = name.replace("\u00ad","");//?->173  
name = name.replace("\u00ae","");//?->174  
name = name.replace("\u00af","");//?->175  
name = name.replace("\u00b0","");//?->176  
name = name.replace("\u00b1","");//?->177  
name = name.replace("\u00b2","");//?->178  
name = name.replace("\u00b3","");//?->179  
name = name.replace("\u00b4","");//?->180  
name = name.replace("\u00b5","");//?->181  
name = name.replace("\u00b6","");//?->182  
name = name.replace("\u00b7","");//?->183  
name = name.replace("\u00b8","");//?->184  
name = name.replace("\u00b9","");//?->185  
name = name.replace("\u00ba","");//?->186  
name = name.replace("\u00bb","");//?->187  
name = name.replace("\u00bc","");//?->188  
name = name.replace("\u00bd","");//?->189  
name = name.replace("\u00be","");//?->190  
name = name.replace("\u00bf","");//?->191  
name = name.replace("\u00c0","A");//?->192 
name = name.replace("\u00c1","A");//?->193 
name = name.replace("\u00c2","A");//?->194 
name = name.replace("\u00c3","A");//?->195 
name = name.replace("\u00c4","A");//?->196 
name = name.replace("\u00c5","A");//?->197 
name = name.replace("\u00c6","A");//?->198 
name = name.replace("\u00c7","C");//?->199 
name = name.replace("\u00c8","E");//?->200 
name = name.replace("\u00c9","E");//?->201 
name = name.replace("\u00ca","E");//?->202 
name = name.replace("\u00cb","E");//?->203 
name = name.replace("\u00cc","I");//?->204 
name = name.replace("\u00cd","I");//?->205 
name = name.replace("\u00ce","I");//?->206 
name = name.replace("\u00cf","I");//?->207 
name = name.replace("\u00d0","D");//?->208 
name = name.replace("\u00d1","N");//?->209 
name = name.replace("\u00d2","O");//?->210 
name = name.replace("\u00d3","O");//?->211 
name = name.replace("\u00d4","O");//?->212 
name = name.replace("\u00d5","O");//?->213 
name = name.replace("\u00d6","O");//?->214 
name = name.replace("\u00d7","");//?->215  
name = name.replace("\u00d8","O");//?->216 
name = name.replace("\u00d9","U");//?->217 
name = name.replace("\u00da","U");//?->218 
name = name.replace("\u00db","U");//?->219 
name = name.replace("\u00dc","U");//?->220 
name = name.replace("\u00dd","Y");//?->221 
name = name.replace("\u00de","b");//?->222 
name = name.replace("\u00df","b");//?->223 
name = name.replace("\u00e0","a");//?->224 
name = name.replace("\u00e1","a");//?->225 
name = name.replace("\u00e2","a");//?->226 
name = name.replace("\u00e3","a");//?->227 
name = name.replace("\u00e4","a");//?->228 
name = name.replace("\u00e5","a");//?->229 
name = name.replace("\u00e6","");//?->230  
name = name.replace("\u00e7","c");//?->231 
name = name.replace("\u00e8","e");//?->232 
name = name.replace("\u00e9","e");//?->233 
name = name.replace("\u00ea","e");//?->234 
name = name.replace("\u00eb","e");//?->235 
name = name.replace("\u00ec","i");//?->236 
name = name.replace("\u00ed","i");//?->237 
name = name.replace("\u00ee","i");//?->238 
name = name.replace("\u00ef","i");//?->239 
name = name.replace("\u00f0","");//?->240  
name = name.replace("\u00f1","n");//?->241 
name = name.replace("\u00f2","o");//?->242 
name = name.replace("\u00f3","o");//?->243 
name = name.replace("\u00f4","o");//?->244 
name = name.replace("\u00f5","o");//?->245 
name = name.replace("\u00f6","o");//?->246 
name = name.replace("\u00f7","");//?->247  
name = name.replace("\u00f8","");//?->248  
name = name.replace("\u00f9","u");//?->249 
name = name.replace("\u00fa","u");//?->250 
name = name.replace("\u00fb","u");//?->251 
name = name.replace("\u00fc","u");//?->252 
name = name.replace("\u00fd","y");//?->253 
name = name.replace("\u00fe","b");//?->254 
name = name.replace("\u00ff","y");//?->255 
		return name;
	}
	
	this.addHelpButton = function(cell){
		var ref = this.helpRef.replace("%r",cell.id);
		var a = document.createElement("A");
		a.setAttribute("href",ref);
		if(this.helpTarget)
			a.setAttribute("target",this.helpTarget);
		var img = document.createElement("IMG");
		img.setAttribute("width",this.helpButtonWidth);
		img.setAttribute("src", "images/help.gif");
		img.setAttribute("border", "0");
		img.setAttribute("alt",this.helpAlt);
		img.className = "helpButton";
		a.appendChild(img);
		cell.appendChild(a);
		cell.onclick = null;
	}
	
	this.removeHelpButton = function(cell){
		if(cell.childNodes.length>1)
			cell.removeChild(cell.childNodes[1]);
		cell.onclick = this.onClickMenu;
	}	
	
	
	

}

function findObject(e,tagName){
	if (e.tagName == tagName) {
		return e;
	} else if (e.tagName == "BODY") {
		return null;
	} else {
		return findObject(e.parentNode,tagName);
	}
}