function recup_chx(obj_champ, chaine_champ, type_ret, pos, fenetre)
{
	// l'énumération commence à zéro
	// donc la première lettre => charAt(0)
	var i=0, champ, nb_elem, elem, ret;
	if(obj_champ)
		champ = obj_champ;
	else
		champ = window.document.getElementById(chaine_champ);
	if(champ.type.indexOf('select') != -1)
	{
		var idx = champ.selectedIndex;
		if(idx != -1)
		{
			var val_choix = champ[idx].value;
			var choix = champ[idx].text;
			if(choix != '>')
			{
				if(type_ret == 'prem_lettre')
					ret = choix.charAt(pos-1);
				else if(type_ret == 'val_chx' || !type_ret)
					ret = val_choix;
				else if(type_ret == 'txt_chx')
					ret = choix;
			}
		}
	}
	else if(champ.type == 'text' || champ.type == 'textarea')
		ret = champ.value;
	else if(champ.type == 'radio' || champ.type == 'checkbox')
	{
		nb_elem = fenetre.document.forms[1].elements[champ.name].length;
		if(typeof nb_elem != 'undefined')
		{
			ret = '';
			for(i=0;i<nb_elem;i++)
			{
				elem = fenetre.document.forms[1].elements[champ.name][i];
				if(elem.checked)
				{
					ret += elem.value;
					if(i < nb_elem)
						ret += '\n';
				}	
			}
		}
		else
		{
			elem = fenetre.document.forms[1].elements[champ.name];
			if(elem.checked)
				ret = elem.value;
		}
	}
	return ret;
}

function Charger(num_form, tableau, champ, defaut)
{
	var i=0;
	var ch, liste;
	var nom_champ;
	var nb_elem = window.document.forms[num_form].elements.length;
	for(i=0; i< nb_elem;i++)
	{
		ch = window.document.forms[num_form].elements[i];
		nom_champ = ch.name;
		if(nom_champ == champ)
		{
			liste = ch;
			break;
		}
	}
	if(liste)
	{
		var mon_option = liste.options;
		for(i=0;i<tableau.length;i++)
		{
			mon_option[i]=new Option(tableau[i].text,tableau[i].value);
		}
		if(defaut != '')
		{
			charge_ChoixPrecedent(num_form,champ,defaut);
		}
	}
	return;
}

function ChargerElem1(num_form, nom_champ, liste, tableau, defaut)
{
	var i=0;
	var ch, liste;
	var ch_nom_champ;
	if(!liste)
	{
		var nb_elem = window.document.forms[num_form].elements.length;
		for(i=0; i< nb_elem;i++)
		{
			ch = window.document.forms[num_form].elements[i];
			ch_nom_champ = ch.name;
			if(ch_nom_champ == nom_champ)
			{
				liste = ch;
				break;
			}
		}
	}
	if(liste)
	{
		var mon_option = liste.options;
		for(i=0;i<tableau.length;i++)
		{
			mon_option[i]=new Option(tableau[i].text,tableau[i].value);
			if(defaut == tableau[i].value)
				mon_option[i].selected = true;
		}
	}
	return;
}

function ChargerElem2(num_form, nom_champ, liste, tableau1, tableau2, filtre, defaut)
{
	var i=0;
	var ch, liste;
	var ch_nom_champ;
	var indice = recherche_elem(tableau1, filtre)
	if(!liste)
	{
		var nb_elem = window.document.forms[num_form].elements.length;
		for(i=0; i< nb_elem;i++)
		{
			ch = window.document.forms[num_form].elements[i];
			ch_nom_champ = ch.name;
			if(ch_nom_champ == nom_champ)
			{
				liste = ch;
				break;
			}
		}
	}
	if(liste)
	{
		var mon_option = liste.options;
		for(i=0;i<tableau2[indice].length;i++)
		{
			mon_option[i]=new Option(tableau2[indice][i].text, tableau2[indice][i].value);
			if(defaut == tableau2[indice][i].value)
				mon_option[i].selected = true;
//				charge_ChoixPrecedent(0 , '', defaut, '', liste);
		}
	}
	return;
}

