/*** array  **/
function makeArray(n){
	this.length=n;
	for (var i=1;i<=n;i++){
		this[i]=null;
	}
	return this;
}

/***
*	function strltrim(str)
*	char *str
*	Retorna un string sin espacios (' ') a la izquierda
*/
function strltrim(str) {
	var ch;
	var len;
	var i;

	ch = ' ';
	len = str.length;
	for (i = 0; i < len; i++) {
		ch = str.charAt(i);
		if (ch != ' ')
			break;
	}
	if (ch != ' ')
		return str.substring(i, len);
	else
		return "";
}


/***
*	function quita_ceros(str)
*	char *str
*	Retorna un string sin espacios ('0') a la izquierda
*/
function quita_ceros(str) {
	var ch;
	var len;
	var i;

	ch = '0';
	len = (str.length)-1;
	for (i = 0; i < len; i++) {
		ch = str.charAt(i);
		if (ch != '0')
			break;
	}
	if (ch != '0')
		return str.substring(i, len);
	else
		return "0";
}


/***
*	function strrtrim(str)
*	char *str
*	Retorna un string sin espacios (' ') a la derecha
*/
function strrtrim(str) {
	var ch;
	var len;
	var i;

	ch = ' ';
	len = str.length;
	for (i = len - 1; i >= 0; i--) {
		ch = str.charAt(i);
		if (ch != ' ')
			break;
	}
	if (i >= 0)
		return str.substring(0, i + 1);
	else
		return "";
}


/***
*	function stralltrim(str)
*	char *str
*	Retorna un string sin espacios (' ') a la izquierda ni derecha
*/
function stralltrim(str) {
	return strrtrim(strltrim(str));
}




/***
*	function strReplicate(str, n)
*	retorna un string formado por n repeticiones de str
*/
function strReplicate(str, n) {
	var resp;
	var i;

	resp = "";
	for (i = 0; i < n; i++)
		resp += str;
	return resp;
}


/***
*	function strpadl(n, str, cfill)
*	Llena con el caracter cfill necesarios a la izquierda hasta que la cadena
*	sea de largo n.
*	Si str es mas larga la trunca
*	Si no se pasa scill se asume " ".
*	Si cfill es de mas de un caracter se toma solo el primero
*/
function strpadl(n, str, cfill) {
	var len = str.length;
	var c = " ";
	if (len > n)
		return str.substring(0, n + 1);
	if (cfill != null)
		c = cfill.substring(0, 1);
	return strReplicate(c, n - len) + str;;
}


/***
*	function strpadr(n, str, cfill)
*	Llena con el caracter cfill necesarios a la izquierda hasta que la cadena
*	sea de largo n.
*	Si str es mas larga la trunca
*	Si no se pasa scill se asume " ".
*	Si cfill es de mas de un caracter se toma solo el primero
*/
function strpadr(n, str, cfill) {
	var len = str.length;
	var c = " ";
	if (len > n)
		return str.substring(0, n + 1);
	if (cfill != null)
		c = cfill.substring(0, 1);
	return str + strReplicate(c, n - len);
}


/***
*	function strpadc(n, str, cfill)
*	Llena con el caracter cfill necesarios para centrar la cadena dejandola de largo n.
*	Si str es mas larga la trunca
*	Si no se pasa scill se asume " ".
*	Si cfill es de mas de un caracter se toma solo el primero
*/
function strpadc(n, str, cfill) {
	var len = str.length;
	var c = " ";
	if (len > n)
		return str.substring(0, n + 1);
	if (cfill != null)
		c = cfill.substring(0, 1);
	return strpadr(n / 2, strpadl((n + 1) / 2, str, c), c);
}


/***
*	function strisDigit(str)
*	char *str
*	Retorna true si la cadena es numerica, false eoc
*/
function strisDigit(str) {
	var ch;
	var i 

	ch = ' ';
	if (str.length == 0)
        return false;
	for (i = 0; i < str.length; i++) {
		ch = str.charAt(i);
		if (ch < '0' || '9' < ch)
			return false;
    }
	return true;
}


/***
*	function strisInt(str)
*	char *str
*	Retorna true si la cadena es de la forma [+|-]digitos, false eoc
*/
function strisInt(str) {
	var ch;
	if (str.length == 0)
		return false;
	ch = str.charAt(0);
	if (ch == '-' || ch == '+')
		return strisDigit(str.substring(1, str.length));
	return strisDigit(str);
}

/***
*	function Neg(str)
*	char *str
*	Retorna true si la cadena es de la forma [-]digitos, false eoc
*/
function strisInt(str) {
	var ch;
	if (str.length == 0)
		return false;
	ch = str.charAt(0);
	if (ch == '-')
		return strisDigit(str.substring(1, str.length));
	return strisDigit(str);
}


