//var cheminImages = './';
var cheminImages = '../img/frm/';
var lesTimerCbo = new Array();
var timeOut = 3500;
var classCellListe = "cellComboZoneListe";

function test(p_params)
{
	var i =0;
	for(i=0; i<p_params.length; i++)
	{
		alert(p_params[i]['nom'] + " - " + p_params[i]['valeur']);
	}
}

//test(new Array(createAttribut("width", 12), createAttribut("height", 50)));

function getIdFleche(p_nomCombo)
{
	var idFleche = p_nomCombo + "_fleche";
	return(idFleche);
}

function getIdDivZoneListe(p_nomCombo)
{
	var idDivZoneListe = p_nomCombo + '_div_zone_liste';
	return(idDivZoneListe);
}

function getIdCadreListe(p_nomCombo)
{
	var idCadreListe = p_nomCombo + "_cadre";
	return(idCadreListe);
}

function getIdCol(p_nomCombo, p_numRow)
{
	var idCol = p_nomCombo + "_col_" + p_numRow;
	return(idCol);
}

function getIdRow(p_nomCombo, p_numRow)
{
	var idCol = p_nomCombo + "_row_" + p_numRow;
	return(idCol);
}

function getIdZoneSaisie(p_nomCombo)
{
	var idZoneSaisie = p_nomCombo + "_txt";
	return(idZoneSaisie);
}

function getIdCellValue(p_nomCombo, p_numRow)
{
	var idCellValue = p_nomCombo + "_col_value_" + p_numRow;
	return(idCellValue);
}

function getIdColModele(p_nomCombo)
{
	var idColModele = p_nomCombo + "_col_modele";
	return(idColModele);
}

function getIdTableModele(p_nomCombo)
{
	var idTableModele = p_nomCombo + "_table_modele";
	return(idTableModele);
}

function getIdLigneVideModele(p_nomCombo)
{
	var idLigneVideModele = p_nomCombo + "_ligne_vide_modele";
	return(idLigneVideModele);
}

function switchElt(p_elt)
{
	if(p_elt.style.display == "none")
	{
		showElt(p_elt);
	}
	else
	{
		hideElt(p_elt);
	}
}

function hideElt(p_elt)
{
	p_elt.style.display = "none";
}

function showElt(p_elt)
{
	p_elt.style.display = "";
}

function clickCombo(p_nomCombo, p_nbElts)
{
	var iRow = 0;

	var idFleche = getIdFleche(p_nomCombo);
	var img = getElement(idFleche);

	var idDivZoneListe = getIdDivZoneListe(p_nomCombo);
	var divZoneListe = getElement(idDivZoneListe);
	switchElt(divZoneListe);

	var idCadreListe = getIdCadreListe(p_nomCombo);
	var cadre = getElement(idCadreListe);
	switchElt(cadre);

	if(cadre.style.display == "none")
	{
		img.src = cheminImages + "combo1.gif";
		if(lesTimerCbo[p_nomCombo])
		{
			clearTimeout(lesTimerCbo[p_nomCombo]);
			lesTimerCbo[p_nomCombo] = null;
		}
	}
	else
	{
		img.src = cheminImages + "combo2.gif";
		lesTimerCbo[p_nomCombo] = window.setTimeout("closeCombo(\"" + p_nomCombo + "\"," + p_nbElts + ")", timeOut);
	}
	var elt;
	for(iRow=0; iRow<p_nbElts; iRow++)
	{
		var idCol = getIdCol(p_nomCombo, iRow);
		var idRow = getIdRow(p_nomCombo, iRow);

		elt = getElement(idRow);
		switchElt(elt);
		elt = getElement(idCol);
		switchElt(elt);
	}
}

function closeCombo(p_nomCombo, p_nbElts)
{
	var iRow = 0;

	var idFleche = getIdFleche(p_nomCombo);
	var img = getElement(idFleche);

	var idDivZoneListe = getIdDivZoneListe(p_nomCombo);
	var divZoneListe = getElement(idDivZoneListe);
	hideElt(divZoneListe);

	var idCadreListe = getIdCadreListe(p_nomCombo);
	var cadre = getElement(idCadreListe);
	hideElt(cadre);

	img.src = cheminImages + "combo1.gif";

	var elt;
	for(iRow=0; iRow<p_nbElts; iRow++)
	{
		var idCol = getIdCol(p_nomCombo, iRow);
		var idRow = getIdRow(p_nomCombo, iRow);

		elt = getElement(idRow);
		hideElt(elt);

		elt = getElement(idCol);
		hideElt(elt);
	}
}

function changeCouleur(p_cell, p_couleurFond, p_couleurPolice)
{
	p_cell.style.backgroundColor = p_couleurFond;
	p_cell.style.color = p_couleurPolice;
}

function clickCell(p_cell, p_nomCombo, p_nbElts)
{
	// Id de la cellule qui sert de zone de saisie de la combo
	var idZoneSaisie = getIdZoneSaisie(p_nomCombo);

	// Récupération de la zone de saisie
	var zoneSaisie = getElement(idZoneSaisie);

	// id de la cellule sur laquelle on a cliqué
	var idCellText = p_cell.id;

	// Récupération du numéro de la ligne
	var idxDebutNb = idCellText.lastIndexOf("_");
	var nb = idCellText.substr(idxDebutNb+1);

	// Id de la cellule qui contient la clée
	var idCellValue = getIdCellValue(p_nomCombo, nb);

	// Récupération de la cellule contenant la clée
	var cellKey = getElement(idCellValue);

	// MAJ de la zone de saisie avec le contenu de la cellule cliquée
	zoneSaisie.firstChild.nodeValue = " " + p_cell.firstChild.nodeValue;

	// Récupération du champ caché
	var hidden = getElement(p_nomCombo);

	// MAJ de la valeur du champ caché
	hidden.value = cellKey.firstChild.nodeValue;

	// On enroule la liste
	clickCombo(p_nomCombo, p_nbElts);
}

