//Función que permite que el valor de un input sea numérico

function VerNumero(Obj) {
    if (Obj.value != ""){
	if (!EsNumero(Obj, 'ent', '+', 'n', '')) {
		alert('Número inválido');
		Obj.value = '';
		Obj.focus();
	} else {
		Obj.value = parseInt(Obj.value);
	}
	}
}



//////////////////////////////////////////////////////////////////////////////

function sacar_puntos(obj)
//Obj:	objeto que contiene el numero 
{
	var largo=0, i=0;
	var etexto = new String("");
	var dtexto = new String(obj.value);
	
	largo = dtexto.length;
	for ( i=0; i<=largo; i++)
		if ((dtexto.charAt(i) >= "0" && dtexto.charAt(i) <= "9") || dtexto.charAt(i) == "," )
			etexto = etexto + dtexto.charAt(i);
	
	return etexto

}
//***

function saca_decimales(obj)
{
var valor=obj.value

aa=sacar_puntos(obj)

if (valor.search(",")!=-1){
    obj.value=parseInt(aa)
	}
}




//Funcion que permite validar que solo ingresen a lo mas "num" numeros enteros

function cuenta(num,obj)
{
var  cont=parseInt(obj.value)
     cont=cont.toString()
if (cont.length == num+1)
   {
	 obj.value=cont.substr(0,cont.length-1);
	}
}

//Funcion que permite validar que solo ingresen a lo mas de "num" numeros enteros
function cuenta2(num,valor)
{
var  cont=parseInt(valor)
     cont=cont.toString()
if (cont.length == num+1 || cont.length > num+1)
   {
	 obj=cont.substr(0,cont.length-1);
	 return false
	 }
else{	 
	 return true
	}
}
//Funcion que no permite la entrada de caracteres especiales permite
function Out_String(obj)
{
var texto,valor,caracter
    valor=obj.value
    caracter=valor.substr(valor.length-1,valor.length)
	texto='\@\º\ª\!\|\"\|\·\#\$\~\%\&\/\=\¿\'\¡\^\`\]\´\¨\{\}\Ç\ç\-\_\.\,\:\;\<\>\¬'
if (caracter!='\*' && caracter!='(' && caracter!=')' && caracter!='?' && caracter!='[' && caracter!='+' && caracter!=')' && caracter!='\\'){
	if (texto.search(caracter)!=-1 && caracter!='.') 
	{
		 obj.value=valor.substr(0,valor.length-1);
	}
}
else{
	 obj.value=valor.substr(0,valor.length-1);
}
}


//Funcion que no permite la entrada de caracteres especiales permite
function Out_String_2(obj)
{
var texto,valor,caracter
    valor=obj.value
    caracter=valor.substr(valor.length-1,valor.length)
	texto='\@\º\ª\!\|\"\|\·\#\$\~\%\&\/\=\¿\'\¡\^\`\]\´\¨\{\}\Ç\ç\-\_\.\:\;\<\>\¬'
if (caracter!='\*' && caracter!='(' && caracter!=')' && caracter!='?' && caracter!='[' && caracter!='+' && caracter!=')' && caracter!='\\'){
	if (texto.search(caracter)!=-1 && caracter!='.') 
	{
		 obj.value=valor.substr(0,valor.length-1);
	}
}
else{
	 obj.value=valor.substr(0,valor.length-1);
}
}


//Funcion que permite asignar una pag a un frame y cambia la imagen del
// botón clickeado
//Parámetros:
// dir: página a la que se quiere direccionar
//objimag: objeto imagen que cambiará su source
//imagen: nueva imagen a desplegar
//frame: frame que contendrá la nueva página

function cambiaimg(dir,objimg,imagen,frame)
{
	var str;
	str='!parent.frames["'+frame+'"]';
	if (eval(str))
		return
		
	str='parent.frames["'+frame+'"].location.href=dir';
	eval(str);
	objimg.src=imagen;
	return;

}

