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 __TabButtons = {};
var __TabPages = {};
var __TabSelected = null;

function __setClassToButton(element) {
	var className = 'TabButton';
	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 __onButtonClick(button) {
	var newSelected = button.getAttribute('tab-button');
	if(__TabSelected==newSelected) return;
	if(__TabSelected) {
		__TabPages[__TabSelected]._selected = false;
		__TabButtons[__TabSelected]._selected = false;
		__setClassToButton(__TabButtons[__TabSelected]);
		__setClassToPanel(__TabPages[__TabSelected]);
	}
	__TabSelected = newSelected;
	__TabPages[__TabSelected]._selected = true;
	__TabButtons[__TabSelected]._selected = true;
	__setClassToButton(__TabButtons[__TabSelected]);
	__setClassToPanel(__TabPages[__TabSelected]);
}
function __onButtonMouseOver(button) {
	button._mouseOver = true;
	__setClassToButton(button);
}
function __onButtonMouseOut(button) {
	button._mouseOver = false;
	__setClassToButton(button);
}

function __loadTabs() {
	var tabButtons = getNodesSuch(
		function(element) {
			return (element.nodeType==1) && (element.getAttribute('tab-button'));
		}
	);
	if(tabButtons.length==0) return;
	var tabPages = getNodesSuch(
		function(element) {
			return element.nodeType==1 && element.getAttribute('tab-page');
		}
	);
	//almaceno botones
	for(var i = 0; i<tabButtons.length; i++) {
		var button = tabButtons[i];
		__TabButtons[button.getAttribute('tab-button')] = button;
		//seleccion
		if(button.getAttribute('selected')) {
			__TabSelected = __TabSelected || button.getAttribute('tab-button');
		}
		button._selected = false;
		__setClassToButton(button);
		//eventos
		button.onclick = function() {__onButtonClick(this);}
		button.onmouseover = function() {__onButtonMouseOver(this);}
		button.onmouseout = function() {__onButtonMouseOut(this);}
	}
	//seleccion default si no se indica otra.
	__TabSelected = __TabSelected || tabButtons[0].getAttribute('tab-button');
	__TabButtons[__TabSelected]._selected = true;
	__setClassToButton(__TabButtons[__TabSelected]);
	//almaceno paginas
	for(var i = 0; i<tabPages.length; i++) {
		var page = tabPages[i];
		var pageName = page.getAttribute('tab-page');
		__TabPages[pageName] = tabPages[i];
		page._selected = false;
		__setClassToPanel(page);
	}
	__TabPages[__TabSelected]._selected = true;
	__setClassToPanel(__TabPages[__TabSelected]);
}

onLoadDo(
	//Carga el tabpanel
	__loadTabs
);