function charge_ListeElem(num_form, nom_champ1, tableau_elem1, val_null_elem1, nom_champ_lie, tableau_elem_lie, defaut, tab_def)
{
	if(!defaut)
		defaut = '>;';
	tab_ch_def = defaut.split(';');
	var ch, elem1, elem_lie, id_elem1, txt_elem1, indice;
	var nb_elem = window.document.forms[num_form].elements.length;
	elem1 = window.document.getElementById('id_' + nom_champ1)
	if(!elem1)
		elem1 = window.document.getElementById(nom_champ1)
	if(!elem1)
	{
		for(i=0; i< nb_elem;i++)
		{
			ch = window.document.forms[num_form].elements[i];
			if(ch.name == nom_champ1)
			{
				elem1 = ch;
				break;
			}
		}
	}
	if(elem1)
	{
		elem_lie = window.document.getElementById('id_' + nom_champ_lie)
		if(!elem_lie)
			elem_lie = window.document.getElementById(nom_champ_lie)
		if(!elem_lie)
		{
			for(i=0; i< nb_elem;i++)
			{
				ch = window.document.forms[num_form].elements[i];
				if(ch.name == nom_champ_lie)
				{
					elem_lie = ch;
					break;
				}
			}
		}
		if(elem_lie)
		{
			if(elem1.type.indexOf('select')!=-1)
			{
				id_elem1 = elem1.options[elem1.options.selectedIndex].value;
				if(id_elem1)
					txt_elem1 = elem1.options[elem1.options.selectedIndex].text;
			}
			else
			{
				id_elem1 = elem1.value;
				txt_elem1 = elem1.value;
			}
			if(!txt_elem1 || txt_elem1 == '>') return;
			Suppression(elem_lie, 'raz');
			if( (id_elem1=='null' || id_elem1==val_null_elem1) && tab_ch_def)
			{
				ChargerElem1(0, '', elem_lie, tab_def, '');
				return;
			}
			else if( (id_elem1=='null' || id_elem1==val_null_elem1) && !tab_ch_def)
				return;
			indice = recherche_elem(tableau_elem1, id_elem1);
			elem_lie[0] = new Option(tab_ch_def[0], tab_ch_def[1]);
			for(i=0;i<tableau_elem_lie[indice].length;i++)
			{
				elem_lie[i+1] = new Option(tableau_elem_lie[indice][i].text,tableau_elem_lie[indice][i].value);
			}
			elem_lie[0].selected = true;
		}
	}
	return;
}

function cre_El(tableau,texte,value)
{
	tableau[tableau.length]=new obj_Elements(texte,value);
}


function modif_Elem(tableau,texte,value)
{
	var i=0;
	var ch;
	for(i=0;i<tableau.length;i++)
	{
		if(tableau[i].value == value)
		{
			tableau[i].text = texte;
			break;
		}
	}
	return;
}

function cree_TabElem2(tableau1, tableau2)
{
	var i=0;
	for(i=0;i<tableau1.length;i++)
	{
		tableau2[i] = new Array();
	}
}

function cre_El2(tableau1,tableau2,id_elem,texte,value)
{
	var indice = recherche_elem(tableau1,id_elem);
	if(indice!=-1)
	{
		tableau2[indice][tableau2[indice].length]=new obj_Elements(texte,value);
	}
}

function obj_Elements(text,value)
{
	this.text=text;
	this.value=value;
}

function InitElem(champ, num_form)
{
	var trouve=false;
	var ch, liste;
	var i=0;
	var nb_elem = window.document.forms[num_form].elements.length;
	for(i=0; i<nb_elem;i++)
	{
		ch = window.document.forms[num_form].elements[i];
		if(ch.name == champ)
		{
			trouve = true;
			break;
		}
	}
	if(trouve)
	{
		liste = ch.options;
		Suppression(liste);
	}
	return;
}

function Suppression(liste,raz)
{
	var i=0;
	var arret;
	if(!raz) arret = 1;
	else arret = 0;
	for(i=liste.length-1;i>=arret;i--)
	{
		liste[i].selected=false;
		liste[i]=null;
	}
//	liste[0].selected=true;
}

function ListeEnTableau(liste, tableau)
{
	var i=0;
	for(i=0;i<liste.length;i++)
	{
		cre_El(tableau,liste[i].text,liste[i].value);
	}
	return;
}

