// Devuelve el objeto form que esta adentro de un layer, tanto para Netscape como para Explorer
// Asignar el resultado a una variable Ej. form2 = getForm("layer2","frm2")
function getForm(layerName,formName) {
	var aux;
	if (navigator.appName == 'Netscape' && document.layers != null) { //Netscape
		aux = "document.layers['" + layerName + "'].document." + formName;
		return(eval(aux));
	} 
	else if (document.all != null) 	{ //Internet Explorer
		aux = "document.all['" + layerName + "'].document." + formName;
		return(eval(aux));
	}
}

//chequea todos los checkbox de un formulario 
function checkAll( formulario )
{
	for ( var i = 0; i < formulario.length; i++)
		if (formulario.elements[i].type == 'checkbox')			
			formulario.elements[i].checked  = true;			
}

function uncheckAll( formulario )
{
	for ( var i = 0; i < formulario.length; i++)
		if (formulario.elements[i].type == 'checkbox')			
			formulario.elements[i].checked  = false;			
}

function fncValorVacio( cValor )
{
	if (cValor == "" || cValor == null || cValor == "0" || cValor == " ")
		return(true);
	else
		return(false);
}

var cValorAnterior;

function funSavePrev( valor )
{ cValorAnterior = valor;
}

// valida una fecha
function validarFecha( texto )	{	
	if ( !fncValidar( texto, "##/##/####", null , cTipoDate , 10, null, null ,null ) )	{	
		return false;
	} else
		return true;
}

//Compara dos fechas. si la primera es mayor a la segunta devuelve 1, si es menor -1, si son iguales 
//devuelve 0. Las fechas deben tener formato dd/mm/yyyy
function compararFechas ( fecha1, fecha2 ) {

	var dateDesde = fecha1;
	var dateHasta = fecha2;

	var i = 0;
	var j = 0;
	var dia1, dia2, mes1, mes2, anio1, anio2;

	i = dateDesde.indexOf ('/');
	dia1 = dateDesde.substr(0, i);
	i++;
	j = dateDesde.indexOf ('/', i);
	mes1 = dateDesde.substr(i, j-i);
	j++;
	anio1 = dateDesde.substr(j, dateDesde.length - j);

	i = dateHasta.indexOf ('/');
	dia2 = dateHasta.substr(0, i);
	i++;
	j = dateHasta.indexOf ('/', i);
	mes2 = dateHasta.substr(i, j-i);
	j++;
	anio2 = dateHasta.substr(j, dateHasta.length - j);

	if ( anio1 > anio2 ) return (1);  else
	if ( anio1 < anio2 ) return (-1); else
	if ( mes1 > mes2 ) 	return (1);   else
	if ( mes1 < mes2 )	return (-1);  else
	if ( dia1 > dia2 ) return (1);    else
	if ( dia1 < dia2 ) return (-1);   else
		return(0);

}

// elimina los items seleccionados de la lista de seleccion
function borrarItem(seleccion) {


	// controla si se eligio algo
	if ( seleccion.selectedIndex == -1 ) {
		alert("Debe seleccionar un item !!!");
		return false;	
	}

	var cantidad = seleccion.length;
	var i = 0;
	var j = 0;

	while ( j++ < cantidad )
		if	( seleccion.options[i].selected && 
			  seleccion.options[i].value != 0 && 
			  seleccion.options[i].value != '' )
			seleccion.options[i] = null;
		else
			i++;

	seleccion.selectedIndex = -1;
	return true;			
}

// agrega un item con value=codigo y lo que se ve = descripcion
function agregarItem ( seleccion, seleccionFuente, controlar ) {	

	// controla si se eligio algo
	if ( seleccionFuente.selectedIndex == -1 ) {
		alert("Debe seleccionar un item !!!");
		return false;	
	}	

	for ( var j = 0 ; j < seleccionFuente.length ; j++ )
		if ( seleccionFuente.options[ j ].selected == true ) {
			var descripcion = seleccionFuente.options[ j ].text;
			var codigo = seleccionFuente.options[ j ].value;

			var new_option = new Option(descripcion, codigo);
			var cantidad =  seleccion.length;

			//Controla que el item no este repetido
			var found = false;
			for ( var i = 0 ; i < cantidad && !found ; i++ ) 
				if ( seleccion.options[ i ].value == codigo ) {
					found = true;					
					if ( controlar ) 
						alert('El item ' + descripcion + ' ya se encuentra en la lista !!!');
				}
			if ( !found )
				seleccion.options[cantidad] = new_option;
		}

	seleccionFuente.selectedIndex = -1;
	return true;
}

function addItem( lista, codigo, descripcion ) {
	var enc = false;

	for ( var i = 0; i < lista.length && !enc; i++ )
		if ( lista.options[i].value == codigo ) enc = true;

	if ( enc ) return false;

	var opcion = new Option( descripcion, codigo );
	lista.options[lista.length] = opcion;
	return true;

}


// devuelve la clave de un par clave = valor
function clave( cadena, separador ){

	var cadena_aux = '';

	if ( cadena.indexOf( separador ) == -1 )
		return cadena
	
	if ( cadena.length > 1 )

		return cadena.substring( 0, cadena.indexOf( separador ) ) ;

	else

		return null;

}


// devuelve el valor de un par clave = valor
function valor( cadena, separador ){

	var cadena_aux = '';

	if ( cadena.indexOf( separador) != -1 )

		return cadena.substring( cadena.indexOf( separador ) + 1 , cadena.length ) ;

	else

		return null;

}

// selecciona todos los items de una lista multiple
function seleccionarOptions( lista ){
	for ( var i = 1 ; i < lista.length; i++)
			lista.options[i].selected = true;
	return true;
}

// true si la lista tiene al menos un item seleccionada; false en caso contrario
function hasItemsSelected( lista ) {

	for ( var i = 0 ; i < lista.length  ; i++ )
		if ( 	lista.options[ i ].value != 0  &&
				lista.options[ i ].value != '' &&
				lista.options[ i ].value != null  && 
			   lista.options[ i ].selected 	)	
			return true;
	return false;
}

//Cuenta la cantidad de checkbox seleccionados con un name pasado por parametro
function countSelectedCheckBox ( form, checkName ) {
		
	var cant = 0;

	for ( var i = 0; i < form.length; i++)
		if ( form.elements[i].type == 'checkbox' && form.elements[i].name == checkName &&
			 form.elements[i].checked )			
			cant++;
	
	return cant;

}

function roundToDecimals ( Valor, Decimales ) {
	return Math.round( Valor * Math.pow( 10, Decimales ) ) / Math.pow( 10, Decimales );

}

function myEscape ( stringOrigen ) {
	stringOrigen = escape( stringOrigen );
	return stringOrigen.replace('+', '%2b');
}



