/*================================================================================
	M�DULO: enviar.js
	Define procedimientos para el env�o de formularios mediante el m�todo POST
	
	Historia de Actualizaciones:
	09/01/2007 - Actualizaci�n del procedimiento NuevoSub()
	05/01/2007 - Correcci�n del procedimiento SelTodos()
	15/12/2006 - Inclusi�n del procedimiento SelTodos()
	21/11/2006 - Actualizado
=================================================================================*/

/*--------------------------------------------------------------------------------
	PROCEDIMIENTO: Actualizar ()
	Actualiza la p�gina actual para reflejar los cambios realizados en la selecci�n
	de los filtros y la ordenaci�n.
	
	PAR�METROS:
	formulario (string) nombre del formulario a enviar
	orden (string) clausula de ordenaci�n SQL

	REFERENCIAS:
	Orden<formulario> (hidden)
--------------------------------------------------------------------------------*/

function Actualizar (formulario, orden) {
	form = $(formulario);
	//form = document.forms (formulario);
	if (orden != "") form ("Orden" + formulario).value = orden;
	
	form.submit();
}



/*--------------------------------------------------------------------------------
	PROCEDIMIENTO: Enviar ()
	Env�a el formulario a la p�gina de destino indicada.
	
	PAR�METROS:
	formulario (string) nombre del formulario a enviar
	destino (string) p�gina de destino
	target (string) frame donde se abrir� la p�gina
--------------------------------------------------------------------------------*/

function Enviar (formulario, destino, target) {
	form = $(formulario);
	//form = document.forms (formulario);
	//Envia el formulario
	if (target) form.target = target
	form.action = destino;
	form.submit();
}


/*--------------------------------------------------------------------------------
	PROCEDIMIENTO: EnviarId ()
	Env�a el formulario a la p�gina de destino pasando el identificador de un elemento como par�metro.
	Tambien pasa como par�metro el tipo de acci�n a realizar: view (id<>0); new (id=0)
	
	PAR�METROS:
	formulario (string) nombre del formulario a enviar
	id (int/string) identificador del elemento seleccionado (0 o "" si se trata de una acci�n 'new')
	destino (string) p�gina de destino
	target (string) frame donde se abrir� la p�gina

	REFERENCIAS:
	Id (hidden)
	Accion (hidden)
--------------------------------------------------------------------------------*/

function EnviarId (formulario, id, destino, target) {
	form = $(formulario);
	//form = document.forms (formulario);

	if (id != 0 && id != "")
		form.Accion.value = "view";
	else
		form.Accion.value = "new";
		
	form.Id.value = id;
	form.action = destino;
	
	//Envia el formulario
	if (target) form.target = target
	form.submit();
}


/*--------------------------------------------------------------------------------
	PROCEDIMIENTO: EnviarAccion ()
	Env�a el formulario a la p�gina de destino pasando como par�metro el tipo de
	acci�n a realizar.
	
	PAR�METROS:
	formulario (string) nombre del formulario a enviar
	accion (string) nombre identificador de la acci�n a realizar
	destino (string) p�gina de destino
	target (string) frame donde se abrir� la p�gina

	REFERENCIAS:
	Accion (hidden)
--------------------------------------------------------------------------------*/

function EnviarAccion (formulario, accion, destino, target) {

	form = $(formulario);
	//form = document.forms (formulario);

	form.Accion.value = accion;
	form.action = destino;
	
	//Envia el formulario
	if (target) form.target = target
	form.submit();
}

 
/*--------------------------------------------------------------------------------
	PROCEDIMIENTO: NuevoSub ()
	Env�a el formulario a la p�gina de destino indicando que se realizar� una acci�n 'new' de un
	elemento subordinado, por lo que comprueba que se haya seleccionado de la lista de filtros
	correspondiente el elemento padre.
	
	PAR�METROS:
	formulario (string) nombre del formulario a enviar
	campo (object) campo que contiene el identificador del elemento padre
	nombre (string) nombre del campo que contiene el identificador del elemento padre
	destino (string) p�gina de destino

	REFERENCIAS:
	Accion (hidden)
--------------------------------------------------------------------------------*/

function NuevoSub (formulario, campo, nombre, destino) {
	form = $(formulario);
	//form = document.forms (formulario);
	
	//form = document.forms (formulario);
	
	if (form.elements(campo).value == "" || form.elements(campo).value == "all") {
		alert ("Debe indicar un valor para el campo '" + nombre + "'.");//"Campo requerido"
		return;
	}
	
	form.Accion.value = "new";
	form.Id.value = 0;
	form.action = destino;
	
	//Envia el formulario
	form.submit();
}


