var TC_tab_debug = true;
var TC_tab_ie = navigator.userAgent.indexOf("MSIE")!=-1;
var TC_tab_oldmoz = (!TC_tab_ie && navigator.product=="Gecko" && navigator.productSub<20060000);
var TC_tab_refs = new Array();

function init_tab_pane(pane_id,ar_labels, default_tab)
{
	if(arguments.length<3) default_tab = 0;
	var ref = new Array();
	ref["labels"] = ar_labels;
	ref["showhandlers"] = new Array();
	
	//if(TC_tab_ie) window.alert("IEEEE");
	//if(TC_tab_oldmoz) window.alert("Mozilla chungooooo");
	
	var pane = document.getElementById(pane_id);	// es un <table>
	
	// INICIALIZAR LAS ETIQUETAS	
	var row_labels = getFirstChildByTag(pane.rows[0].cells[0],"TABLE").rows[0];	
	ref["n_tabs"] = row_labels.cells.length-1;
	for(var i=0; i<row_labels.cells.length-1; i++)
	{
		var oCell = row_labels.cells[i];
		oCell.className = (i==default_tab?ar_labels["on"]:ar_labels["off"]);		
		dojo.event.connect(oCell,"onclick","event_select_tab");
		dojo.event.connect(oCell,"onmouseover","hl_tab");
		dojo.event.connect(oCell,"onmousemove","insist");
		dojo.event.connect(oCell,"onmouseout","ul_tab");	
	}
	
	// INICIALIZAR LOS CONTENIDOS
	if(ref["n_tabs"]!=pane.rows.length-1 && TC_tab_debug) window.alert("tab "+pane_id+" inconsistente!"); 
	for (var i=1; i<pane.rows.length; i++)
	{
		display_el(pane.rows[i],i-1==default_tab);
		//pane.rows[i].style.visibility=(i-1==default_tab?"visible":"collapse");
		var oContainer = pane.rows[i].cells[0];
		oContainer.style.padding="5px";
		oContainer.style.borderLeftStyle="solid";
		oContainer.style.borderLeftColor="#999999";
		oContainer.style.borderLeftWidth="1px";
		oContainer.style.borderRightStyle="solid";
		oContainer.style.borderRightColor="#999999";
		oContainer.style.borderRightWidth="1px";		
		oContainer.style.borderBottomStyle="solid";
		oContainer.style.borderBottomColor="#999999";
		oContainer.style.borderBottomWidth="1px"
		
	}	
	TC_tab_refs[pane_id] = ref;	
}

// Aņade una llamada a func cuando el tab x se muestra
function add_show_handler(pane_id,x, func)
{
	//	if(typeof(TC_tab_refs[pane_id]["showhandlers"]
	TC_tab_refs[pane_id]["showhandlers"][x] = func;
}

function get_tab_label(pane_id, x)
{
	var pane = document.getElementById(pane_id);
	return getFirstChildByTag(pane.rows[0].cells[0],"TABLE").rows[0].cells[x];
}

function get_tab_wrapper(pane_id, x)
{
	/*
	var pane = document.getElementById(pane_id);
	return getFirstChildByTag(pane.rows[x+1].cells[0],"TABLE");
	*/
	return get_tab_row(pane_id, x);
}

function get_tab_row(pane_id, x)
{
	var pane = document.getElementById(pane_id);
	return pane.rows[x+1];
}

function event_select_tab(evt)
{
	var oCell = get_evtsrc(evt);
	var pane_id = getFirstAncestorByTag(getFirstAncestorByTag(oCell, "TABLE"),"TABLE").id;
	select_tab(pane_id,oCell.cellIndex);	
}

function hl_tab(evt)
{
	var oCell = get_evtsrc(evt);
	var pane_id = getFirstAncestorByTag(getFirstAncestorByTag(oCell, "TABLE"),"TABLE").id;
	var ref = TC_tab_refs[pane_id];
	var tr = oCell.parentNode;
	for(var i=0; i<tr.cells.length-1; i++)
	{
		var cur = tr.cells[i];
		if(i!=oCell.cellIndex && cur.className!=ref.labels.on)
		{
			cur.className = ref["labels"]["off"];
		}
	}
	oCell.className = (oCell.className==ref["labels"]["on"]?ref["labels"]["over_on"]:ref["labels"]["over_off"]);	
}

function insist(evt)
{
/*
	var oCell = get_evtsrc(evt);
	var pane_id = getFirstAncestorByTag(getFirstAncestorByTag(oCell, "TABLE"),"TABLE").id;
	var ref = TC_tab_refs[pane_id];
*/	
}

function ul_tab(evt)
{
	var oCell = get_evtsrc(evt);
	var pane_id = getFirstAncestorByTag(getFirstAncestorByTag(oCell, "TABLE"),"TABLE").id;
	var ref = TC_tab_refs[pane_id];
	oCell.className = ((oCell.className==ref["labels"]["over_on"] ||oCell.className==ref["labels"]["on"] )?ref["labels"]["on"]:ref["labels"]["off"]);
}

function select_tab(pane_id, x)
{
	var ref = TC_tab_refs[pane_id];	
	for (var i=0; i<ref["n_tabs"]; i++)
	{		
		get_tab_label(pane_id, i).className = (x==i?ref["labels"]["on"]:ref["labels"]["off"]);		
		//get_tab_wrapper(pane_id, i).style.visibility = (x==i?"visible":"collapse");		
		display_el(get_tab_wrapper(pane_id,i),x==i);
	}
	if(typeof(ref["showhandlers"][x])=="function")
	{
		ref["showhandlers"][x].call(window);
	}
}

// COMO NO HAY MANERA DE QUE IE Y FF SE ENTIENDAN, TENGO DOS VARIANTES PARA MOSTRAR/OCULTAR UN ELEMENTO
function display_el(el, show)
{
	if(TC_tab_ie || TC_tab_oldmoz)
	{
		el.style.display = (show?"block":"none");
	}
	else
	{
		el.style.visibility = (show?"visible":"collapse");
	}
}

function tab_get_selected_index(pane_id)
{
	var ref = TC_tab_refs[pane_id];	
	for (var i=0; i<ref["n_tabs"]; i++)
	{
		if(get_tab_label(pane_id,i).className==ref["labels"]["on"]) return i;
	}
	return -1;
}

function is_el_displayed(el)
{
	if(TC_tab_ie)
	{
		return el.style.display!="none";	
	}	
	else
	{
		return el.style.visibility=="visible";
	}
}