//**************************************************************************************
// función que permite cambiar imagenes de un frame distinto
// al que está trabajando
function showimage(frame, imagen,objimag)
//parametros:  frame-> indicar nombre frame que contiene el objeto imagen a cambiar
// imagen-> nombre de la nueva imagen que se desplegará (no olvidar incluir la ruta completa)
// objimag -> nombre del objeto imagen al cual se le cambiará la imagen. ej <img name=objimagen  src="...">
{
	var str; 
	str='!top.frames["'+frame+'"].document.images';
	
	if (eval(str))
		return
	else
	{
		str= 'top.frames["'+frame+'"].document.images.'+objimag+'.src=imagen';
		eval(str);
	}
}

//**************************************************************************************
// Elimina el formato de miles de un input. Se debe insertar en función onfocus del 
//input
function sacar_formato(obj)
//Obj:	objeto que contiene el numero 
{
	var largo=0, i=0;
	
	var etexto = new String("");
	var dtexto = new String(obj.value);
	
	largo = dtexto.length;
	for ( i=0; i<=largo; i++)
		if ((dtexto.charAt(i) >= "0" && dtexto.charAt(i) <= "9") || dtexto.charAt(i) == "," )
			etexto = etexto + dtexto.charAt(i);
	
	obj.value=etexto

}
//**************************************************************************************
function Mensaje(IMensaje, Mensaje) {
//	IMensaje:	switch que indica si despliega mensaje, si (s) o no (n)
//	Mensaje:	mensaje a desplegar

	if (IMensaje == "s")
		alert(Mensaje)
}

//**************************************************************************************
function EsNumero(Obj, Tipo, Signo, IMsg, Msg) {
//	Obj:	objeto que contiene el numero a evaluar
//	Tipo:	tipo de número, entero (ent) o real (real)
//	Signo:	signo del número, positivo (+), negativo (-) o ambos (0)
//	IMsg:	switch que indica si despliega mensaje, todos (t), 
//			sólo error (e) o ninguno (n)
//	Msg:	mensaje a desplegar en caso de error

	string = Obj.value
	if (IMsg == "t") {
		MC = "s"
		MI = "s"
	} else if (IMsg == "e") {
		MC = "n"
		MI = "s"
	} else if (IMsg == "n") {
		MC = "n"
		MI = "n"
	}

	n=i=0
	while (i < string.length) {
		if (string.charAt(i) != " ") {
			n = i
			break
		}
		i++
	}
	string = string.substring(n, string.length)
	i=0
	c=string.charAt(i)
	if (c == "-") {
		if (Signo == "+") {
			Mensaje(MI, Msg)
			return false
		}
		i++
		c=string.charAt(i)
	} else if (c >= "0" && c <= "9") {
		if (Signo == "-") {
			Mensaje(MI, Msg)
			return false
		}
	}
	if (c <"0" || c > "9") {
		Mensaje(MI, Msg)
		return false
	}
	while (i < string.length) {
		c=string.charAt(i)
		if (c <"0" || c > "9") {
			n = i
			break
		}
		i++
	}
	if (i == string.length) {
		Mensaje(MC, "Es Número")
		return true
	}
	if (c == ",") {
		if (Tipo == "ent") {
			Mensaje(MI, Msg)
			return false
		}
		string = string.substring(n+1, string.length)
		i=0
		c=string.charAt(i)
		if (c <"0" || c > "9") {
			Mensaje(MI, Msg)
			return false
		}
		while (i < string.length) {
			c=string.charAt(i)
			if (c <"0" || c > "9") {
				n = i
				break
			}
			i++
		}
		if (i == string.length) {
			Mensaje(MC, "Es Número")
			return true
		}
	}
	if (c == " ") {
		string = string.substring(n, string.length)
		i=0
		while (i < string.length) {
			c=string.charAt(i)
			if (c != " ") {
				Mensaje(MI, Msg)
				return false
			}
			i++
		}
		Mensaje(MC, "Es Número")
		return true
	}
	Mensaje(MI, Msg)
	return false
}

