
// Funcion que Levanta una Ventana PopUp
// parENombVent : nombre de la ventana
// parEDireUrl : dirección url de la pagina que se quiere abrir
// parEScrollBars : (S/N) indicador para habilitar o no los scrollbars
// parEResizable: (S/N) indicador para habilitar o no el poder cambiar de tamaño la ventana
// parEWidth : ancho de la ventanta
// parEHeight : alto de la ventana
// parELeft : (opcional -> '') posicion derecha de la ventana (centro horizontal automático si no se suministra)
// parETop : (opcional -> '') posicion superior de la ventana (centro vertical automático si no se suministra)
function funLevantaPopUp (parENombVent, parEDireUrl, parEScrollBars, parEResizable, parEWidth, parEHeight, parELeft, parETop)
{

	// Declaracion de Variables
	var varFlyout;

	// Setea el ancho máximo de la ventana y la centro si no se paso un valor 
	// de parametro o si el valor es mayor al máximo permitido
	if ((parEWidth>=screen.width-12)||(parEWidth==""))
	{
		parEWidth = screen.width - 12;
		parELeft = 0;
	}

	// Setea el alto máximo de la ventana y la centro si no se paso un valor
	// de parametro o si el valor es mayor al máximo permitido
	if ((parEHeight>=screen.height-58)||(parEHeight==""))
	{
		parEHeight = screen.height - 58;
		parETop = 0;
	}

	// Centra la ventana a lo ancho si no se paso un valor de parametro
	if ((parELeft=="")&&(parELeft!="0"))
	{
		parELeft = (screen.width - 12 - parEWidth) / 2;
	}

	// Centra la ventana a lo alto si no se paso un valor de parametro
	if ((parETop=="")&&(parETop!="0"))
	{
		parETop = (screen.height - 58 - parEHeight) / 2;
	}

	// Crea la nueva ventana
	varFlyout = window.open(parEDireUrl,parENombVent,"resizable=" + parEResizable + ",scrollbars=" + parEScrollBars + ",width=" + parEWidth + ",height=" + parEHeight + ",top=" + parETop + ",left=" + parELeft)

}

// Funcion que deshabilita el Click Derecho del Mouse
function funDeshabilitaClickDerecho ()
{
	if (event.button == 2)
	{
		alert ("¡¡ Botón Derecho del Mouse Deshabilitado !!")
	}
}

// Funcion que cambia el color del background de un botton
function funCambiaColorComando (parEComando, parEColoBack, parEColoText)
{
	// Solo realiza el efecto si el combado esta habilitado
	if (parEComando.disabled == false)
	{
		if (parEColoBack != "")
		{
			parEComando.style.backgroundColor = parEColoBack;
		}
		if (parEColoText != "")
		{
			parEComando.style.color = parEColoText;
		}		
	}	
}

// Funcion que valida si un e-mail esta bien ingresado
function funValidaMail (parEMail)
{
	varPasa=0;
	varCuenta=0;

	// Verifica que exista la cadena del e-mail
	if (parEMail.value.length==0) return false;

	// Verifica el que exista el (@)
	for (varI=0;varI<parEMail.value.length;varI++)
	{
		EsteCaracter=parEMail.value.substring(varI,varI+1);
		if (EsteCaracter == "@")
		{
			varCuenta++;
			varPosi=varI;
		}
	}

	// Verifica que exista solo 1 (@)
	if (varCuenta == 1)
		varPasa=1;
	else
		varPasa=0;

	// Verifica que haya por lo menos un (.) despues del (@)
	if (varPasa==1)
	{
		varPasa = 0;
		for (varI=varPosi+1;varI<parEMail.value.length-1;varI++)
		{
			EsteCaracter=parEMail.value.substring(varI,varI+1);
			if (EsteCaracter == ".") varPasa=1;
		}
	}

	// Devuelve el exito o fracaso de la validacion
	if (varPasa == 1)
		return true;
	else
		return false;
}

// Funcion que valida que el control tenga ingresado un valor
function funValidaTextoControl(parEControl,parENombCont)
{
	// valida si tiene ingresado algo
	if (parEControl.value.length==0)
	{
		alert ('El campo ' + parENombCont + ' se encuentra vacío.');
		parEControl.focus();
		return false;
	}

	// devuelve exito
	return true;
}

