/********************************************************************************************

                        Nombre: funcionesCombos.js
                        Descripción: script de cliente utilizado para el tratamiento de los combos

********************************************************************************************/


 
/*****************************OPERACIONES CON COMBOS**************************************/

//Rellenamos los valores en el combo, en este caso sólo tenemos un tipo de registros:
//pCombo: Objeto del combo
//pXmlDatos: xml con los datos que van en el combo
//nombreDescrip: nombre del atributo donde va la descripcion
function rellenarCombo(pCombo, pXmlDatos, pNombreCodigo, pNombreDecrip, pEsObligatorio) {
	rellenarComboMultiple (pCombo, pXmlDatos, pNombreCodigo, pNombreDecrip, "REGISTRO",  pEsObligatorio) 
}

//Rellenamos los valores en el combo, con varios tipos de registros
//pCombo: Objeto del combo
//pXmlDatos: xml con los datos que van en el combo
//nombreDescrip: nombre del atributo donde va la descripcion
//esObligatorio: Booleano que indica si el combo es obligatorio o no, en realidad la 
//				diferencia es que ponemos es quitar la opción "opcional" o quitarlo.
//nombreNodo:Es el nodo de los diferentes nodos (COMPANIA, PUERTO, BUQUE)...
function rellenarComboMultiple (pCombo, pXmlDatos, pNombreCodigo, pNombreDecrip, pNombreNodo, pEsObligatorio) {
	var rutaNodo = "//"+ pNombreNodo;
	var nodoRegistros = pXmlDatos.selectNodes(rutaNodo);
	//Vaciar combo 
	borrarElementosCombo(pCombo);
	//Recorremos todos los nodos
	for (var i=0;i<nodoRegistros.length;i++) {		
		xmlRegistro = nodoRegistros[i];
		//Recorremos los atributos del nodo
		for (var j=0; j<xmlRegistro.attributes.length; j++) {				
			if (xmlRegistro.attributes[j].nodeName == pNombreDecrip)	{
			   var descripcion = xmlRegistro.attributes[j].value;
			} else if (xmlRegistro.attributes[j].nodeName == pNombreCodigo) {
				var codigo = xmlRegistro.attributes[j].value;
			}
		}

		pCombo.options[pCombo.options.length] = new Option(descripcion, codigo);
	}	
}

//Asignamos el valor en el combo
function asignarValorCombo(pCombo, valor) {
	pCombo.selectedIndex = 0;
	for (var i=0;i<pCombo.options.length;i++){
		if (pCombo.options[i].value == valor)	{
			pCombo.selectedIndex = i;
		}
	}	
}


//Borramos los elementos del combo
function borrarElementosCombo(pCombo) {		
	var valor = pCombo.options[0].text;	
	var longCombo = pCombo.options.length;
	//Siempre va a tener 1 valor (el de por defecto).
	for (var i=1;i<longCombo;i++){
		pCombo.options[1]=null;
	}
	pCombo.selectedIndex = 0;
}

//Método que permite rellenar las opciones de un combo apartir de un array
function rellenarComboPorArray(objCombo,aCodigos,aDescripciones,sValor){
		objCombo.selectedIndex=-1;
		objCombo.value="";

		while(objCombo.options.length>1)
				objCombo.options[1]=null;

		for(var i=0;i<aCodigos.length;i++){
				objCombo.options[objCombo.options.length]=new Option(aDescripciones[i],aCodigos[i]);
		}
		objCombo.value=sValor;
}
