//// Scripts de administración de interfaces.
//// Desarrollado por ayp digital(R)
//// Córdoba - República Argentina
//// www.ayp-digital.com - info@ayp-digital.com
//// Ultima revisión: 22/07/08

//// Posiciona el cursor en el objeto especificado:
//// Ultima revisión: 20/01/07
//// formulario: opcional
function colocarCursor(id_objeto)
{
	var objeto = document.getElementById(id_objeto);
	if (objeto != null) objeto.focus();
}


//// Anula los elementos del formulario con los id especificados:
//// Última revisión: 13/05/06
//// elementos: el id de los botones separados por coma.
function anularElementos(elementos)
{
	var elem = new String(elementos);
	elem = elem.split(",");
	var e;
	for (var i = 0; i < elem.length; i++){
		e = document.getElementById(elem[i]);
		if (e != null) {
			e.disabled = true;
			}
		}
}


//// Habilita los elementos del formulario con los id especificados:
//// Última revisión: 03/02/07
//// elementos: el id de los botones separados por coma.
function habilitarElementos(elementos)
{
	var elem = new String(elementos);
	elem = elem.split(",");
	var e;
	for (var i = 0; i < elem.length; i++){
		e = document.getElementById(elem[i]);
		if (e != null) {
			e.disabled = false;
			}
		}
}


//// Oculta los elementos del formulario con los id especificados:
//// Última revisión: 22/07/08
function ocultarElementos(elementos)
{
	var elem = new String(elementos);
	elem = elem.split(",");
	var e;
	for (var i = 0; i < elem.length; i++){
		e = document.getElementById(elem[i]);
		if (e != null) {
			e.style.display = "none";
			}
		}
}


//// Muestra los elementos del documento que estén ocultos y que tengan el id especificado:
//// Última revisión: 22/07/08
function mostrarElementos(elementos)
{
	var elem = new String(elementos);
	elem = elem.split(",");
	var e;
	for (var i = 0; i < elem.length; i++){
		e = document.getElementById(elem[i]);
		if (e != null) {
			e.style.display = "";
			}
		}
}


//// Cuenta los items seleccionados en una lista:
//// Última revisión: 06/02/07
//// botones: el id de los botones separados por coma.
function contarItems(nombre_items)
{
	var numero = 1;
	var seleccionados = 0;
	var it = document.getElementById(nombre_items + numero);
	while (it != null){
		if (it.checked) seleccionados++;
		numero++;
		it = document.getElementById(nombre_items + numero);
		}
	return seleccionados;
}


//// Selecciona o deselecciona todos los items de una lista:
//// Última revisión: 29/11/07
//// item_general: id del elemento que gestiona toda la selección.
//// nombre_items: id de los botones a los cuales se le agrega un número entero para recorrerlos en orden.
function seleccionarListaItems(item_general, nombre_items)
{
	var it_general = document.getElementById(item_general);
	var seleccionados = 0;
	if (it_general != null){
		var numero = 1;
		var it = document.getElementById(nombre_items + numero);
		while (it != null){
			if (it_general.checked == true){
				it.checked = true;
				}
			else it.checked = false;
			numero++;
			it = document.getElementById(nombre_items + numero);
			seleccionados++;
			}
		if (it_general.checked == false) seleccionados = 0;
		}
	return seleccionados;
}


//// Cuenta los caracteres del campo especificado y coloca el resultado en el campo de cuenta:
//// Última revisión: 26/02/07
//// dato: campo del cual se deben contar los caracteres.
//// muestra: campo en donde se debe colocar el resultado.
//// maximo: cantidad máxima de caracteres permitidos.
function contarCaracteres(dato, muestra, maximo)
{
	var campo_dato = document.getElementById(dato);
	var campo_muestra = document.getElementById(muestra);
	var car_dato = new String(campo_dato.value);
	if (car_dato.length > maximo){
		campo_dato.value = car_dato.substring(0, maximo - 1);
		campo_muestra.value = 0;
		}
	else{
		campo_muestra.value = maximo - car_dato.length;
		}
}


//// Posiciona, setea tamaño y muestra una capa:
//// Última revisión: 28/11/07
//// objeto_relativo: objeto que se debe tomar como referencia para ubicar la capa.
//// ajustar_posicion: true: calcula las coordenadas para que la capa entre en la ventana, false: respeta las coordenadas especificadas.
//// forzar_apertura: true: ignora si la capa ya estaba abierta, false: devuelve false si la capa está abierta.
function mostrarCapa(nombre_capa, ancho, alto, posicion_x, posicion_y, x_adicional, y_adicional, objeto_relativo, ajustar_posicion, forzar_apertura)
{
	var capa = document.getElementById(nombre_capa);
	if (capa == null){
		////La capa no existe:
		return false;
		}
	//// Se verifica si la capa está visible y debe forzarse la apertura:
	if (capa.style.visibility == "visible" && forzar_apertura == false){
		return false;
		}
	//// Se setean el tamaño:
	capa.width = ancho;
	capa.height = alto;
	//// Si se especificó un objeto, se toma la posición:
	var pos_y = 0;
	var pos_x = 0;
	var alto_objeto = 0;
	if (objeto_relativo != ""){
		var objeto = document.getElementById(objeto_relativo);
		if (objeto != null){
			//// Se toma el valor de x:
			pos_x = objeto.offsetLeft;
			var pos_parent = objeto.offsetParent;
			while(pos_parent){
				pos_x+= pos_parent.offsetLeft;
				pos_parent = pos_parent.offsetParent;
				}
			pos_x+= x_adicional;
			//// Se toma el valor de y:
			pos_y = objeto.offsetTop;
			var pos_parent = objeto.offsetParent;
			while(pos_parent){
				pos_y+= pos_parent.offsetTop;
				pos_parent = pos_parent.offsetParent;
				}
			pos_y+= y_adicional;
			}
		}
	//// Si se especificaron coordenadas, se toman:
	if (posicion_x > 0) pos_x = posicion_x;
	if (posicion_y > 0) pos_y = posicion_y;
	//// Se verifica si se debe ajustar la posición dentro de la ventana:
	if (ajustar_posicion == true){
		
		}
	//// Se setea la posición y se muestra:
	capa.style.left = pos_x;
	capa.style.top = pos_y;
	if (capa.style.visibility == "hidden"){
		capa.style.visibility = "visible";
		}
	return true;
}


