var bebeTabs = {
	gradient: function(color1, color2, nb) {
		var R1 = color1.substr(0, 2);
		var G1 = color1.substr(2, 2);
		var B1 = color1.substr(4, 2);
	
		var R2 = color2.substr(0, 2);
		var G2 = color2.substr(2, 2);
		var B2 = color2.substr(4, 2);
	
		var Rs = bebeTabs.primaryGradient(R1, R2, nb);
		var Gs = bebeTabs.primaryGradient(G1, G2, nb);
		var Bs = bebeTabs.primaryGradient(B1, B2, nb);
	
		var colors = [];
		for (var i = 0; i < nb; i++) {
			colors.push('#' + Rs[i] + Gs[i] + Bs[i]);
		}
		return colors;
	},
	
	primaryGradient: function(col1, col2, nb) {
		var cols = [];
		col1 = parseInt(col1, 16);
		col2 = parseInt(col2, 16);
	
		var step = parseInt(
			(Math.max(col1, col2) - Math.min(col1, col2)) /
			(nb - 1)
		);
	
		var col = col1;
		for (var i = 0; i < nb; i++) {
			col = parseInt(col);
			if (col == 0)
				cols.push('00');
			else
				cols.push(col.toString(16));
			
			if (col1 > col2) {
				col = col - step;
			} else {
				col = col + step;
			}
		}
	
		return cols;
	},
	
	addEvent: function(obj, evType, fn) {
		if (obj.addEventListener){
			obj.addEventListener(evType, fn, false);
			return true;
		} else if (obj.attachEvent){
			var r = obj.attachEvent("on"+evType, fn);
			return r;
		} else {
			return false;
		}
	},
	
	getElementsByClass: function(klass, root, tag) {
		//root = root  || document.body;
		root = root  || document.getElementByTagName("body")[0];
		tag = tag || "*";
		
		var out = new Array();
		var elts = root.getElementsByTagName(tag);
		for (var i = 0, l = elts.length; i < l; i++) {
			var node = elts[i];
			if (node.nodeType && node.nodeType == 1) { // == Node.ELEMENT_NODE
				if (node.className) {
					if (bebeTabs.hasClass(node, klass)) {
						out.push(node);
						//out.push(elts[i]);
					}
				}
			}
		}
		
		return out;
	},
	
	hasClass: function(elt, klass) {
		if (elt.className) {
			var klasses = elt.className.split(/\s+/);
			return bebeTabs.in_array(klass, klasses);
		}
		return false;
	},
	
	in_array: function(aValue, aArray) {
		for (var i = 0, l = aArray.length; i < l; i++) {
			if (aArray[i] == aValue) return true;
		}
		return false;
	},

	toggleTab: function(e) {
		e = e || event;
		
		var li;
		
		if (e.target) // W3C event
			li = e.target;
		else if (e.srcElement) // IE event
			li = e.srcElement;
		
		if (e.nodeType && e.nodeType == 1) // elt
			li = e;
		
		// if e integer et tabs[e] existe
		
		var tabs = li.parentNode.getElementsByTagName("li");
		var tabbox = li.parentNode.parentNode;
		
		var selectedIndex;
	
		for (var i = 0; i < tabs.length; i++) {
			if (tabs[i] == li) {
				li.className = "selectedTab";
				selectedIndex = i;
			} else {
				tabs[i].className = "";
			}
		}
		
		var tabpanels = new Array();
		var child = tabbox.firstChild;
		while (child) {
			if (child.tagName && child.tagName.toLowerCase() == 'div'
				&& child.className) {
				
				if (bebeTabs.hasClass(child, 'tabpanel')) {
					tabpanels.push(child);
				}
			}
			child = child.nextSibling;
		}
	
		for (var j = 0, l = tabpanels.length; j < l; j++) {
			if (j == selectedIndex) {
				tabpanels[j].className = "tabpanel tabpanel-selected";
			} else {
				tabpanels[j].className = "tabpanel tabpanel-unselected";
			}
		}
	},
	
	initTabs: function(root/*, forceIndex*/) {
		root = root || document.body;
		var tabs = bebeTabs.getElementsByClass("tabs", root, 'ul');
	
		for (var i = 0, l = tabs.length; i < l; i++) {
			var lis = tabs[i].getElementsByTagName("li");
			var selectedTab;
			for (var j = 0; j < lis.length; j++) {
				lis[j].onclick =  bebeTabs.toggleTab;
				if (bebeTabs.hasClass(lis[j], "selectedTab")) {
					selectedTab = lis[j];
				}
			}
			bebeTabs.toggleTab(selectedTab);
		}
	},
	
	varDump: function(obj) {
		var txt = "";
	
		for (prop in obj) {
			txt += prop + " : " + obj[prop] + "\n";
		}
	
		return txt;
	}
};

bebeTabs.addEvent(window, "load", function() {
	bebeTabs.initTabs(document.getElementById("content"));
});