// Funcion que valida que el control tenga ingresado un valor
function funValidaValorControl (parEControl,parEValoMini,parEValoMaxi,parENombCont)
{
	// valida si tiene ingresado algo
	if (parEControl.value.length==0)
	{
		alert ('El campo ' + parENombCont + ' se encuentra vacío.');
		parEControl.focus();
		return false;
	}

	// valida si tiene un valor menor al minimo
	if (parEValoMini != null)
	{
		if (parseFloat(parEControl.value) < parseFloat(parEValoMini))
		{
			alert ('El campo ' + parENombCont + ' debe ser mayor a ' + parEValoMini);
			parEControl.focus();
			return false;
		}
	}

	// valida si tiene un valor mayor al maximo
	if (parEValoMaxi != null)
	{
		if (parseFloat(parEControl.value) > parseFloat(parEValoMaxi))
		{
			alert ('El campo ' + parENombCont + ' debe ser menor a ' + parEValoMaxi);
			parEControl.focus();
			return false;
		}
	}

	// devuelve exito
	return true;
}

// Funcion que valida el ingreso de decimales y punto decimal al digitar una tecla
function funValidaValorNumericoDigito(parECajaNume,parENumeDeci)
{
	// declaracion de variables
	var varPosi, varLen, varNumeDeciActu;

	// Valido si puede ingresar el punto decimal
	if (parENumeDeci == '0') 
	{
		// solo numeros
		if ((event.keyCode<48)||(event.keyCode>57)) event.returnValue = false;
	} 
	else 
	{
		// solo numeros y punto
		if (((event.keyCode<48)||(event.keyCode>57))&&(event.keyCode!=46)) event.returnValue = false;
		// valido si ya existe un punto decimal
		varPosi = parECajaNume.value.indexOf('.')
		if ((varPosi != -1)&&(event.keyCode == 46)) event.returnValue = false;
	}
}

// Funcion que valida que no se pase del maximo de decimales al cambiar las condiciones de maximo de decimales
function funValidaValorNumericoTotal(parECajaNume,parENumeDeci)
{
	// declaracion de variables
	var varPosi, varLen, varNumeDeciActu;

	// valido los decimales
	varPosi = parECajaNume.value.indexOf('.')
	if (varPosi != -1)
	{
		varLen = parECajaNume.value.length
		varNumeDeciActu = varLen - varPosi - 1;
		if (varNumeDeciActu > parseFloat(parENumeDeci))
		{
			varPartEnte = parECajaNume.value.substring(0,varPosi);
			if (parENumeDeci != '0')
			{
				varPartDeci = parECajaNume.value.substring(varPosi+1,varPosi+1+parseFloat(parENumeDeci));
				parECajaNume.value = varPartEnte + '.' + varPartDeci;
			}
			else
			{
				parECajaNume.value = varPartEnte;
			}
		}
	}
}

// Funcio que llena datos en un combo sin filtrar
function funLLenaCombo(parECombo,arrEListCodi,arrEListText,parECodiSele,parEOpciInic,parECodiOpciInic,parETextOpciInic)
{
	varLen = arrEListCodi.length;
	parECombo.length = 0;
	varPosiSele = -1;

	// verifica si tiene que añadir una opcion al inicio
	if (parEOpciInic=="S")
	{
		parECombo.length = parECombo.length + 1;
		parECombo.options[0].value = parECodiOpciInic;
		parECombo.options[0].text = parETextOpciInic;
	}

	// llena todos los elementos de la lista
	varLenActu = parECombo.length;
	for (varI=0;varI<varLen;varI++)
	{
		parECombo.length = parECombo.length + 1;
		parECombo.options[varLenActu + varI].value = arrEListCodi[varI];
		parECombo.options[varLenActu + varI].text = arrEListText[varI];
		if (parECodiSele==arrEListCodi[varI])
		{
			varPosiSele = parECombo.length-1;
		}
	}

	// ubica el elemento de la lista por defecto
	if (varPosiSele!=-1) parECombo.options.selectedIndex=varPosiSele;
}

