function init_tableau(tab){
	var tabE=document.getElementById(tab);
	var widths=new Array();
	var i;
	//INIT des widths
	var ths=tabE.getElementsByTagName("th");
	
	var header=getElt(tabE,true, tab) + '<tr>'
	for(i=0;i<ths.length;i++){
		widths.push(ths[i].offsetWidth);
		header+=getElt(ths[i],false, tab);
	}
	header+="</tr></table>";
	tabE.firstChild.removeChild(ths[0].parentNode);
	
	tabE.parentNode.innerHTML=header + "<div>" + tabE.parentNode.innerHTML + "</div>";
	
	tabE=document.getElementById(tab);
	var tabH=tabE.parentNode.parentNode.firstChild;
	
	ths=tabH.getElementsByTagName("th");
	for(i=0;i<ths.length;i++){
		if(i==ths.length - 1)
			ths[i].style.width=widths[i] + 20 + "px";
		else
			ths[i].style.width=widths[i] + "px";
	}
	var tds=tabE.getElementsByTagName("tr")[1].getElementsByTagName("td");
	for(i=0;i<tds.length;i++){
		tds[i].style.width=widths[i] + "px";
	}
	if(tabE.parentNode.offsetHeight>500){
		tabE.parentNode.style.height="500px";
		tabE.parentNode.style.overflowY="scroll";
		tabE.parentNode.style.overflowX="hidden";
	}else{
		tabE.parentNode.style.height="auto";
		tabE.parentNode.style.overflowY="";
		tabE.parentNode.style.overflowX="";
	}
	
	
}
function getElt(elt,deb, tab){
	var txt="";
	txt+="<" + elt.nodeName;
	var attr=elt.attributes;
	if(attr)
		for(var i=0;i<attr.length;i++){
			if( attr[i].nodeName=="class" || attr[i].nodeName=="style" ){
				txt+=" " + attr[i].nodeName + "=\"" + attr[i].nodeValue;
				txt+= "\"";
			}
		}
	if(elt.nodeName.toLowerCase() == "th"){
		txt+=' id="list_' + slugify(tab) + '_' + slugify(elt.innerHTML) + '" onclick="lookListRef(\'' + slugify(tab) + '_' + slugify(elt.innerHTML) + '\')" ';
	}
	txt +=">";
	if(deb==false){
		txt +=elt.innerHTML;
		txt +="</" + elt.nodeName + ">";
	}
	return txt;
}


function lookListRef(id){
	
	 var list=document.getElementById(id);
	 var th=document.getElementById('list_' + id);
	 
	 if(list && th){
		if(list.style.display=="block"){
			hideLists();	
		}else{
			hideLists();
			var pos=getTopAndLeft(th);
			list.style.overflowY="";
			list.style.display="block";
			var h = list.offsetHeight;
			list.style.display="none";
			if(h <= 200){
				list.style.height="auto";
				list.style.width=parseInt(th.style.width) - 3 + "px";
			}else{
				list.style.height="200px";
				list.style.width=parseInt(th.style.width) + 17 + "px";
				list.style.overflowY="auto";
			}
			list.style.top=pos[0] + 30 + "px";
			list.style.left=pos[1] + "px";
			list.style.display="block";
		}
	 }
}
var myRequest=null;
function filtrerListRef(value, tab, i){
	if(myRequest!=null)
		myRequest.cancel();
	myRequest = new Request({url: 'getTabRef.php', method: 'get', onSuccess: function(responseText, responseXML) {
		hideLists();
   	 	document.getElementById(tab).parentNode.parentNode.innerHTML=responseText; 
		init_tableau(tab);
		resize();
	}}).send('tab=' + tab + '&tabi=' + i + '&value=' + value);

}
function hideLists(){
	var lists=getElementsByClassName("listOptionsRef", document.getElementById("contenu_div"), "ul");
	for(var i=0;i<lists.length;i++){
		lists[i].style.display="none";
	}
}
function resetTabRef(tab){
	if(myRequest!=null)
		myRequest.cancel();
	myRequest = new Request({url: 'getTabRef.php', method: 'get', onSuccess: function(responseText, responseXML) {
		hideLists();
   	 	document.getElementById(tab).parentNode.parentNode.innerHTML=responseText; 
		init_tableau(tab);
		resize();
	}}).send('tab=' + tab + '&reset=true');
}

function getTopAndLeft(e){
	var left = 0;
	var top = 0;
	while (e != undefined && e != null){
		if(e.id=="page"){
			e=null;
		}else{
		left += e.offsetLeft + (e.clientLeft != null ? e.clientLeft : 0);
		top += e.offsetTop + (e.clientTop != null ? e.clientTop : 0);
		e = e.offsetParent;
		}
	}
	return new Array(top, left);
}
function getElementsByClassName(searchClass, node, tag){
	var classElements = new Array();
	if (node == null){
		node = document;
	}
	if (tag == null){
		tag = '*';
	}
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp("(^|\\s)" + searchClass + "(\\s|$)");
	for (var i = 0, j = 0; i < elsLen; i++){
		if (pattern.test(els[i].className)){
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

function slugify(str){
  str = str.replace(/^\s+|\s+$/g, '') // trim
	.replace(/\W+/g, ' ') // remove invalid chars
  	.replace(/^\s+|\s+$/g, '') //trim
    .replace(/\s+/g, '_') // collapse whitespace and replace by -
    .toLowerCase();
  return str;
}
