/*************************************************
* nuevoAjax
*
* Crea un nuevo objeto ajax segun el navegador
*
**************************************************/

function nuevoAjax()
{ 
	/* Crea el objeto AJAX. Esta funcion es generica para cualquier utilidad de este tipo, por
	lo que se puede copiar tal como esta aqui */
	var xmlhttp=false; 
	try 
	{ 
		// Creacion del objeto AJAX para navegadores no IE
		xmlhttp=new ActiveXObject("Msxml2.XMLHTTP"); 
	}
	catch(e)
	{ 
		try
		{ 
			// Creacion del objet AJAX para IE 
			xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
		} 
		catch(E) { xmlhttp=false; }
	}
	if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp=new XMLHttpRequest(); } 

	return xmlhttp; 
}
/******************************************
*
* Funcion que carga un Select en Ajax
* 
* @param int     valor: Si es =-1 solo se coloca una opcion de inhabilitado. En caso contrario se realiza la carga del select.
* @param String  id_element: id del select que se quiere llenar.
* @param String  name_element: name del select que se quiere llenar.
* @param String  texto_Descript: texto que ira al costado del select en el caso que el select y su descripcion estan en el mismo <td>. (Opcional=null)
* @param String  texto_select: texto que ira en el select cuando no tenga valores. Es decir cuando el parametro valor sea -1.
* @param String  value_select: value que ira en el select cuando no tenga valores. Es decir cuando el parametro valor sea -1.
* @param String  selectPrimaryId: id del select que genero la busqueda en el otro select.
* @param String  id_fila: id de la fila que contiene el select.
* @param int     width: tama?o del select en px.
* @param boolean flag: flag que indica si el primer option del select tiene una leyenda como "Seleccione...".
* @param String  firtsOptionValue: valor del value del primer option del select si el flag anterior es true. (Opcional=null)
* @param String  firtsOptionDescript: descripcion del primer option del select si el flag anterior es true. (Opcional=null)
* @param String  funcion: nombre de la funcion que se llama cuando se selecciona una opcion del nuevo combo. (Opcional=null)
* @param String  clase: nombre de la clase CSS que tiene el select. (Opcional=null)
* @param String  query: consulta para cargar los datos en el select. Debe tener si o si solo dos columnas, una para el value y otra para el description.  Este parametro puede venir null en el caso que se cargue previamente en session los valores del value y description del select. (Opcional=null)
*
******************************************/
function cargaSelectAjax(valor,id_element,name_element,texto_Descript,texto_select,value_select,selectPrimaryId,id_fila,width,flag,firtsOptionValue,firtsOptionDescript,funcion,clase,query)
{
	document.getElementById(selectPrimaryId).disabled=true;
	if(valor==-1)
	{
		// Si el usuario manda como valor -1 , no voy al servidor y pongo todo por defecto
		combo=document.getElementById(id_element);
		combo.length=0;
		var nuevaOpcion=document.createElement("option"); 
		nuevaOpcion.value=value_select; 
		nuevaOpcion.innerHTML=texto_select;
		combo.appendChild(nuevaOpcion);	
		combo.disabled=true;
		document.getElementById(selectPrimaryId).disabled=false;
	}
	else
	{
		ajax=nuevoAjax();
		ajax.open("GET", "?EVENT=OBJECT_SELECT&objectSelectId="+id_element+"&objectSelectName="+name_element+"&objectSelectTexto="+texto_Descript+"&objectSelectWidth="+width+"&objectSelectFlag="+flag+"&objectSelectFirtsOptionValue="+firtsOptionValue+"&objectSelectFirtsOptionDescript="+firtsOptionDescript+"&objectSelectFunction="+funcion+"&objectSelectClase="+clase+"&query="+query, true);
		ajax.onreadystatechange=function() 
		{ 
			if (ajax.readyState==1)
			{
				// Mientras carga pongo una opcion que dice "Cargando"
				combo=document.getElementById(id_element);
				combo.length=0;
				var nuevaOpcion=document.createElement("option"); 
				nuevaOpcion.value=value_select; 
				nuevaOpcion.innerHTML="Cargando...";
				combo.appendChild(nuevaOpcion); 
				combo.disabled=true;	
			}
			// Comprobamos si la peticion se ha completado (estado 4)
			if (ajax.readyState==4)
			{ 
				// Comprobamos si la respuesta ha sido correcta (resultado HTTP 200)
				if( ajax.status == 200 )
				{
					// Escribimos el resultado en la pagina HTML mediante DHTML
					document.getElementById(id_fila).innerHTML=ajax.responseText;
					document.getElementById(selectPrimaryId).disabled=false;
				}
			} 
		}
		ajax.send(null);
	}
}