//**************************************************************************************
//Convierte un número a formato de miles (1000000 -> 1.000.000)
function formato_miles(texto)
// texto:  numero a formatear
{
	
	var invertido = "";
	var i=0, j=0;
	var cnt=0;
	var etexto = new String("");
	var dtexto = new String(texto);
	var largo=0;

	largo = dtexto.length;
	for ( i=largo; i>=0 ; i--)
		if (dtexto.charAt(i) >= "0" && dtexto.charAt(i) <= "9")
			etexto = etexto + dtexto.charAt(i);

	 largo = etexto.length;
	 dtexto = "";

	 for ( i=0; i <= largo; i++ )
	 {
	   if ( cnt == 3 )
	   {
	     if (i!= largo)
		      dtexto = dtexto + '.';
	     dtexto = dtexto + etexto.charAt(i,1);
	     cnt = 1;
	   }
	   else
	   { 
	     dtexto = dtexto + etexto.charAt(i,1);
	     cnt++;
	   }
	 }
	 	
	 	largo = dtexto.length;
	 	etexto="";
		for ( i=largo+1; i>=0 ; i--)
		  etexto = etexto + dtexto.charAt(i,1);
	return (etexto);
}

//**************************************************************************************
//Esta función verifica si el objeto a evaluar contiene un número válido o no.
// Si es válido lo formatea, si no, despliega error.
// Utiliza funciones esnumero y formato_miles
function vlda_nro(objmnto)
// objeto que contien el número a evaluar
{
		var lrg;
		var i,sw;
		var mnto_result;
		var sep;
		var dec = "";
		var mnto;
		var esnum;
		
		if(objmnto.value=="")
			return
		esnum=EsNumero(objmnto,'real','+','e','Valor Incorrecto \nIngrese valor numérico.');
		if (!esnum)
		{
			objmnto.value="";
			objmnto.focus();
			return false
		}
		
		mnto=objmnto.value;

		lrg = mnto.length;
		mnto_result="";
		sw = 0;
		for (i=0;(i<=lrg) && sw==0;i++)
		{
			if ((mnto.charAt(i) != "," && mnto.charAt(i) != "."))
			{
				mnto_result = mnto_result + mnto.charAt(i);
			}
			else
				sw=1;
		}
	
		if (mnto.charAt(i-1) =='.')
		{
			sep = ",";
			dec = sep + mnto.substring(i,lrg)
		}
		
		if (mnto.charAt(i-1)==',') 
		{
			dec = mnto.charAt(i-1) + mnto.substring(i,lrg)
		}


		objmnto.value = formato_miles(mnto_result) + dec;
		return true;
}


//**************************************************************************************
//Función que selecciona o deselecciona input type radio
function selectodo(obj,boleano,cantidad){
if(obj){
 if (cantidad>0)
  {
    for (i = 0;i<=cantidad;i++)
	{
	obj[i].checked = boleano;
    }
  }
  else
    obj.checked = boleano;
}
}
//**************************************************************************************
//Función que Chequea en un objeto radio si esta seleccionado alguno de los objetos
function checkValues(obj,msg) 
{
if(obj!=null)
{
selected = false;
if(obj.length!=null){
	i = 0;
	while (i<obj.length && !selected){
		if (obj[i++].checked)
			selected = true;
	}
}        
else{
	if (obj.checked){
			selected = true;
	}
}
	if (!selected) {
		if(msg!="" && msg!=null)
		{
			alert(msg);
		}
		return false;
	}
        return true;
}
else{
   return false;
}
}


//**************************************************************************************
//Función que entrega la hora del servidor en formato HH:MM:SS am como string
function hora_servidor(){
var hh;
var mm;
var ss;

hora_servidor = "<%= time()%>";
return hora_servidor
}


//**************************************************************************************
//Valida telefonos
function phonevalido(phone){
var i;

for(i=0;i<phone.length;i++){
	if (phone.substr(i,1)!='' && phone.substr(i,1)!='-' &&
phone.substr(i,1)!='(' && phone.substr(i,1)!=')' &&
isNaN(phone.substr(i,1)))
		return(false);
}
return(true);
}