// Funcio que concatena datos en un combo sin filtrar
function funConcatenaCombo(parECombo,arrEListCodi,arrEListText,parECodiSele)
{
	varLenActu = parECombo.length;
	varLenNuev = arrEListCodi.length;
	varPosiSele = -1;

	// concatena todos los elementos de la lista
	for (varI=0;varI<varLenNuev;varI++)
	{		
		parECombo.length = parECombo.length + 1;
		parECombo.options[varLenActu + varI].value = arrEListCodi[varI];
		parECombo.options[varLenActu + varI].text = arrEListText[varI];
		if (parECodiSele==arrEListCodi[varI])
		{
			varPosiSele = parECombo.length-1;
		}
	}

	// ubica el elemento de la lista por defecto
	if (varPosiSele!=-1) parECombo.options.selectedIndex=varPosiSele;
}

// Funcion que llena un combo Multiple sin filtrar ningun dato
function funLLenaComboMultiple(parECombo,arrEListCodi,arrEListText,parECodiSele,parEOpciInic,parECodiOpciInic,parETextOpciInic)
{

	varLen = arrEListCodi.length;
	parECombo.length = 0;
	varPosiSele = -1;

	// verifica si tiene que añadir una opcion al inicio
	if (parEOpciInic=="S")
	{
		parECombo.length = parECombo.length + 1;			
		parECombo.options[parECombo.length-1].value = parECodiOpciInic;
		parECombo.options[parECombo.length-1].text = parETextOpciInic;
	}

	// llena todos los elementos de la lista
	for (varI=0;varI<varLen;varI++)
	{
		parECombo.length = parECombo.length + 1;			
		parECombo.options[parECombo.length-1].value = arrEListCodi[varI];
		parECombo.options[parECombo.length-1].text = arrEListText[varI];
		if (parECodiSele!="")
		{
			varAux = "," + arrEListCodi[varI] + ",";
			if (parECodiSele.match(varAux)==varAux)
				parECombo.options[parECombo.length-1].selected = true;
		}
	}

}

// Funcion que llena un combo con datos filtrados por una Clave (parEFilt)
function funLLenaComboFiltrado (parECombo,arrEListFilt,arrEListCodi,arrEListText,parEFilt,parECodiSele,parEOpciInic,parECodiOpciInic,parETextOpciInic)
{
	varLen = arrEListCodi.length;
	parECombo.length = 0;
	varPosiSele = -1;

	// verifica si tiene que añadir una opcion al inicio
	if (parEOpciInic=="S")
	{
		parECombo.length = parECombo.length + 1;			
		parECombo.options[parECombo.length-1].value = parECodiOpciInic;
		parECombo.options[parECombo.length-1].text = parETextOpciInic;
	}

	// llena todos los elementos de la lista
	for (varI=0;varI<varLen;varI++)
	{
		if (arrEListFilt[varI]==parEFilt)
		{
			parECombo.length = parECombo.length + 1;
			parECombo.options[parECombo.length-1].value = arrEListCodi[varI];
			parECombo.options[parECombo.length-1].text = arrEListText[varI];
			if ((parECodiSele!="")&&(parECodiSele==arrEListCodi[varI]))
			{
				varPosiSele = parECombo.length-1;
			}
		}
	}

	// ubica el elemento de la lista por defecto
	if (varPosiSele!=-1) parECombo.options.selectedIndex = varPosiSele;
}