/***
*	function strisFloat(str)
*	char *str
*	Retorna true si la cadena es de la forma [+|-]digitos[.digitos],
*	false eoc
*/
function strisFloat(str) {
	var ch;
	var s;
	var pos;
	if (str.length == 0)
		return false;
	ch = str.charAt(0);
	if (ch == '-' || ch == '+')
		s = str.substring(1, str.length);
	else
		s = str;
	pos = s.indexOf('.');
	if (pos == -1)
		return strisInt(s);
	return strisInt(s.substring(0, pos))
		&& strisInt(s.substring(pos + 1, s.length));
}


/***
*	function strRound(x, dec)
*	Redondea x a dec decimales, entregando el valor como un string
*	Si dex < 0 o si x es un numero entero, retorna el valor de x como string
*/
function strRound(x, dec) {
	var str;
	var pos;
   var neg;

  	neg = x < 0;
   if (neg)
   	x = -x;

	str = x + "";
	if (dec < 0)
		return str;

	pos = str.indexOf('.');
	if (pos == -1)
		return (neg ? "-" : "") + str;		//	Se trataba de un entero

	//	Pasa los decimales a la parte entera y lo deja como string
	str = Math.round(x * Math.pow(10, dec)) + "";

	//	Completa, si es necesario, con 0s por el lado izq.
	str = strReplicate("0", dec - str.length) + str;

	if (str.length == dec)
		return (neg ? "-" : "") + "0." + str;
	else if (dec > 0)
		return (neg ? "-" : "")
		      + str.substring(0, str.length - dec) + "."
				+ str.substring(str.length - dec, str.length);
	else
		return (neg ? "-" : "")
		      + str.substring(0, str.length - dec);
}




/***
*	function strNumFormat(x, dec)
*
*	Pone los separadores de miles y decimal a 'x' segun nuestro formato
*	habitual (miles ".", decimal ",").  dec señala en numero de decimales
*/
function strNumFormat(x, dec) {
	var str = strRound(x, dec);
	var pos = str.indexOf('.');
	if (pos == -1)
		pos = str.length;
	else
		str = str.substring(0, pos) + "," + str.substring(pos + 1, str.length);
	for (pos -= 3; pos > 0 && str.charAt(pos) != "-"; pos -= 3)
		{
		if (str.charAt(pos-1) != "-")
		str = str.substring(0, pos) + "."
			+ str.substring(pos, str.length);
		}
	pos = str.indexOf(',');
	if (pos == -1 && dec > 0)
		str = str + "," + strReplicate("0", dec);
	return str;
}

/***
*	function strNumFormat(x, dec)
*
*	Pone los separadores de miles y decimal a 'x' segun nuestro formato
*	habitual (miles ".", decimal ",").  dec señala en numero de decimales
*/
function strNumFormat_vane(x, dec) {
	var str = strRound(x, dec);
	var pos = str.indexOf('.');
	if (pos == -1)
		pos = str.length;
	else
		str = str.substring(0, pos) + "." + str.substring(pos + 1, str.length);
	//pos = str.indexOf(',');
	if (pos == -1 && dec > 0)
		str = str + "." + strReplicate("0", dec);
	if (str== 0)
		str ="0.00"
	return str;
}

/***
*	function strNumF2Num(str)
*
*	Transforma un string numererico formateado (puntos de mil y coma decimal)
*	a su representacion computacional normal (solo punto decimal)
*	Si existe algun error retorna "".
*/
function strNumF2Num(str) {
	var pos;
	var i, j;
	var buff1, buff2;
	var ch;
	
	if (str.length == 0)
		return "";

	pos = str.indexOf(',');
	if (pos == -1) {
		buff1 = str;
		buff2 = "";
	}
	else {
		buff1 = str.substring(0, pos);
		buff2 = str.substring(pos + 1, str.length);
		if (!strisDigit(buff2))
			return "";
		buff2 = "." + buff2;
	}

	j = 1;
	for (i = buff1.length - 1; i >= 0; i--) {
		ch = str.charAt(i);
		if (j % 4 != 0) {
			j++;
			if (('0' <= ch && ch <= '9') || ch == '+' || ch == '-')
				buff2 = ch + buff2;
			else
				return "";
		}
		else if (ch == '.')
			j = 1;
		else
			return "";
	}

	return buff2;
}