//**************************************************************************************
// funcion para validar mail
function emailCheck (emailStr) {
var emailPat=/^(.+)@(.+)$/
var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
var validChars="\[^\\s" + specialChars + "\]"
var quotedUser="(\"[^\"]*\")"
var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
var atom=validChars + '+'
var word="(" + atom + "|" + quotedUser + ")"
var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
var matchArray=emailStr.match(emailPat)
//yo
if (emailStr==''){
	return true;
	}
//fin yo
if (matchArray==null) {
	alert("Dirección Email está incorrecta Por favor verifique @ y .")
	return false;
}
var user=matchArray[1]
var domain=matchArray[2]

if (user.match(userPat)==null) {
    alert("Username no valido.")
    return false;
}

var IPArray=domain.match(ipDomainPat)
if (IPArray!=null) {
	  for (var i=1;i<=4;i++) {
	    if (IPArray[i]>255) {
	        alert("Dirección IP no Valida!")
		return false;
	    }
    }
    return true;
}
var domainArray=domain.match(domainPat)
if (domainArray==null) {
	alert("El dominio indicado no existe.")
    return false;
}
var atomPat=new RegExp(atom,"g")
var domArr=domain.match(atomPat)
var len=domArr.length
if (domArr[domArr.length-1].length<2 || 
    domArr[domArr.length-1].length>3) {

   alert("La dirección debe finalizar con 3 letras del dominio o 2 letras del país.")
   return false
}
if (len<2) {
   var errStr="Dirección incorrecta"
   alert(errStr)
   return false
}
return true;
}

//**************************************************************************************
//Función que valida una dirección de mail
function emailvalido(direccion){
var Pos;
var str;
var dotpos, lastpos;

	if (direccion == '')
	{
	return false;
	} 
	Pos = direccion.indexOf('@');
	if ( (Pos<1) || (Pos == (direccion.length - 1)))
		return false;
	else{
		str=direccion.substr(Pos+1);
		dotpos=str.lastIndexOf(".");
		lastpos=str.length-1;
		if (dotpos==-1 || lastpos-dotpos>3 || lastpos-dotpos<2){
				return false;
		}
	}
	 
	return true; 
}

// Valida que el ingreso de una entrada de dato no esté vacía
function emptyvalidation(entered, alertbox)
{
	with (entered)
	{
		if (value==null || value=="")
		{
			if (alertbox!="") 
			{
				alert(alertbox);
			} 
			return false;
		}
		else 
		{
			return true;
		}
	}
}

//**************************************************************************************
// Valida el que el dato ingresado sea numérico
function nonumericoEx(entered, alertbox)
{
	// Emptyfield-Validation (c) Henrik Petersen / NetKontoret
	// Explained at www.echoecho.com/jsforms.htm
	// Please do not remove the this line and the two lines above.
	
	with (entered)
	{
		if (isNaN(value)==true)
		{
			if (alertbox!="") 
			{
				alert(alertbox);
			} 
			return false;
		}
		else 
		{
			if (parseInt(value,10)<=0)
			{
				if (alertbox!="") 
				{
					alert(alertbox);
				} 
				return false;
			}
			
			return true;
		}
	}
}

//**************************************************************************************
// Valida el que el dato ingresado no sea numérico
function nonumerico(entered, alertbox)
{
	
	with (entered)
	{
		if (isNaN(value)==true)
		{
			if (alertbox!="") 
			{
				alert(alertbox);
			} 
			return false;
		}
		else 
		{
			return true;
		}
	}
}


//**************************************************************************************
// Valida si el dato es válido

