/*	Elimina los blancos a la izquierda de un string.
	Devuelve un Objeto	*/
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 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 isDecimal(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 isDecimalComa(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;
}


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 ( dv == "" )
	{
		alert( "Ingrese el digito verificador de su RUT, por favor.");
		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 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("Email Inválido.")
		return false;
	}
	var user=matchArray[1]
	var domain=matchArray[2]
	
	if (user.match(userPat)==null) {
		alert("Email Inválido.")
		return false;
	}
	
	var IPArray=domain.match(ipDomainPat)
	if (IPArray!=null) {
		  for (var i=1;i<=4;i++) {
			if (IPArray[i]>255) {
				alert("Email Inválido.")
			return false;
			}
		}
		return true;
	}
	var domainArray=domain.match(domainPat)
	if (domainArray==null) {
		alert("Email Inválido.")
		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("Email Inválido.")
	   return false
	}
	if (len<2) {
	   var errStr="Email Inválido."
	   alert(errStr)
	   return false
	}
	return true;
}



