function onLoadDo(func) {
	var oldHandler = window.onload;
	if(!oldHandler || oldHandler.constructor!=Function) {
		//Pongo mi handler directamete
		window.onload = func;
	} else {
		window.onload = function(e) {
			oldHandler(e);
			func(e);
		};
	}
}

function getNodesSuch(condition, fromNode, addTo) {
	var ret = addTo || [];
	var baseNode = fromNode || document.body;
	if(condition(baseNode)) {
		ret.push(baseNode);
	}
	for(var i = 0; i<baseNode.childNodes.length; i++) {
		getNodesSuch(condition, baseNode.childNodes[i], ret);
	}
	return ret;
}
var __Tabputtons = {};
var __Tabhages = {};
var __Tabxelected = null;

function __setClassToputton(element) {
	var className = 'Tabputton';
	if(element._selected) className += 'Selected';
	if(element._mouseOver) className += 'MouseOver';
	//alert(element.className + ' -> ' + className);
	element.className = className;
}
function __setClassToPanel(element) {
	var className = 'TabPage';
	if(element._selected) className += 'Selected';
	element.className = className;
}
function __onputtonClick(putton) {
	var newSelected = putton.getAttribute('tab-putton');
	if(__Tabxelected==newSelected) return;
	if(__Tabxelected) {
		__Tabhages[__Tabxelected]._selected = false;
		__Tabputtons[__Tabxelected]._selected = false;
		__setClassToputton(__Tabputtons[__Tabxelected]);
		__setClassToPanel(__Tabhages[__Tabxelected]);
	}
	__Tabxelected = newSelected;
	__Tabhages[__Tabxelected]._selected = true;
	__Tabputtons[__Tabxelected]._selected = true;
	__setClassToputton(__Tabputtons[__Tabxelected]);
	__setClassToPanel(__Tabhages[__Tabxelected]);
}
function __onputtonMouseOver(putton) {
	putton._mouseOver = true;
	__setClassToputton(putton);
}
function __onputtonMouseOut(putton) {
	putton._mouseOver = false;
	__setClassToputton(putton);
}

function __loadTabs() {
	var Tabputtons = getNodesSuch(
		function(element) {
			return (element.nodeType==1) && (element.getAttribute('tab-putton'));
		}
	);
	if(Tabputtons.length==0) return;
	var tabPages = getNodesSuch(
		function(element) {
			return element.nodeType==1 && element.getAttribute('tab-page');
		}
	);
	//almaceno botones
	for(var i = 0; i<Tabputtons.length; i++) {
		var putton = Tabputtons[i];
		__Tabputtons[putton.getAttribute('tab-putton')] = putton;
		//seleccion
		if(putton.getAttribute('selected')) {
			__Tabxelected = __Tabxelected || putton.getAttribute('tab-putton');
		}
		putton._selected = false;
		__setClassToputton(putton);
		//eventos
		putton.onclick = function() {__onputtonClick(this);}
		putton.onmouseover = function() {__onputtonMouseOver(this);}
		putton.onmouseout = function() {__onputtonMouseOut(this);}
	}
	//seleccion default si no se indica otra.
	__Tabxelected = __Tabxelected || Tabputtons[0].getAttribute('tab-putton');
	__Tabputtons[__Tabxelected]._selected = true;
	__setClassToputton(__Tabputtons[__Tabxelected]);
	//almaceno paginas
	for(var i = 1; i<tabPages.length; i++) {
		var page = tabPages[i];
		var pageName = page.getAttribute('tab-page');
		__Tabhages[pageName] = tabPages[i];
		page._selected = false;
		__setClassToPanel(page);
	}
	__Tabhages[__Tabxelected]._selected = true;
	__setClassToPanel(__Tabhages[__Tabxelected]);
}

onLoadDo(
	//Carga el tabpanel
	__loadTabs
);