function isValidDate(dateStr) {
// Checks for the following valid date formats:
// MM/DD/YY   MM/DD/YYYY   MM-DD-YY   MM-DD-YYYY
// Also separates date into month, day, and year variables

//var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{2}|\d{4})$/;

// To require a 4 digit year entry, use this line instead:
 var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;

var matchArray = dateStr.match(datePat); // is the format ok?
if (dateStr==""){
	return true
	}
if (matchArray == null) {
alert("La fecha no tiene formato valido.")
return false;
}
month = matchArray[3]; // parse date into variables
day = matchArray[1];
year = matchArray[4];
if (month < 1 || month > 12) { // check month range
alert("El mes debe estar entre 1 y 12.");
return false;
}
if (day < 1 || day > 31) {
alert("Día debe estar entre 1 y 31.");
return false;
}
if ((month==4 || month==6 || month==9 || month==11) && day==31) {
alert("Este mes no tiene 31 días!")
return false
}
if (month == 2) { // check for february 29th
var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
if (day>29 || (day==29 && !isleap)) {
alert("Febrero " + year + " no tiene " + day + " dias!");
return false;
   }
}
return true;  // date is valid
}
//**************************************************************************************




function Valida_rut( rut, dv )
{
	//NUEVO
	var tmpstr = "";
	for ( i=0; i < rut.length ; i++ )
		if ( rut.charAt(i) != ' ' && rut.charAt(i) != '.' && rut.charAt(i) != '-' )
			tmpstr = tmpstr + rut.charAt(i);
	rut = tmpstr;
	//NUEVO
	//if ( rut == "" )
	//{
	//	alert( "Ingrese su RUT, por favor.");
	//	return false;
	//}	
	if (rut=="" && dv == "" )
	{
		return true;
	}	
	
	if (rut!="" && dv == "" )
	{
		alert( "Ingrese el digito verificador de su RUT, por favor.");
		return false;
	}	
	if (rut=="" && dv != "" )
	{
		alert( "Ha ingresado el digito verificador y no su RUT.");
		return false;
	}	
	
	largo = rut.length;
	if ( !checkRutField( rut ) ) 
		return false;
	if ( !checkDV( rut, dv ) )
		return false;
	return true;
}

//////////////////////////////////////////////////


function checkCDV( dvr )
{
	dv = dvr + ""
	if ( dv != '0' && dv != '1' && dv != '2' && dv != '3' && dv != '4' && dv != '5' && dv != '6' && dv != '7' && dv != '8' && dv != '9' && dv != 'k'  && dv != 'K')
	{
		alert("Debe ingresar un digito verificador valido");
		return false;
	}
	return true;
}

//////////////////////////////////////////////////

function checkDV( rut,dv )
{
	largo = rut.length;
	if ( largo < 1 )
	{
		alert("Debe ingresar el rut completo")
		return false;
	}
	if ( !checkCDV( dv ) )
		return false;
	if ( rut == null || dv == null )
			return 0
	var dvr = '0'
	suma = 0
	mul  = 2
	for (i= rut.length -1 ; i >= 0; i--)
	{
		suma = suma + rut.charAt(i) * mul
		if (mul == 7)
			mul = 2
		else    
			mul++
	}
	res = suma % 11
	if (res==1)
		dvr = 'k'
	else if (res==0)
		dvr = '0'
	else
	{
		dvi = 11-res
		dvr = dvi + ""
	}
	if ( dvr != dv.toLowerCase() )
	{
		alert("EL rut es incorrecto")
		return false
	}
    return true;
}

///////////////////////////////////////////////////////

function checkRutField(texto)
{
	//NUEVO
	var tmpstr = "";
	for ( i=0; i < texto.length ; i++ )
		if ( texto.charAt(i) != ' ' && texto.charAt(i) != '.' && texto.charAt(i) != '-' )
			tmpstr = tmpstr + texto.charAt(i);
	texto = tmpstr;
	largo = texto.length;

	//NUEVO
	if ( largo < 1 )
	{
		alert("Debe ingresar el rut completo")
		return false;
	}
	for (i=0; i < largo ; i++ )
	{	
		if ( texto.charAt(i) !="0" && texto.charAt(i) != "1" && texto.charAt(i) !="2" && texto.charAt(i) != "3" && texto.charAt(i) != "4" && texto.charAt(i) !="5" && texto.charAt(i) != "6" && texto.charAt(i) != "7" && texto.charAt(i) !="8" && texto.charAt(i) != "9" ) 
		{
			alert("El valor ingresado no corresponde a un R.U.T valido");
			return false;
		}
	}
	return true;
}