function formato_fecha(Obj)
{
	fecha_nueva = new String()
	fecha_n = new String()
	cadena_fecha = new String()
	cadena_fecha = Obj.value
	cadef = new String()
	t2=0
	for (i=0; i < cadena_fecha.length; i++ )
	{
		if (!(cadena_fecha.charAt(i) == '/' || cadena_fecha.charAt(i) == '-'))
		{
			cadef += cadena_fecha.charAt(i)
		}
	}
		
		
	if (isNaN(cadef))
	{
		alert("Ingrese la fecha nuevamente (contiene caracteres no validos)") 
		Obj.value = ""
		Obj.focus()
		Obj.select()
		return false
	}
	if (cadef.length != 8)
	{
		alert("Ingrese la fecha nuevamente") 
		Obj.value=""
		Obj.focus()
		Obj.select()
		return false
	}
		
	cadena_fecha=reconstruye_fecha(cadef,Obj)
		
	dd = cadena_fecha.substring(0,2);
	mm = cadena_fecha.substring(3,5);
	aaaa = cadena_fecha.substring(6,10);

	ddh=30
	mmh=7
	aaaah=2003

	if (aaaa<2000)
	{
		aaaah= parseInt(aaaah,10)+2000
	}

	if (dd>31)
	{	
		alert("El dia de la fecha de nacimiento esta fuera de rango")	
		Obj.value=""
		Obj.focus()
		Obj.select()
		return false
	}	

	if (mm>12)
	{	
		alert("El mes de la fecha de nacimiento esta fuera de rango")	
		Obj.value=""
		Obj.focus()
		Obj.select()
		return false
	}	


	/*if ((aaaa>aaaah)||((mm>mmh)&&(aaaa>=aaaah))||((dd>ddh)&&(mm>=mmh)&&(aaaa>=aaaah)))
	{	
		alert("La fecha de nacimiento no puede ser superior a la de hoy")	
		Obj.value=""
		Obj.focus()
		Obj.select()
		return false
	}	*/
}

function reconstruye_fecha(fecha,Obj)
{
	fecha_nueva = new String()
	fecha_nueva=""
	for (i =0 ; i<fecha.length; i++)
	{
		if ((i==1)||(i==3))
			fecha_nueva = fecha_nueva + fecha.charAt(i) + "-" 
		else
			fecha_nueva = fecha_nueva + fecha.charAt(i)
	}
	Obj.value =  fecha_nueva
	return fecha_nueva
}

function mayus()
{
	nom=window.event.srcElement.name
	eval('cadena=document.frm.'+nom+'.value')
	eval('document.frm.'+nom+'.value=reemplaza(cadena.toUpperCase())')
}

function mayusPop(Obj)
{
	var cadena = Obj.value;
	Obj.value = reemplaza(cadena.toUpperCase());
}		



function minus()
{
	nom=window.event.srcElement.name
	eval('cadena=document.frm.'+nom+'.value')
	eval('document.frm.'+nom+'.value=reemplaza(cadena.toLowerCase())')
}	


function reemplaza(r)
{
	r = r.replace(/Ñ/g,"N");
	r = r.replace(/ñ/g,"n");
	r = r.replace(/Á/g,"A");
	r = r.replace(/á/g,"a");
	r = r.replace(/É/g,"E");
	r = r.replace(/é/g,"e");
	r = r.replace(/Í/g,"I");
	r = r.replace(/í/g,"i");
	r = r.replace(/Ó/g,"O");
	r = r.replace(/ó/g,"o");
	r = r.replace(/Ú/g,"U");
	r = r.replace(/ú/g,"u");
	r = r.replace(/°/g,"o");
	r = r.replace(/ª/g,"a");
	r = r.replace(/'/g," ");
	r = r.replace(/º/g," ");
	return(r)
}

function calcula_edad(fecha) 
{
//	alert(fecha)
	dd = fecha.substring(0,2);
	mm = fecha.substring(3,5);
	aaaa = fecha.substring(6,10);

//	dd = parseInt(dd,10);
//	mm = parseInt(mm,10);
//	aaaa = parseInt(aaaa,10);
//	hoy="<%=Date()%>"
	//hoy=new Date("<%=Date()%>")
//	alert(hoy)

	ddh=dd
	mmh=mm
	aaaah=aaaa
//	ddh = parseInt(ddh,10);
//	mmh = parseInt(mmh,10);
//	aaaah = parseInt(aaaah,10);
//	alert(aaaah)	
//	alert(hoy)
	
	if (aaaah < 2000) 
	{
		aaaah = aaaah + 2000 
			
	}
	//alert("nac="+dd+"-"+mm+"-"+aaaa+" hoy="+ddh+"-"+mmh+"-"+aaaah)


//	edad=parseInt(((parseInt(aaaah*365.25,10)+parseInt(mmh*30.44,10)+parseInt(ddh,10)-parseInt(aaaa*365.25,10)-parseInt(mm*30.44,10)-parseInt(dd,10))/365.25)+0.5,10)
	edad=parseInt(((parseInt(aaaah*365.25,10)+parseInt(mmh*30.44,10)+parseInt(ddh,10)-parseInt(aaaa*365.25,10)-parseInt(mm*30.44,10)-parseInt(dd,10))/365.25),10)
//	alert(edad)
	return edad
}         



function KeyIsCharacter(evt)
{
	var isNav = (navigator.appName.indexOf("Netscape") != -1) 
	var isIE = (navigator.appName.indexOf("Microsoft") != -1)

	if (isNav) 
	{
		if ( evt.which == 44 || (evt.which>=48 && evt.which<=57 ) )
				return true;
		return false;
	}
	else 
		if (isIE)
		{
			evt = window.event;
			if ( evt.keyCode == 44 || (evt.keyCode>=48 && evt.keyCode<=57 ) )
				return true;
			return false;
			
		}
		else 
		{
			alert("Su browser no es soportado por esta aplicación");
		}
	return false
}

