//// 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: 09/03/10

//// Posiciona el cursor en el objeto especificado:
//// Ultima revisión: 09/03/10
//// formulario: opcional
function colocarCursor(id_objeto)
{
	var objeto = document.getElementById(id_objeto);
	if (objeto != null && objeto.disabled == false && objeto.readOnly == false) objeto.focus();
}


//// Anula los elementos del formulario con los id especificados:
//// Última revisión: 09/03/10
//// 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;
			if (e.type != "button"){
				e.style.backgroundColor = "#CCCCCC";
				}
			}
		}
}


//// Habilita los elementos del formulario con los id especificados:
//// Última revisión: 09/03/10
//// 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;
			if (e.type != "button"){
				e.style.backgroundColor = "";
				}
			}
		}
}


//// 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 de checkBox:
//// Ú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 items seleccionados en una lista Select:
//// Última revisión: 16/12/08
//// botones: el id de los botones separados por coma.
function contarItemsSelect(id_item)
{
	var seleccionados = 0;
	var lista_items = document.getElementById(id_item);
	if (lista_items != null){
		for (var i = 0; i < lista_items.length; i++){
			if (lista_items[i].selected == true) seleccionados++;
			}
		return seleccionados;
		}
	else{
		alert("Error: "+ id_item +" no existe.");
		return seleccionados;
		}
}


//// Selecciona los items de una lista Select:
//// Última revisión: 22/01/09
//// id_item: id de la lista de items.
//// items_seleccionados: lista de items que deben seleccionarse:
function seleccionarItemsSelect(id_item, items_seleccionados)
{
	
	var lista_items = document.getElementById(id_item);
	if (lista_items != null){
		var items_seleccionados = new String(items_seleccionados);
		items_seleccionados = items_seleccionados.split(", ");		
		for (var i = 0; i < lista_items.length; i++){
			for (var j = 0; j < items_seleccionados.length; j++){
				if (lista_items[i].value == items_seleccionados[j]){
					//lista_items.selectedIndex = i;
					lista_items[i].selected = true;
					}
				}
			}
		return true;
		}
	else{
		alert("Error: "+ id_item +" no existe.");
		return false;
		}
}


//// Cuenta los caracteres del campo especificado y coloca el resultado en el campo de cuenta:
//// Última revisión: 04/03/10
//// 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, o campo de datos que contiene el número máximo.
function contarCaracteres(dato, muestra, maximo)
{
	var campo_dato = document.getElementById(dato);
	var campo_muestra = document.getElementById(muestra);
	var campo_cantidad = document.getElementById(maximo);
	if (campo_cantidad != null){
		maximo = campo_cantidad.value;
		}
	var car_dato = new String(campo_dato.value);
	if (car_dato.length > maximo){
		campo_dato.value = car_dato.substring(0, maximo - 1);
		}
	var restantes = maximo - car_dato.length;
	if (campo_muestra.type == "text") campo_muestra.value = restantes;
	else campo_muestra.innerHTML = restantes;
}


//// Posiciona, setea tamaño y muestra una capa:
//// Última revisión: 17/03/09
//// nombre_capa: nombre de la capa.
//// ancho: ancho de la capa.
//// alto: alto de la capa.
//// posicion_x: distancia desde el margen izquierdo. 
//// posicion_y: distancia desde el margen superior. 
//// x_adicional: pixeles extras para el margen horizontal.
//// y_adicional: pixeles extras para el margen vertical.
//// 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 crea el iframe:
	celda_iframe.innerHTML = "<iframe id='frame_datos' name='frame_datos' width='"+ ancho +"' height='"+ alto +"' frameborder='0'></iframe>";
	
	//// 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;
}


//// Última revisión: 02/02/09
//// Calcula las medidas de una imagen en función de los valores máximos especificados.
//// agrandar: true, agranda la imagen si es menor a los maximos especificador. false, devuelve el tamaño original si es menor.
function calcularMedidasImagen(ancho_imagen, alto_imagen, ancho_maximo, alto_maximo, agrandar)
{
	//// La imagen es más chica que el máximo especificado y no se debe agrandar:
	if (agrandar == true){
		if (ancho_imagen < ancho_maximo){
			alto_imagen = ancho_maximo * (alto_imagen / ancho_imagen);
			ancho_imagen = ancho_maximo;
			}
		if (alto_imagen < alto_maximo){
			ancho_imagen = alto_maximo / (alto_imagen / ancho_imagen);
			alto_imagen = alto_maximo;
			}
		}
	//// Se calcula el tamaño de la imagen:
	if (ancho_imagen > ancho_maximo || alto_imagen > alto_maximo){
		//// La imagen es más grande que el máximo especificado:
		if (ancho_imagen > ancho_maximo){
			alto_imagen = ancho_maximo * (alto_imagen / ancho_imagen);
			ancho_imagen = ancho_maximo;
			}
		if (alto_imagen > alto_maximo){
			ancho_imagen = alto_maximo / (alto_imagen / ancho_imagen);
			alto_imagen = alto_maximo;
			}
		}
	return Math.floor(ancho_imagen) +", "+ Math.floor(alto_imagen);
}