function checkRutFieldFull(rut)
{
  var tmpstr = "";
  for ( i=0; i < rut.length ; i++ )
    if ( rut.charAt(i) != ' ' && rut.charAt(i) != '.' && rut.charAt(i) != '-' )
      tmpstr = tmpstr + rut.charAt(i);
  rut = tmpstr;
  largo = rut.length;
// [VARM+]
  tmpstr = "";
  for ( i=0; rut.charAt(i) == '0' ; i++ );
  for (; i < rut.length ; i++ )
     tmpstr = tmpstr + rut.charAt(i);
  rut = tmpstr;
  largo = rut.length;
// [VARM-]
  if ( largo < 2 )
  {
    alert("Debe ingresar el rut completo.");
    return false;
  }
  for (i=0; i < largo ; i++ )
  {
    if( (rut.charAt(i) != '0') && (rut.charAt(i) != '1') && (rut.charAt(i) !='2') && (rut.charAt(i) != '3') && (rut.charAt(i) != '4') && (rut.charAt(i) !='5') && (rut.charAt(i) != '6') && (rut.charAt(i) != '7') && (rut.charAt(i) != '8') && (rut.charAt(i) != '9') && (rut.charAt(i) !='k') && (rut.charAt(i) != 'K') )
    {
      alert("El valor ingresado no corresponde a un R.U.T valido.");
      document.formulario.rut.select();
	  document.formulario.rut.focus();
      return false;
    }
  }
  var invertido = "";
  for ( i=(largo-1),j=0; i>=0; i--,j++ )
    invertido = invertido + rut.charAt(i);
  var drut = "";
  drut = drut + invertido.charAt(0);
  drut = drut + '-';
  cnt = 0;
  for ( i=1,j=2; i<largo; i++,j++ )
    {
    if ( cnt == 3 )
    {
      drut = drut + '';
      j++;
      drut = drut + invertido.charAt(i);
      cnt = 1;
    }
    else
    {
      drut = drut + invertido.charAt(i);
      cnt++;
    }
  }
  invertido = "";
  for ( i=(drut.length-1),j=0; i>=0; i--,j++ )
    invertido = invertido + drut.charAt(i);
  document.formulario.rut.value = invertido;
  if(!checkDVFull(rut))
    return false;
  return true;
}

function checkDVFull(crut)
{
  largo = crut.length;
  if(largo < 2){
    alert("Debe ingresar el rut completo.");
    document.formulario.rut.select();
    document.formulario.rut.focus();
    return false;
  }
  if(largo > 2){
    rut = crut.substring(0, largo - 1);
  }
  else{
    rut = crut.charAt(0);
  }
  dv = crut.charAt(largo-1);

  if(!checkCDV(dv))
     return false;

  if(rut == null || dv == null){
      return false;
  }

  var dvr = '0';
  suma = 0;
  mul  = 2;
  for (i= rut.length -1 ; i >= 0; i--){
    suma = suma + rut.charAt(i) * mul;
    if(mul == 7){
      mul = 2;
    }
    else{
      mul++;
    }
  }
  res = suma % 11;
  if (res==1){
    dvr = 'k';
  }
  else{
    if(res==0){
      dvr = '0';
    }
    else{
      dvi = 11-res;
      dvr = dvi + "";
    }
  }
  if(dvr != dv.toLowerCase()){
    alert("EL rut es incorrecto.");
    document.formulario.rut.select();
    document.formulario.rut.focus();
    //document.login.rut_aux.value = "";
    return false;
  }
  return true;
}

function checkCDV(dvr)
{
  dv = dvr + "";
  if(dv != '0' && dv != '1' && dv != '2' && dv != '3' && dv != '4' && dv != '5' && dv != '6' && dv != '7' && dv != '8' && dv != '9' && dv != 'k'  && dv != 'K'){
    alert("Debe ingresar un digito verificador valido.");
    document.login.rut_aux.select();
    document.login.rut_aux.focus();
    return false;
  }
  return true;
}