// Funcion que llena un combo con datos filtrados por dos Claves (parEFilt1,parEFilt2)
function funLLenaComboFiltradoDosFiltros(parECombo,arrEListFilt1,arrEListFilt2,arrEListCodi,arrEListText,parEFilt1,parEFilt2,parECodiSele,parEOpciInic,parECodiOpciInic,parETextOpciInic)
{
	varLen = arrEListCodi.length;
	parECombo.length = 0;
	varPosiSele = -1;

	// verifica si tiene que añadir una opcion al inicio
	if (parEOpciInic=="S")
	{
		parECombo.length = parECombo.length + 1;			
		parECombo.options[parECombo.length-1].value = parECodiOpciInic;
		parECombo.options[parECombo.length-1].text = parETextOpciInic;
	}

	// llena todos los elementos de la lista
	for (varI=0;varI<varLen;varI++)
	{
		if ((arrEListFilt1[varI]==parEFilt1)&&(arrEListFilt2[varI]==parEFilt2))
		{
			parECombo.length = parECombo.length + 1;			
			parECombo.options[parECombo.length-1].value = arrEListCodi[varI];
			parECombo.options[parECombo.length-1].text = arrEListText[varI];
			if ((parECodiSele!="")&&(parECodiSele==arrEListCodi[varI]))
			{
				varPosiSele = parECombo.length-1;
			}
		}
	}

	// ubica el elemento de la lista por defecto
	if (varPosiSele!=-1) parECombo.options.selectedIndex=varPosiSele;
}

// Funcion que concatena un combo con datos filtrados por una Clave (parEFilt)
function funConcatenaComboFiltrado(parECombo,arrEListFilt,arrEListCodi,arrEListText,parEFilt,parECodiSele)
{
	var varI = 0;
	var varLen = arrEListCodi.length;
	var varPosiSele = -1;

	// llena todos los elementos de la lista
	for (varI=0;varI<varLen;varI++)
	{
		if (arrEListFilt[varI]==parEFilt)
		{
			parECombo.length = parECombo.length + 1;			
			parECombo.options[parECombo.length-1].value = arrEListCodi[varI];
			parECombo.options[parECombo.length-1].text = arrEListText[varI];
			if ((parECodiSele!="")&&(parECodiSele==arrEListCodi[varI]))
			{
				varPosiSele = parECombo.length-1;
			}
		}
	}

	// ubica el elemento de la lista por defecto
	if (varPosiSele!=-1) parECombo.options.selectedIndex=varPosiSele;
}

// Funcion que llena un combo Multiple con datos filtrados por una Clave (parEFilt)
function funLLenaComboFiltradoMultiple(parECombo,arrEListFilt,arrEListCodi,arrEListText,parEFilt,parECodiSele,parEOpciInic,parECodiOpciInic,parETextOpciInic)
{
	varLen = arrEListCodi.length;
	parECombo.length = 0;
	varPosiSele = -1;

	// verifica si tiene que añadir una opcion al inicio
	if (parEOpciInic=="S")
	{
		parECombo.length = parECombo.length + 1;			
		parECombo.options[parECombo.length-1].value = parECodiOpciInic;
		parECombo.options[parECombo.length-1].text = parETextOpciInic;
	}

	// llena todos los elementos de la lista
	for (varI=0;varI<varLen;varI++)
	{
		if (arrEListFilt[varI]==parEFilt)
		{
			parECombo.length = parECombo.length + 1;			
			parECombo.options[parECombo.length-1].value = arrEListCodi[varI];
			parECombo.options[parECombo.length-1].text = arrEListText[varI];
			if (parECodiSele!="")
			{
				varAux = "," + arrEListCodi[varI] + ",";
				if (parECodiSele.match(varAux)==varAux)
					parECombo.options[parECombo.length-1].selected = true;
			}
		}
	}

}

// Funcion que elimina un elemento de un combo
function funEliminaItemCombo (parECombo,parEPosiItem)
{
	// Declaracion de variables
	var varI, varLen;

	// Inicializa las variables
	varLen = parECombo.length;

	// Elimino la actividad del combo	
	for (varI=parEPosiItem;varI<varLen-1;varI++)
	{
		parECombo.options[varI].value = parECombo.options[varI+1].value;
		parECombo.options[varI].text = parECombo.options[varI+1].text;
	}
	parECombo.length = parECombo.length - 1;
}

// Funcion que cuenta el numero de caracteres ingresado en un textarea
function funCuentaCaracteres(parENumeMaxi,parETextArea,parETextMaxi)
{
	// Variables
	varLargo = parENumeMaxi;
	varLargTextArea = parETextArea.value.length;
	varValoTextArea = parETextArea.value;	

	// Actualizo el texto de ayuda
	if (parETextMaxi != null) parETextMaxi.value = varLargo - varLargTextArea;

	// Verifico si debo bloquear el campo
	if (varLargTextArea >= varLargo)
	{
		parETextArea.value = varValoTextArea.substring(0,varLargo)
		if (parETextMaxi != null) parETextMaxi.value = 0;
	}
}