//// Oculta una capa visible:
//// Última revisión: 28/11/07
function ocultarCapa(nombre_capa)
{
	var capa = document.getElementById(nombre_capa);
	if (capa != null && capa.style.visibility == "visible"){
		capa.style.visibility = "hidden";
		return true;
		}
	else{
		//// La capa no existe o está oculta:
		return false;
		}
}


//// Muestra una capa invisible:
//// Última revisión: 07/03/07
function abrirVisor(nombre_visor)
{
	var capa = document.getElementById(nombre_visor);
	if (capa != null && capa.style.visibility == "hidden"){
		capa.style.visibility = "visible";
		}
}


//// Oculta una capa visible:
//// Última revisión: 07/03/07
function cerrarVisor(nombre_visor)
{
	var capa = document.getElementById(nombre_visor);
	if (capa != null && capa.style.visibility == "visible"){
		capa.style.visibility = "hidden";
		}
}


//// Abre una ventana del explorador:
//// Última revisión: 17/05/08
//// url: dirección que se abrirá en la ventana.
//// nombre: nombre de la ventana.
//// ancho: ancho de la ventana en pixeles.
//// alto: alto de la ventana en pixeles.
//// cuadrante:
////   1: superior izquierdo.
////   2: superior derecho.
////   3: inferior derecho.
////   4: inferior izquierdo.
////   5: centro de la pantalla.
////   0 u otro valor: utiliza los valores de posición x e y.
//// posx: posición x en pixeles, si no se especificó un cuadrante.
//// posy: posición y en pixeles, si no se especificó un cuadrante.
//// barra_direcciones: (true / false) muestra la barra de direcciones.
//// barra_menu: (true / false) muestra la barra de menú.
//// barras_scroll: (true / false) muestra las barras de scroll.
//// barra_estado: (true / false) muestra la barra de estado.
//// barra_herramientas: (true / false) muestra la barra de herramientas.
//// cambio_tamanio: (true / false) permite cambiar el tamaño de la ventana.
function abrirVentana(url, nombre, ancho, alto, cuadrante, posx, posy, barra_direcciones, barra_menu, barras_scroll, barra_estado, barra_herramientas, cambio_tamanio)
{
	//// Se toman los parámetros y se abre la ventana:
	var parametros = new String();
	if (barra_direcciones == true) parametros+= ",location";
	if (barra_menu == true) parametros+= ",menubar";
	if (barras_scroll == true) parametros+= ",scrollbars";
	if (barra_estado == true) parametros+= ",status";
	if (barra_herramientas == true) parametros+= ",toolbar";
	if (cambio_tamanio == true) parametros+= ",resizable";
	//// Se coloca la ventana en el lugar especificado:
	var ancho_pantalla = screen.width;
	var alto_pantalla = screen.height;
	if (ancho <= 0 || ancho > ancho_pantalla) ancho = ancho_pantalla;
	if (alto <= 0 || alto > alto_pantalla) alto = alto_pantalla;
	var ventana = window.open(url, nombre, "width="+ ancho +",height="+ alto + parametros);
	switch(cuadrante * 1){
		case 1: //// superior izquierdo:
			ventana.moveTo(0, 0);
			break;
		case 2: //// superior derecho:
			ventana.moveTo(ancho_pantalla - ancho, 0);
			break;
		case 3: //// inferior derecho:
			ventana.moveTo(ancho_pantalla - ancho, alto_pantalla - alto);
			break;
		case 4: //// inferior izquierdo:
			ventana.moveTo(0, alto_pantalla - alto);
			break;
		case 5: //// centro de la pantalla:
			ventana.moveTo((ancho_pantalla / 2) - (ancho / 2), (alto_pantalla / 2) - (alto / 2));
			break;
		default: //// se toman las coordenadas especificadas:
			if (posx < 0) posx = 0;
			if (posy < 0) posy = 0;
			if (posx + ancho > ancho_pantalla) posx = ancho_pantalla - ancho;
			if (posy + alto > alto_pantalla) posy = alto_pantalla - alto;
			ventana.moveTo(posx, posy);
			break;
		}
	ventana.focus();
	return true;
}