/////////////////////////////////////////////////////////////////////////////////////

// Elimina el formato de miles de un texto. Se Utiliza para validación del rut 

function sacar_formato2(texto)
//texto:	texto que contiene el numero 
{
	var largo=0, i=0;
	
	var etexto = new String("");
	var dtexto = new String(texto);
	
	largo = dtexto.length;
	for ( i=0; i<=largo; i++)
		if ((dtexto.charAt(i) >= "0" && dtexto.charAt(i) <= "9") || dtexto.charAt(i) == "," )
			etexto = etexto + dtexto.charAt(i);
	
//alert(etexto);	
	return etexto

}

///////////////////////////////////////////////////////////////////////////////////////

// Valida que el ingreso de una entrada de dato no esté vacía
function emptyvalidation(entered, alertbox)
{
	with (entered)
	{
		if (value==null || value=="")
		{
			if (alertbox!="") 
			{
				alert(alertbox);
			} 
			return false;
		}
		else 
		{
			return true;
		}
	}
}

function ltrim(Obj) {
//	Obj:	objeto que contiene string a eliminar blancos de la izquierda

	strValor = Obj.value;
	n = i = 0;
	while (i < strValor.length) {
		if (strValor.charAt(i) != ' ') {
			n = i;
			break;
		}
		i++;
	}
	if (n == 0 && i == strValor.length)
		Obj.value = ''
	else
		Obj.value = strValor.substring(n, strValor.length);
	return Obj;
}

/*	Elimina los blancos a la derecha de un string.
	Devuelve un Objeto	*/
function rtrim(Obj) {
//	Obj:	objeto que contiene string a eliminar blancos de la derecha

	strValor = Obj.value;
	n = i = strValor.length;
	while (i > 0) {
		if (strValor.charAt(i - 1) != ' ') {
			n = i;
			break;
		}
		i--;
	}
	if (n == strValor.length && i == 0)
		Obj.value = ''
	else
		Obj.value = strValor.substring(0, n);
	return Obj;
}

/*	Elimina los blancos de los extremos de un string.
	Devuelve un Objeto	*/
function trim(Obj) {
//	Obj:	objeto que contiene string a eliminar blancos de los extremos

	return rtrim(ltrim(Obj));
}

/*	Elimina los blancos de los extremos y blancos repetidos al interior de un string,
	dejando sólo uno.
	Devuelve un Objeto	*/
function itrim(Obj) {
//	Obj:	objeto que contiene string a eliminar blancos al interior, dejando uno
	var strTrim = '';

	Obj = trim(Obj);
	strValor = Obj.value;
	i = 0;
	while ((n = strValor.indexOf(' ', i)) >= 0) {
		strTrim += strValor.substring(i, n + 1);
		i = n + 1;
		while (strValor.charAt(i) == ' ')
			i++;
	}
	strTrim += strValor.substring(i, strValor.length);
	Obj.value = strTrim;
	return Obj;
}

/*	Verifica blancos al interior de un string.
	Devuelve un Booleano	*/
function hasSpaces(Obj) {
//	Obj:	objeto que contiene string para determinar si tiene
//				blancos en su interior

	strValor = Obj.value;
	n = i = 0;
	while (i < strValor.length) {
		if (strValor.charAt(i) == ' ') {
			return true;
		}
		i++;
	}
	return false;
}


/*	Invierte el orden de los caracteres de un string.
	Devuelve un Objeto	*/
function strReverse(Obj) {
//	Obj:	objeto que contiene string a invertir

	var strRever = '';
	
	strValor = Obj.value;
	for (var i = strValor.length - 1; i >= 0; i--)
		strRever += strValor.charAt(i);
	return strRever;
}

/*	Convierte los caracteres de un string a mayúsculas.
	Devuelve un Objeto	*/
function ucase(Obj){
//	Obj:	objeto que contiene string a convertir caracteres a mayúsculas

	Obj = trim(Obj);
	if (Obj.value != '')
		Obj.value = Obj.value.toUpperCase();
	return Obj;
}