function charger_LISTE(id_pere, id_fils, tab_ini, id_liste, fenetre)
{
	// valeur = id_fils,id_pere
	// texte = texte_fils
	if(!fenetre)
		fenetre = window.self;
	var i=0, valeur='';
	var liste = fenetre.document.getElementById(id_liste);
	for(i=0;i<tab_ini.length;i++)
	{
		if(typeof tab_ini[i].value == 'string')
		{
			valeur = tab_ini[i].value.split(',');
			if(valeur[1] == id_pere)
			{
				var oOption = fenetre.document.createElement("OPTION");
				oOption.text = tab_ini[i].text;
				oOption.value = valeur[0];
				if(valeur[0] == id_fils)
					oOption.selected = true;
				liste.add(oOption);
			}
		}
	}
	return;
}

function docu_LISTE(liste, id_liste, tab_docu, chx, fenetre)
{
	// valeur = id_fils,id_pere
	// texte = texte_fils
	if(!fenetre)
		fenetre = window.self;
	var i=0, valeur='', texte='';
	if(!liste)
		liste = fenetre.document.getElementById(id_liste);
	for(i=0;i<tab_docu.length;i++)
	{
		if(typeof tab_docu[i] == 'string')
		{
			var spit_tmp = tab_docu[i].split('|');
			valeur = spit_tmp[0];
			texte = spit_tmp[1];
			var oOption = fenetre.document.createElement("OPTION");
			oOption.text = texte;
			oOption.value = valeur;
			if(valeur == chx)
			{
				oOption.selected = true;
			}
			liste.add(oOption);
		}
	}
	return;
}

function ajOptionListe(id_liste, valeur, texte, selection, fenetre, test_existe)
{
	var i=0;
	var agir = true;
	if(!fenetre)
		fenetre = window.self;
	var liste = fenetre.document.getElementById(id_liste);
	if(test_existe)
	{
		for(i=0;i<liste.length;i++)
		{
			if(liste[i].value == valeur)
			{
				agir = false;
				break;
			}
		}
	}
	if(agir)
	{
		var oOption = fenetre.document.createElement("OPTION");
		oOption.value = valeur;
		oOption.text = texte;
		if(selection)
			oOption.selected = true;
		liste.add(oOption);
	}
	return;
}

function modifOptionListe(id_liste, valeur, texte, selection, fenetre)
{
	var i=0;
	if(!fenetre)
		fenetre = window.self;
	var liste = fenetre.document.getElementById(id_liste);
	for(i=0;i<liste.length;i++)
	{
		if(liste[i].value == valeur)
		{
			liste[i].text = texte;
			if(selection)
				liste[i].selected=true;
			break;
		}
	}
	return;
}

function SuppressionOptionsListe(liste,val_option,type_id_ou_texte,mode)
{
	var i=0;
	var val_ref;
	var test = false;
	for(i=liste.length-1;i>=0;i--)
	{
		if(type_id_ou_texte == 'id')
			val_ref = liste[i].value;
		else if(type_id_ou_texte == 'texte')
			val_ref = liste[i].text;
		if(mode == 'different')
			test = (val_ref != val_option)
		else if(mode == 'egal' || mode == '')
			test = (val_ref == val_option)
		if(test)
		{
			liste[i].selected=false;
			liste[i]=null;
		}
	}
	return;
}


function charge_ChoixPrecedent(num_form, champ_liste, valeur, type_valeur, champ_appelant)
{
	var i=0;
	var compa_valeur;
	var nb_elem = window.document.forms[num_form].elements.length;
	if(!champ_appelant)
	{
		for(i=0; i< nb_elem;i++)
		{
			ch = window.document.forms[num_form].elements[i];
			if(ch.name == champ_liste)
				break;
		}
		liste = ch.options;
	}
	else
		liste = champ_appelant;
	if(typeof liste != 'undefined')
	{
		for(i=0;i<liste.length;i++)
		{
			if(type_valeur == 'text')
				compa_valeur = liste[i].text;
			else
				compa_valeur = liste[i].value;
			if(valeur==compa_valeur)
			{
				liste[i].selected=true;
				break;
			}
			else
				liste[i].selected=false;
		}
	}
}

function recherche_elem(tableau,elem)
{
	var i=0;
	for(i=0;i<tableau.length;i++)
	{
		if(tableau[i].value==elem)
		{
			return i;
		}
	}
	return -1
}