// Funcion que redondea un numero
function roundit(Num, Places, parEDeci)
{
	var varI;
	if (Places > 0) 
	{
		if ((Num.toString().length - Num.toString().lastIndexOf(parEDeci)) > (Places + 1))
		{
			var Rounder = Math.pow(10, Places);
			Num = Math.round(Num * Rounder) / Rounder;

			varCero = "";
			varDeci = Num.toString().length - Num.toString().lastIndexOf(parEDeci) - 1;

			if (Num.toString().lastIndexOf(parEDeci)>0)
			{
				for (varI=varDeci;varI<Places;varI++)
				{
					varCero = varCero + "0";
				}
				Num = Num + varCero;
			}
			else 
			{
				for (varI=0;varI<Places;varI++)
				{
					varCero = varCero + "0";
				}
				Num = Num + "." + varCero;
			}

			return Num;
		}
		else
		{
			varCero = "";
			varDeci = Num.toString().length - Num.toString().lastIndexOf(parEDeci) - 1;

			if (Num.toString().lastIndexOf(parEDeci)>0)
			{
				for (varI=varDeci;varI<Places;varI++)
				{
					varCero = varCero + "0";
				}
				Num = Num + varCero;
			}
			else 
			{
				for (varI=0;varI<Places;varI++)
				{
					varCero = varCero + "0";
				}
				Num = Num + "." + varCero;
			}

			return Num;
		}
	}
	else return Math.round(Num);
}

// Funcion que convierte valores numericos en letras
function funConvierteNumeroLetras (parENumero)
{

	// Declaración de variables
	var unidad = new Array(9)
	var diez = new Array(9)
	var decena = new Array(9)
	var centena = new Array(9)
	var sLectura
	var sNumero
	var bMiles
	var parSNumeroLetras

	unidad[1] = "Uno "
	unidad[2] = "Dos "
	unidad[3] = "Tres "
	unidad[4] = "Cuatro "
	unidad[5] = "Cinco "
	unidad[6] = "Seis "
	unidad[7] = "Siete "
	unidad[8] = "Ocho "
	unidad[9] = "Nueve "

	diez[1] = "Once "
	diez[2] = "Doce "
	diez[3] = "Trece "
	diez[4] = "Catorce "
	diez[5] = "Quince "
	diez[6] = "Dieciseis "
	diez[7] = "Diecisiete "
	diez[8] = "Dieciocho "
	diez[9] = "Diecinueve "

	decena[1] = "Diez "
	decena[2] = "Veinte "
	decena[3] = "Treinta "
	decena[4] = "Cuarenta "
	decena[5] = "Cincuenta "
	decena[6] = "Sesenta "
	decena[7] = "Setenta "
	decena[8] = "Ochenta "
	decena[9] = "Noventa "

	centena[1] = "Ciento "
	centena[2] = "Doscientos "
	centena[3] = "Trescientos "
	centena[4] = "Cuatrocientos "
	centena[5] = "Quinientos "
	centena[6] = "Seiscientos "
	centena[7] = "Setecientos "
	centena[8] = "Ochocientos "
	centena[9] = "Novecientos "

	bMiles = false

	parENumero = parENumero.toString();
	if (parseFloat(parENumero)==0)
	{
		parENumero = "0"
		sLectura = "Cero "
		return sLectura
	}

	sNumero = parENumero
	sLectura = ""
	while (sNumero.length > 0)
	{

		varLen = sNumero.length
		if ((varLen==3)||(varLen==6)||(varLen==9)||(varLen==12))
		{
			if ((sNumero.substr(0,1)=="1") && (sNumero.substr(1,1)=="0") && (sNumero.substr(2,1)=="0"))
			{
				sLectura = sLectura + "Cien "
			}
			else
			{
				sLectura = sLectura + centena[parseInt(sNumero.substr(0,1))]
			}
		}
		else if ((varLen==2)||(varLen==5)||(varLen==8)||(varLen==11))
		{
			if ((parseInt(sNumero.substr(0,1))==1) && (parseInt(sNumero.substr(1,1))>0))
			{
				sLectura = sLectura + diez[parseInt(sNumero.substr(1,1))]
				sNumero = sNumero.substr(1,sNumero-length-1)
			}
			else
			{				
				//alert (parseInt(sNumero.substr(0,1)))
				sLectura = sLectura + decena[parseInt(sNumero.substr(0,1))]
				if (parseInt(sNumero.substr(1,1))>0)
				{
					sLectura = sLectura + "y "
				}
			}
		}
		else if ((varLen==1)||(varLen==4)||(varLen==7)||(varLen==10))
		{
			if (parseInt(sNumero.substr(0,1))>1)
			{
				sLectura = sLectura + unidad[parseInt(sNumero.substr(0,1))]
			}
			else
			{
				if (varLen==1)
				{
					sLectura = sLectura + "Uno "
				}
				else
				{
					sLectura = sLectura + "Un "
				}
			}
		}
		
		// -- //
		do
		{
			if ( (bMiles == false) && (((sNumero.length==6)&&(parseInt(sNumero.substr(0,1))!=0)) || ((sNumero.length==5)&&(parseInt(sNumero.substr(0,1))!=0)) || ((sNumero.length==4)&&(parseInt(sNumero.substr(0,1))!=0))) )
			{
				bMiles = true
			}
			varLen = sNumero.length
			if ((varLen==4)||(varLen==10))
			{
				if ((varLen>6) || (bMiles==true))
				{
					sLectura = sLectura + "Mil "
				}
				else
				{
					sLectura = sLectura + ""
				}
			}
			else if (varLen==7)
			{
				if ((varLen==7) && (parseInt(sNumero.substr(0,1))==1))
				{
					sLectura = sLectura + "Millón "
				}
				else
				{
					sLectura = sLectura + "Millones "
				}
			}
			sNumero = sNumero.substr(1,sNumero.length-1)
		}
		while (sNumero.substr(0,1)=="0")

	}

	return sLectura;

}

