﻿var oldBackColors=new Array();
var oldColors=new Array();
var currentSelect=-1; //contains the current opened box
var currentMaxWidth=-1;
var mouseOnSelectBox=false;


/* FUNCTION THAT INITIALISE THE BOXES */
function sb_init(){
    var tabTmp = new Array();
    tabTmp = getElementsByName_iefix("input","sb_init");
    for (i=0; i<tabTmp.length; i++) {
        var chaine=tabTmp[i].value;
        var params=chaine.split(";");
        selectbox_content=document.getElementById('selectbox_content_'+params[0]);
        //inputbox_content=document.getElementById('selectbox_'+id);
        //inputbox_content.value=params[1];

        if(params[1].length>18){
            params[1]=params[1].substr(params[1],18);
            params[1]+="...";
        }
        selectbox_content.innerHTML = params[1];        
    }
}


/* FUCNTION THAT REMOVE ALL CHILDNODES */
function sb_clear(currentSelect){
    selectbox_bottom=document.getElementById('selectbox_bottom_'+currentSelect);    
    while(selectbox_bottom.childNodes.length>0){
        selectbox_bottom.removeChild(selectbox_bottom.childNodes[0]);
    }
}





/* FUNCTION THAT OPEN THE SELECT BOX */
function open_div(object) {
	//close another opened select box
	if(currentSelect!=-1){
        selectbox_bottom=document.getElementById('selectbox_bottom_'+currentSelect);
        selectbox_bottom.style.display='none';
	}
	id=getSelectNumberId(object.id);
	if(currentSelect==id){
	    currentSelect=-1;
	}else{
        selectbox_bottom=document.getElementById('selectbox_bottom_'+id);
        if(arguments[1]) currentMaxWidth=arguments[1];
        else currentMaxWidth=-1;

        selectbox_bottom.style.display='block';        
        selectbox_bottom.style.zIndex = 100;
        currentSelect=id;
		if(id==5){
			selectbox_bottom.style.left = "-46px";	
		}
		
		//browse the children
		for(i=0;i<selectbox_bottom.childNodes.length;i++){
			if(selectbox_bottom.childNodes[i].tagName=="DIV"){
//				childNodes[i].style.width = selectbox_bottom.style.width;
				if(id==5){
					if(document.all) selectbox_bottom.childNodes[i].style.width = "198px";
					else selectbox_bottom.childNodes[i].style.width = "170px";					
				}else{
					if(document.all) selectbox_bottom.childNodes[i].style.width = "148px";
					else selectbox_bottom.childNodes[i].style.width = "120px";
				}
			}
		}
		
    }
}

/* FUNCTION THAT COLSE THE OPENED SELECT BOX */
function sbhide(){
    if((currentSelect!=-1)&&(!mouseOnSelectBox)){
        selectbox_bottom=document.getElementById('selectbox_bottom_'+currentSelect);
        selectbox_bottom.style.display='none';
//        selectbox_bottom.style.left='-1000px';
//        selectbox_bottom.style.top='-1000px';
        currentSelect=-1;
    }
}

function sbOver(object){
	mouseOnSelectBox=true;
}

function sbOut(object){
	mouseOnSelectBox=false;
}



function out_div(object){
	object.style.left="-1000px";
	object.style.top="-1000px";
}



function getSelectNumberId(name){
    return name.substr(name.lastIndexOf('_')+1);
}

function auto_length(){
    tableau=getElementsByClass("selectbox_bottom");
    for(i=0;i<tableau.length;i++){
        obj=tableau[i];
        name= "selectbox_content_"+getSelectNumberId(tableau[i].id);
        document.getElementById(name).style.width=  parseInt(obj.offsetWidth-29)+'px';
        for(x=0;x<document.getElementById(name).childNodes.length;x++){
            if(document.getElementById(name).childNodes[x].tagName=="div") 
                document.getElementById(name).childNodes[x].style.width='500px';
        }
       
    }
}

function sbitem_select(valeur,object){
	id=getSelectNumberId(object.parentNode.id);
    selectbox_bottom=document.getElementById('selectbox_bottom_'+id);
    selectbox_content=document.getElementById('selectbox_content_'+id);
    inputbox_content=document.getElementById('selectbox_'+id);
    inputbox_content.value=valeur;
    
    var chaine = object.innerHTML;
    if((currentMaxWidth!=-1)&&(chaine.length>currentMaxWidth)){
        chaine=chaine.substr(chaine,currentMaxWidth);
        chaine+="...";
    }
    
    selectbox_content.innerHTML = chaine;
    selectbox_bottom.style.display = 'none';
//    selectbox_bottom.style.left="50px";
//    selectbox_bottom.style.top="-1000px";
}


function sbitem_over(id) {
    oldBackColors[id]=id.style.backgroundColor;
    oldColors[id]=id.style.color;
	id.style.backgroundColor='#BDBDBD';
	id.style.color='#FFFFFF';
}

function sbitem_out(id) {
	id.style.backgroundColor=oldBackColors[id];
	id.style.color=oldColors[id];
}


function generateSelect(){
	var elem=document.getElementsByTagName("select");
    for(var i=0;i<elem.length;i++){
		generateFromSelect(elem[i]);
    }	
}



function generateFromSelect(obj){
	var id = Math.round(Math.random()*10000)+56;
	
	//generate new from selectboxes	
	var sbContainer = document.createElement("div");
	sbContainer.id = "selectbox_"+id;
	sbContainer.style.zIndex = 60;
	var sbTop = document.createElement("div");
	sbTop.className = "selectbox_top";
	sbTop.id = "selectbox_top_"+id;	
	sbTop.onclick = function(evt){
		open_div(this);
	}	
	sbTop.onmouseover = function(evt){
		sbOver(this);
	}
	sbTop.onmouseout = function(evt){
		sbOut(this);
	}
	
	var input = document.createElement("input");
	input.type = "hidden";
	input.value = obj.options[obj.selectedIndex].value;

	sbTop.innerHTML = "<table class=\"table_top\" cellspacing=\"0\" cellpadding=\"0\"><tr><td class=\"sb1_left\"></td><td id=\"selectbox_content_"+id+"\" class=\"sb1_center\" style=\"color:#636363;font:10px/10px Arial;width:121px;\">"+obj.options[obj.selectedIndex].text+"</td><td class=\"sb1_right\"></td></tr></table>"
	
	var sbBottom = document.createElement("div");
	sbBottom.id="selectbox_bottom_"+id;
	sbBottom.className = "selectbox_bottom";
	for(var z=0;z<obj.options.length;z++){
		sbBottom.appendChild(sbAddOption(obj,obj.options[z].value,obj.options[z].text,z));
	}
	
	sbContainer.appendChild(sbTop);
	sbContainer.appendChild(sbBottom);
	sbContainer.appendChild(input);
	insertAfter(obj.parentNode,sbContainer,obj);
}


function sbAddOption(obj,nID,sName,z){
	var oOption = document.createElement("div");

	oOption.onmouseover = function(evt){
		sbitem_over(this);
	}
	oOption.onmouseout = function(evt){
		sbitem_out(this);
	}
	oOption.style.width="120px";
	
	oOption.onclick = function(evt){
		sbitem_select(nID,this);
		obj.selectedIndex = z;
		obj.onchange();
	}

	oOption.innerHTML = sName;
	oOption.value = '' + nID;
	
	return oOption;
}