/**
 * Controlador de respuesta AJAX para actualizar un elemento select
 */
function ControladorSelect()
{
	/**
	 * Método que llama al metodo heredado "ejecutarGenerico" y despues sobre el "select" indicado
	 * borra sus elementos y añace los recibidos, marcando el item seleccionado según se indica en la estructura
	 * JSON recibida
	 */
	this.ejecutar = function (datosSelect, coFormulario)
	{
		//Se establecen los atributos del tag si aplica
		this.ejecutarGenerico(datosSelect);				
		var elementoSelect = document.getElementById(datosSelect.id);
		//Borramos los option anteriores
		while (elementoSelect.length > 0)
  			elementoSelect.remove(elementoSelect.length-1);
  		
  		var elementoOption = null;	
  		//Si el item seleccionado es blanco, se crea el primero
  		if ((datosSelect.datos.seleccionado == null) || (datosSelect.datos.seleccionado.replace(/ /g,'') == ''))
  		{
  			elementoOption = document.createElement('option');
			elementoOption.selected = true;
  			this.insertarElementoOption(elementoSelect, elementoOption);
  		}
  		//Se añaden todos los valores recibidos sobre el select
  		for (i = 0; i < datosSelect.datos.valores.length; i++)
		{
			elementoOption = document.createElement('option');
			elementoOption.text = datosSelect.datos.descripciones[i];
			elementoOption.value = datosSelect.datos.valores[i];
			elementoOption.selected = (datosSelect.datos.valores[i] == datosSelect.datos.seleccionado);
			this.insertarElementoOption(elementoSelect, elementoOption);
  		}

		// Se actualiza la variable con el valor actual seleccionado del formulario ( existe si hay algun campo dependiente), con el valor seleccionado recibido
		var nombreVariable = (datosSelect.id).replace(/\./g, '_') + 'ValorActual';
		var nodo = document.getElementById(coFormulario);
		if (nodo.getAttribute(nombreVariable) != null)
		{
			nodo.setAttribute(nombreVariable, datosSelect.datos.seleccionado);	
		}
	}

	/**
	 * Metodo que inserta un item en el "select" dependiendo del navegador utilizado
	 */
	this.insertarElementoOption = function(elementoSelect, elementoOption)
	{
		try
		{
			elementoSelect.add(elementoOption); //para IE
		}
		catch(error)
		{
			elementoSelect.add(elementoOption, null); //para el resto 
		}
	}
}
//Se declara la herencia
ControladorSelect.prototype = new ControladorGenerico();