// Funcion que valida el ingreso del nombre de usuario
function funValidaEspacio(parECajaNume)
{
	// solo letras
	if (event.keyCode==32) event.returnValue = false;
}

// Función para Menú Flotante

function funMenuFlotante(parEcapa,parEx,parEy)
{
	// Seteo variables a modificar
	var varDesp = 0;
	var pos_y = 0;

	varDesp = document.body.scrollTop;
	pos_x = parEx;
	pos_y = parEy + varDesp;

	setTimeout("funMenuFlotante('" + parEcapa + "'," + parEx + "," + parEy + ")",10);

	eval('document.all' + '["' + parEcapa + '"]' + '.style.left = ' + pos_x);
	eval('document.all' + '["' + parEcapa + '"]' + '.style.top = ' + pos_y);
}

// Función que permite el ingreso de caracteres alfanuméricos y números
function funPermAlfaNume(parEkeyCode)
{
	if ((parEkeyCode>47) && (parEkeyCode<58) || (parEkeyCode>64) && (parEkeyCode<91) || (parEkeyCode>96) && (parEkeyCode<123))
	{
		return false;
	}
	else
		return true;
}

// Función que permite el ingreso de caracteres alfanuméricos y números
/*function funConcatenarCombos(varForm)
{
	if (varForm.cmbPrimOpci.value = 1)
	{
		
		document.write('<tr>
					   <td height="24" class="tituform">&nbsp;</td>
					   <td><select name="cmbSeguOpci" class="textbox" onChange="return funConcatenarCombos(document.forms[\'frmBuscaRep\']);" onKeyPress="if (event.keyCode==13) {return funValidaDatos(document.forms[\'frmBuscaRep\'])}">
            <option value="1">Ponentes</option>
            <option value="2">Asistentes</option>
            <option value="3">Estudiantes - Asistentes</option>
            <option value="4">Estudiantes - Ponentes</option>            
            <option value="N" selected>Elija una opci&oacute;n</option>
          </select></td>
          <td>&nbsp;</td>
          <td>&nbsp;</td>		  
        </tr>')
		return true;
	}
	else
		return true;
}*/