/*	Convierte los caracteres de un string a minúsculas.
	Devuelve un Objeto	*/
function lcase(Obj){
//	Obj:	objeto que contiene string a convertir caracteres a minúsculas

	Obj = trim(Obj);
	if (Obj.value != ''){
		Obj.value = Obj.value.toLowerCase();
	}
	return Obj;
}

/*	Convierte el primer caracter de un string a mayúsculas.
	Devuelve un Objeto	*/
function pcase(Obj) {
//	Obj:	objeto que contiene string con primer caracter en mayúsculas

	Obj = itrim(Obj);
	strValor = Obj.value;
	Obj.value = strValor.charAt(0).toUpperCase() + strValor.substring(1, strValor.length).toLowerCase();
	return Obj;
}

/*	Convierte el primer caracter de cada palabra de un string a mayúsculas.
	Devuelve un Objeto	*/
function initcap(Obj) {
//	Obj:	objeto que contiene string con primer caracter de cada palabra en mayúsculas
	var strTrim = '';

	Obj = trim(Obj);
	strValor = Obj.value;
	i = 0;
	while ((n = strValor.indexOf(' ', i)) >= 0) {
		strTrim += strValor.charAt(i).toUpperCase() + strValor.substring(i + 1, n + 1).toLowerCase();
		i = n + 1;
		while (strValor.charAt(i) == ' ')
			i++;
	}
	strTrim += strValor.charAt(i).toUpperCase() + strValor.substring(i + 1, strValor.length).toLowerCase();
	Obj.value = strTrim;
	return Obj;
}

/*	Verifica si los caracteres de un string son alfabéticos.
	Devuelve un Booleano	*/
function isAlpha(Obj) {
//	Obj:	objeto que contiene string a evaluar sí caracteres son alfabéticos
	var strValor = Obj.value.toLowerCase();

    	RefString = 'abcdefghijklmnñopqrstuvwxyz áéíóúü';
	for (i=0; i<=strValor.length; i++)
	    	if (RefString.indexOf(strValor.charAt(i), 0) == -1) {
    			return false;
			break;
		}
   	return true;
}

/*	Verifica si los caracteres de un string son alfabéticos.
	Devuelve un Booleano	*/
function isAlphaNumeric(Obj) {
//	Obj:	objeto que contiene string a evaluar sí caracteres son alfabéticos
	var strValor = Obj.value.toLowerCase();

    	RefString = 'abcdefghijklmnñopqrstuvwxyz1234567890_';
	for (i=0; i<=strValor.length; i++)
	    	if (RefString.indexOf(strValor.charAt(i), 0) == -1) {
    			return false;
			break;
		}
   	return true;
}


/*	Verifica si los caracteres de un string son números.
	Devuelve un Booleano	*/
function isNumber(Obj) {
//	Obj:	objeto que contiene string a evaluar sí caracteres son números
	var strValor = Obj.value;

    	RefString = '0123456789';
	for (i=0; i<=strValor.length; i++)
	    	if (RefString.indexOf(strValor.charAt(i), 0) == -1) {
    			return false;
			break;
		}
   	return true;
}



function isNumberDecimal(Obj) {
//	Obj:	objeto que contiene string a evaluar sí caracteres son números
	var strValor = Obj.value;

    	RefString = '0123456789,';
	for (i=0; i<=strValor.length; i++)
	    	if (RefString.indexOf(strValor.charAt(i), 0) == -1) {
    			return false;
			break;
		}
   	return true;
}

/*	Verifica si los caracteres de un string son alfanuméricos.
	Devuelve un Booleano	*/
function isAlphaNumber(Obj) {
//	Obj:	objeto que contiene string a evaluar sí caracteres son alfanuméricos
	var strValor = Obj.value.toLowerCase();

    	RefString = '0123456789abcdefghijklmnñopqrstuvwxyz áéíóúü';
	for (i=0; i<=strValor.length; i++)
	    	if (RefString.indexOf(strValor.charAt(i), 0) == -1) {
    			return false;
			break;
		}
   	return true;
}