function reinitTimer(p_nomCombo, p_nbElts)
{
	if(lesTimerCbo[p_nomCombo])
	{
		clearTimeout(lesTimerCbo[p_nomCombo]);
		lesTimerCbo[p_nomCombo] = null;
	}
	lesTimerCbo[p_nomCombo] = window.setTimeout("closeCombo(\"" + p_nomCombo + "\"," + p_nbElts + ")", timeOut);
}

function select(p_nomCombo, p_isComboDHtml, p_idx)
{
	if(p_isComboDHtml)
	{
		// Id de la cellule qui sert de zone de saisie de la combo
		var idZoneSaisie = getIdZoneSaisie(p_nomCombo);

		// Récupération de la zone de saisie
		var zoneSaisie = getElement(idZoneSaisie);

		var nb = p_idx;

		// Id de la cellule qui contient la clée
		var idCellValue = getIdCellValue(p_nomCombo, nb);

		// Id de la cellule qui contient le texte
		var idCellText = getIdCol(p_nomCombo, nb);

		// Récupération de la cellule contenant la clée
		var cellKey = getElement(idCellValue);

		// Récupération de la cellule contenant le libellé
		var clickedCell = getElement(idCellText);

		// MAJ de la zone de saisie avec le contenu de la cellule cliquée
		zoneSaisie.firstChild.nodeValue = clickedCell.firstChild.nodeValue;

		// Récupération du champ caché
		var hidden = getElement(p_nomCombo);

		// MAJ de la valeur du champ caché
		hidden.value = cellKey.firstChild.nodeValue;
	}
	else
	{
		var cbo = getElement(p_nomCombo);
		cbo.options[0].selected = true;
	}
}


function viderCombo(p_nomCombo, p_isComboDHtml)
{
	if(p_isComboDHtml)
	{
		var idCadreListe = getIdCadreListe(p_nomCombo);
		var length = getComboLength(p_nomCombo);

		// On vide la tableau HTML
		ViderTableauHTML(idCadreListe);
		length = 0;

		// Insertion d'une ligne
		var table = getElement(idCadreListe);
		var tr = table.insertRow(length);
		setAttributs(tr, new Array(createAttribut("style", "border:none;height:18px;")));

		// Insertion des deux colonnes vides
		InsertColumn(tr, "");
		InsertColumn(tr, "");
	}
	else
	{
		var cbo = getElement(p_nomCombo);
		while(cbo.length)
		{
			cbo.options[0] = null;
		}
	}
}

function getComboLength(p_nomCombo, p_isComboDHtml)
{
	if(p_isComboDHtml)
	{
		var length = 0;
		var idCadreListe = getIdCadreListe(p_nomCombo);
		var tableau = getElement(idCadreListe);
		length = tableau.rows.length - 1;
	}
	else
	{
		var cbo = getElement(p_nomCombo);
		length = cbo.length;
	}

	return(length);
}

function getCodeJavaOnMouseOverCell(p_nomCombo, p_iElt)
{
	var td = getElement(getIdCol(p_nomCombo, p_iElt));
	var nbLines = getComboLength(p_nomCombo);
	changeCouleur(td, "#808096", "#FFFFFF");
	reinitTimer(p_nomCombo, nbLines);
}

function getCodeJavaOnMouseOutCell(p_nomCombo, p_iElt)
{
	var td = getElement(getIdCol(p_nomCombo, p_iElt));
	changeCouleur(td, "#F5F5F5", "#000000");
}

function getCodeJavaOnClickCell(p_nomCombo, p_iElt, p_javaScriptOnChange)
{
	var td = getElement(getIdCol(p_nomCombo, p_iElt));
	var nbLines = getComboLength(p_nomCombo);
	clickCell(td, p_nomCombo, nbLines);
//	$p_javaScriptOnChange;
}

function bidon()
{
	alert("Coucou");
}

function addOptionCombo(p_nomCombo, p_isComboDHtml, p_text, p_value)
{
	if(p_isComboDHtml)
	{
		// Nombre de lignes actuel de la combo
		var nbLines = getComboLength(p_nomCombo);
		var tr = null;
		var td = null;
		var contenu = null;
		var attributs = null;

		// Insertion d'une ligne
		nbLines++;
		tr = getElement(getIdCadreListe(p_nomCombo)).insertRow(nbLines);
		nbLines--;

		setAttributs(tr, new Array(createAttribut("style", "display:none; border:none;height:18px;"),
									createAttribut("id", getIdRow(p_nomCombo, nbLines))));

		attributs = new Array(createAttribut("id", getIdCol(p_nomCombo, nbLines)),
								createAttribut("class", classCellListe),
								createAttribut("style", "display:none"));

		td = InsertColumn(tr, p_text, attributs);

		attributs = new Array(createAttribut("id", getIdCellValue(p_nomCombo, nbLines)),
										createAttribut("style", "display:none"));
		InsertColumn(tr, p_value, attributs);
	}
	else
	{
		var cbo = getElement(p_nomCombo);
		nouvel_element = new Option(p_text, p_value, false, true);
		cbo.options[cbo.length] = nouvel_element;
	}
}
