/*************************************************
* 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)
* @param String  functionName: Nombre de la funcion en pl que se va a llamar (Opcional=null)
* @param String  inParametersValues: String con la concatenacion de los nombres de los parametros de entrada de la funcion (Opcional=null)
* @param String  inParametersType: String con la concatenacion de los tipos de los parametros de entrada de la funcion (Opcional=null)
* @param String  outParametersType: String con la concatenacion de los tipos de los parametros de salida la funcion (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,functionName,inParametersValues,inParametersType,outParametersType)
{
	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+"&objectTexto="+texto_select+"&objectSelectWidth="+width+"&objectSelectFlag="+flag+"&objectSelectFirtsOptionValue="+firtsOptionValue+"&objectSelectFirtsOptionDescript="+firtsOptionDescript+"&objectSelectFunction="+funcion+"&objectSelectClase="+clase+"&query="+query+"&fName="+functionName+"&fInParamValue="+inParametersValues+"&fInParamType="+inParametersType+"&fOutParamType="+outParametersType,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
					//alert(ajax.responseText);
					document.getElementById(id_fila).innerHTML=ajax.responseText;
					document.getElementById(selectPrimaryId).disabled=false;
				}
			} 
		}
		ajax.send(null);
	}
}

/******************************************
*
* Funcion que carga un Input en Ajax
* 
* @param String  id_element: id del input que se quiere llenar.
* @param String  texto_Descript: texto que ira al costado del input en el caso que el input y su descripcion esten en el mismo <td>. (Opcional=null)
* @param String  selectPrimaryId: id del select que genero la busqueda en el input.
* @param String  id_fila: id de la fila que contiene el input.
* @param int     width: tama?o del input en px.(Opcional=null)
* @param String  clase: nombre de la clase CSS que tiene el input. (Opcional=null)
* @param String  query: consulta para cargar los datos en el input. Debe tener si o si solo una columna.(Opcional=null)
* @param String  functionName: Nombre de la funcion en pl que se va a llamar (Opcional=null)
* @param String  inParametersValues: String con la concatenacion de los nombres de los parametros de entrada de la funcion (Opcional=null)
* @param String  inParametersType: String con la concatenacion de los tipos de los parametros de entrada de la funcion (Opcional=null)
* @param String  outParametersType: String con el tipo de parametro de salida la funcion. Debe ser solo uno. (Opcional=null)
* @param boolean activo: flag que indica si el input esta activado o desactivado. Por defecto esta activo. (Opcional=null)
* @param String	 type: tipo de input (text,password,radio). Por defecto toma text. (Opcional=null)
******************************************/
function cargaInputAjax(id_element,texto_Descript,selectPrimaryId,id_fila,width,clase,query,functionName,inParametersValues,inParametersType,outParametersType,activo,type)
{
	document.getElementById(selectPrimaryId).disabled=true;
	ajax=nuevoAjax();                                                                                                                                                                                                                                                                                                                                                                                                               
	ajax.open("GET", "?EVENT=OBJECT_INPUT&objectInputId="+id_element+"&objectInputTexto="+texto_Descript+"&objectInputWidth="+width+"&objectInputClase="+clase+"&query="+query+"&fName="+functionName+"&fInParamValue="+inParametersValues+"&fInParamType="+inParametersType+"&fOutParamType="+outParametersType+"&objectInputActivo="+activo+"&objectInputType="+type,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
					//alert(ajax.responseText);
					document.getElementById(id_fila).innerHTML=ajax.responseText;
					document.getElementById(selectPrimaryId).disabled=false;
				}
			} 
		}
		ajax.send(null);
}