/*--------------------------------------------------------------------------------
	PROCEDIMIENTO: SelTodos ()
	Selecciona todas las casillas de verificaci�n de borrado de los	elementos de
	un listado. Si todas las casillas estaban seleccionadas, las deselecciona.
	
	PAR�METROS:
	formulario (string) nombre del formulario a enviar

	REFERENCIAS:
	Elemento (array checkbox)
	BotonEliminarSel (button)
--------------------------------------------------------------------------------*/

function SelTodos (formulario) {
	form = $(formulario);
	//form = document.forms (formulario);

	if (form.Elemento) {
		num = form.Elemento.length;
		if (num == undefined) num = 1;
	}
	else
		num = 0;
	
	if (num > 0) {
		if (num > 1) {
			i=0;
			while (i<num && form.Elemento[i].checked) i++;

			if (i == num) //todos los elementos seleccionados: los deselecciona todos
				value = false;
			else	//hay elementos sin seleccionar: los selecciona todos
				value = true;
			
			for (i=0; i<num; i++)
				form.Elemento[i].checked = value;
		}
		else {
			value = !form.Elemento.checked
			form.Elemento.checked = value;
		}
	
		//Actualiza el estado del bot�n eliminar si est� disponible
		if (form.BotonEliminarSel) form.BotonEliminarSel.disabled = !value;
	}
}


/*--------------------------------------------------------------------------------
	PROCEDIMIENTO: CheckSel ()
	Comprueba si se ha pulsado sobre una casilla de verificaci�n de borrado de un elemento
	y activa el bot�n eliminar seleccionados si hay alg�n elemento seleccionado para ser eliminado.
	
	PAR�METROS:
	formulario (string) nombre del formulario a enviar
	sel (int) posici�n del elemento a comprobar dentro del array de checkboxes

	REFERENCIAS:
	Elemento (array checkbox)
	BotonEliminarSel (button)
--------------------------------------------------------------------------------*/

function CheckSel (formulario, sel) {
 	form = $(formulario);
	//form = document.forms (formulario);

	num = form.Elemento.length;
	if (num > 1)
		value = form.Elemento[sel].checked;
	else
		value = form.Elemento.checked;
	
	if (!value && num > 1) {
		//comprueba si hay alg�n elemento seleccionado
		i = 0;
		while (!value && i<num) {
			value = form.Elemento[i].checked;
			i++;
		}
	}

	form.BotonEliminarSel.disabled = !value;
}


/*--------------------------------------------------------------------------------
	PROCEDIMIENTO: EliminarSel ()
	Se ejecuta al pulsar sobre el bot�n de eliminar seleccionados. Pide confirmaci�n antes
	de proceder al env�o de la acci�n indicada a la p�gina actual.
	
	PAR�METROS:
	formulario (string) nombre del formulario a enviar
	accion (string) nombre identificador de la acci�n a realizar

	REFERENCIAS:
	Accion (hidden)
--------------------------------------------------------------------------------*/

function EliminarSel (formulario, accion) {
 	form = $(formulario);
	//form = document.forms (formulario);

	if (!confirm ("�Est� seguro de que desea eliminar los elementos seleccionados?")) return;
	if (!confirm ("A continuaci�n se eliminar�n los elementos seleccionados y toda la informaci�n que tuviesen asociada. �Est� seguro de que desea continuar?")) return;

	form.Accion.value = accion;

	//Envia el formulario
	form.submit();
}


/*--------------------------------------------------------------------------------
	PROCEDIMIENTO: DesvincularSel ()
	Se ejecuta al pulsar sobre el bot�n de desvincular seleccionados. Pide confirmaci�n antes
	de proceder al env�o de la acci�n indicada a la p�gina actual.
	
	PAR�METROS:
	formulario (string) nombre del formulario a enviar
	accion (string) nombre identificador de la acci�n a realizar

	REFERENCIAS:
	Accion (hidden)
--------------------------------------------------------------------------------*/

function DesvincularSel (formulario, accion) {
 	form = $(formulario);
	//form = document.forms (formulario);

	if (!confirm ("�Est� seguro de que desea desvincular los elementos seleccionados?")) return;

	form.Accion.value = accion;

	//Envia el formulario
	form.submit();
}

//Abrir ventana
function OpenBrWindow2(theURL, winName, features, myWidth, myHeight, isCenter) { //v3.0
  if(window.screen)if(isCenter)if(isCenter==true){
    var myLeft = (screen.width-myWidth)/2;
    var myTop = (screen.height-myHeight)/2;
    features+=(features!='')?',':'';
    features+=',left='+myLeft+',top='+myTop;
  }
  ventana=window.open(theURL,winName,features+((features!='')?',':'')+'width='+myWidth+',height='+myHeight);
  ventana.focus();
}


function MostrarWeb() {
	var selector=document.getElementById("selectorWeb");

	if(selector.value!="")	{
		OpenBrWindow2(selector.value, "", "toolbar=1, location=1, directories=1, status=1, menubar=1, resizable=1, scrollbars=1", 800, 770, true)
		selector.selectedIndex=0;
	}
}

