        ////////////  Conjunto de funciones Validadores de Correo  /////////////////////
        //<input type="text" name="..algo_referente_al_email.." onblur="ValidaCorreo(this)"
        var whitespace = " \t\n\r";

        function isEmpty(s){
                return ((s == null) || (s.length == 0))
        }

        function isWhitespace (s){
                var i;

                if (isEmpty(s)) return true;
                for (i = 0; i < s.length; i++){
                        var c = s.charAt(i);
                        if (whitespace.indexOf(c) == -1)return false;
                }
                return true;
        }

        ////////////  Conjunto de Funciones Validadoras de Rut  ////////////////////////
        //  Analiza los campos de Rut y DV, para ver si es un RUT valido
        //  recomendado usar en la casilla del DV
        //  <input type="text" name="..algo_referente_al_DV.." onblur="checkRutField(document.form.rut,this)"

        function checkDV(obj_rut,obj_dv){
                texto = obj_rut.value + obj_dv.value
                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;
                if (largo < 2){
                        alert("Debe ingresar el RUT completo.")
                        obj_rut.focus();
                        obj_rut.select();
                        return false;
                }

                if (largo > 2)
                        rut = texto.substring(0, largo - 1);
                else
                        rut = texto.charAt(0);
                dv = texto.charAt(largo-1);
                if (!checkCDV(dv)){
                        alert("Debe ingresar un dígito verificador válido.");
                        obj_dv.focus();
                        obj_dv.select();
                }

                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.");
                        obj_rut.select();
                        obj_rut.value = "";
                        obj_dv.value = "";
                        obj_rut.focus();
                        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'){
                        return false;
                }
                return true;
        }

        function checkRutField(obj_rut,obj_dv){
                //Quitar Ceros
                var auxRut=obj_rut.value;
                var auxLargo=auxRut.length;
                if (auxLargo>1){
                        while ((auxRut.substring(0,1)=="0") || (auxRut.substring(0,1)==".")){
                                auxRut=auxRut.substring(1,auxLargo);
                                auxLargo=auxRut.length
                        }
                }
                obj_rut.value=auxRut;
                  //Fin Quitar Ceros

                texto = obj_rut.value + obj_dv.value

                var tmpstr = "";
                  if ((obj_rut.value==0)&&(obj_dv.value==0)){
                        alert("El RUT no es válido.");
                        obj_rut.value="";
                        obj_dv.value = "";
                        obj_rut.focus();
                        return false;
                }
                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;
                if (largo < 2){
                        alert("Debe ingresar el RUT completo.")
                        obj_rut.select();
                        obj_dv.value = "";
                        obj_rut.focus();
                        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" && texto.charAt(i) !="k" && texto.charAt(i) != "K" ){
                                alert("El valor ingresado no corresponde a un RUT válido.");
                                obj_dv.value = "";
                                obj_dv.focus();
                                return false;
                        }
                }
                if (obj_dv.value == "k"){
                        obj_dv.value="K"
                }
                if (checkDV(obj_rut,obj_dv))
                        return true;
                return false;
        }

        //  Funcion que agrega los puntos en el RUT del usuario y cualqueir casilla que maneje numeros
        //  <input type="text" name="..nombre_referente_al_rut.." onblur="puntosEnRut(this)"
        function puntosEnNumero(obj_rut){
                var invertido = "";
                var texto="";
                var tmpstr="";

                texto=obj_rut.value
                largoRut=texto.length

                for ( i=0; i < largoRut ; i++ ){
                        if ( texto.charAt(i) != ' ' && texto.charAt(i) != '.' && texto.charAt(i) != '-' )
                        {
                                tmpstr = tmpstr + texto.charAt(i);
                        }
                }
                texto = tmpstr;
                largoRut=texto.length

                for ( i=(largoRut-1),j=0; i>=0; i--,j++ ){
                  invertido = invertido + texto.charAt(i);
                }
                var dtexto = "";
                cnt = 0;

                for (i=0,j=1; i<largoRut; i++,j++){
                        if (cnt == 3){
                                dtexto = dtexto + '.';
                                j++;
                                dtexto = dtexto + invertido.charAt(i);
                                cnt = 1;
                        }
                        else{
                                dtexto = dtexto + invertido.charAt(i);
                                cnt++;
                        }
                }

                invertido = "";

                for (i=(dtexto.length-1),j=0; i>=0; i--,j++)
                        if (dtexto.charAt(i) == "k")
                                invertido = invertido + "K";
                        else
                                invertido = invertido + dtexto.charAt(i);
                obj_rut.value = Trim(invertido);
        }

        function ponerPuntosEnNumero(valor){
                var invertido = "";
                var texto="";
                var tmpstr="";

                texto=valor + "";
                largoRut=texto.length

                for ( i=0; i < largoRut ; i++ ){
                        if ( texto.charAt(i) != ' ' && texto.charAt(i) != '.' && texto.charAt(i) != '-' )
                        {
                                tmpstr = tmpstr + texto.charAt(i);
                        }
                }
                texto = tmpstr;
                largoRut=texto.length

                for ( i=(largoRut-1),j=0; i>=0; i--,j++ ){
                  invertido = invertido + texto.charAt(i);
                }
                var dtexto = "";
                cnt = 0;

                for (i=0,j=1; i<largoRut; i++,j++){
                        if (cnt == 3){
                                dtexto = dtexto + '.';
                                j++;
                                dtexto = dtexto + invertido.charAt(i);
                                cnt = 1;
                        }
                        else{
                                dtexto = dtexto + invertido.charAt(i);
                                cnt++;
                        }
                }

                invertido = "";

                for (i=(dtexto.length-1),j=0; i>=0; i--,j++)
                        if (dtexto.charAt(i) == "k")
                                invertido = invertido + "K";
                        else
                                invertido = invertido + dtexto.charAt(i);
                return (Trim(invertido));
        }
        ////////////  Fin Conjunto de Funciones Validadoras de Rut  ////////////////////////


        //  Elimina los espacios sobrantes al principio y al final de un String
        //  var nombre_variable_sin_espacios = Trim(..variable_con_espacios..)
        function Trim(strTxt){
                pos1 = 0;
                pos2 = strTxt.length-1;
                for (i=0; i<strTxt.length; i++){
                        if (strTxt.charAt(i) == ' ') pos1 = pos1 + 1;
                        else break;
                }
                if (pos1 != (pos2+1)){
                        for (i=strTxt.length-1; i>0; i--){
                                if (strTxt.charAt(i) == ' ') pos2 = pos2 - 1
                                else break;
                        }
                }
                return strTxt.substring(pos1,pos2+1);
        }


        // Verifica si una casilla posee el largo minimo estipulado
        function largoVar(obj_txt,largo_min){
                var bool = (obj_txt.value.length >= largo_min)?true:false;
                return bool
        }

        ///////////  Valida si una expresion es un Numero Valido
        function esNumero(numero){
                //numero = Trim(numero)
                if (isNaN(numero.value)){
                        alert("Casilla con Caracter no Valido")
                        numero.focus();
                        numero.value = "";
                        return false;
                }
                nNumero = new Number(sacaPuntos(numero.value))
                var numeroLength = numero.value.length;
                for (i = 0; i < numeroLength; i++) {
                        var aChar = numero.value.substring(i,i+1);
                        if (aChar == " ") return false;
                }
                if ((nNumero == "") && (numeroLength != 0) && (nNumero != 0)){
                        alert("No es un numero Valido")
                        numero.focus();
                        numero.value = "";
                        return false;
                }
                return true;
        }

        /////////////  Combinacion de funciones para determinar si un numero es Entero
        function validValue(value,validchars,casesensitive){
                if (casesensitive!=1) {
                        value=value.toUpperCase();
                        validchars=validchars.toUpperCase();
                }
                var charposn=0;
                while((charposn<value.length)&&(validchars.indexOf(value.charAt(charposn))!=-1))
                {
                        charposn++;
                }
                if (charposn==value.length) {
                        return true;
                } else {
                        return false;
                }
        }

        function esEntero(x){
                if (validValue(x,"1234567890",0)) {
                        return true;
                } else {
                        return false;
                }
        }
        /////////////  FIN  Combinacion de funciones para determinar si un numero es Entero



        //  Valida si un nuemro es mayor que cero
        function esNumeroPos(numero){
                //numero = Trim(numero)
                nNumero = new Number(sacaPuntos(numero.value))
                if (isNaN(nNumero)){
                        alert("Casilla con Caracter no Valido")
                        numero.focus();
                        numero.value = "";
                        return false;
                }
                if (nNumero < 0){
                        alert("Debe ingresar un valor mayor que cero")
                        numero.focus();
                        numero.value = "";
                        return false;
                }
                var numeroLength = numero.value.length;
                for (i = 0; i < numeroLength; i++) {
                        var aChar = numero.value.substring(i,i+1);
                        if (aChar == " ") return false;
                }
                if ((nNumero == "") && (numeroLength != 0) && (nNumero != 0)){
                        alert("No es un numero Valido")
                        numero.focus();
                        numero.value = "";
                        return false;
                }
                return true;
        }


        ///  Validacion si un Textbox de SOLO NUMEROS es obligatorio o no
        function esObligNumeros(obj_textbox,bool){
                if (bool){
                        if (!isEmpty(obj_textbox.value)){
                                var temp = new Number(sacaPuntos(obj_textbox.value))
                                obj_textbox.value = temp
                                if ((esNumeroPos(obj_textbox)) && (esEntero(obj_textbox.value))){
                                        return true
                                }
                                else{
                                        return false
                                }
                        }else
                                return false
                }
                else{
                        if (!isEmpty(obj_textbox.value)){
                                var temp = new Number(sacaPuntos(obj_textbox.value))
                                obj_textbox.value = temp
                                if ((esNumeroPos(obj_textbox)) && (esEntero(obj_textbox.value))){
                                        return true
                                }
                                else{
                                        return false
                                }
                        }else{
                                return true
                        }
                }
        }

        //  formatea un numero, le saca los puntos
        function sacaPuntos(numero){
                var sinPtos = numero;
                var nNum = new String(numero)
                if (nNum.indexOf(".") != -1){
                        var sinPtos = '';
                        for (i=0;i<nNum.length;i++){
                                if (nNum.substr(i,1) != ".")
                                        sinPtos += nNum.substr(i,1)
                        }
                }
                return sinPtos
        }

        function separaRut(obj_rut,obj_dv){
                var dv = obj_rut.value.charAt(obj_rut.value.length-1);
                var rut = obj_rut.value.substring(0,obj_rut.value.length-1);
                if(!isEmpty(obj_rut.value)){
                        if ((obj_rut.value.indexOf(".") == -1) && (obj_rut.value.indexOf("-") == -1)){
                                obj_rut.value = rut;
                                obj_dv.value = dv;
                                if (esNumeroPos(obj_rut)){
                                        puntosEnNumero(obj_rut)
                                        if(!checkRutField(obj_rut,obj_dv))
                                                return false
                                        obj_rut.value = obj_rut.value +'-'+obj_dv.value
                                }
                                else
                                        return false
                        }
                        else{
                                var raya = rut.charAt(rut.length-1);
                                rut = rut.substring(0,rut.length-1);
                                if (raya == "-"){
                                        obj_rut.value = sacaPuntos(rut);
                                        obj_dv.value = dv;
                                        if (esNumeroPos(obj_rut)){
                                                puntosEnNumero(obj_rut)
                                                if(!checkRutField(obj_rut,obj_dv))
                                                        return false
                                                obj_rut.value = obj_rut.value +'-'+obj_dv.value
                                        }
                                        else {
                                                alert("El RUT es Incorrecto")
                                                obj_rut.focus();
                                                obj_rut.value = '';
                                                return false;
                                        }
                                }
                                else{
                                        alert("El RUT es Incorrecto")
                                        obj_rut.focus();
                                        obj_rut.value = '';
                                        return false;
                                }

                        }
                }else
                        return false;
                return true;
        }

        //  Valida si un nuemro es mayor que cero
        function esNumeroPosFlash(numero){
                //numero = Trim(numero)
                nNumero = new Number(sacaPuntos(numero))
                if (isNaN(nNumero)){
                        alert("Casilla con Caracter no Valido")
                        return false;
                }
                if (nNumero < 0){
                        alert("Debe ingresar un valor mayor que cero")
                        return false;
                }
                var numeroLength = numero.length;
                for (i = 0; i < numeroLength; i++) {
                        var aChar = numero.substring(i,i+1);
                        if (aChar == " ") return false;
                }
                if ((nNumero == "") && (numeroLength != 0) && (nNumero != 0)){
                        alert("No es un numero Valido")
                        return false;
                }
                return true;
        }

        function checkDVFlash(rut,obj_dv){
                texto = rut + obj_dv.value
                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;
                if (largo < 2){
                        alert("Debe ingresar el RUT completo.")
                        //obj_rut.focus();
                        //obj_rut.select();
                        return false;
                }

                if (largo > 2)
                        rut_int = texto.substring(0, largo - 1);
                else
                        rut_int = texto.charAt(0);
                dv = texto.charAt(largo-1);
                if (!checkCDV(dv)){
                        alert("Debe ingresar un dígito verificador válido.");
                }

                if (rut_int == null || dv == null)
                        return 0
                var dvr = '0'

                suma = 0
                mul  = 2

                for (i= rut_int.length -1 ; i >= 0; i--){
                        suma = suma + rut_int.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 checkRutFieldFlash(rut,obj_dv){
                //Quitar Ceros
                var auxRut=rut;
                var auxLargo=auxRut.length;
                if (auxLargo>1){
                        while ((auxRut.substring(0,1)=="0") || (auxRut.substring(0,1)==".")){
                                auxRut=auxRut.substring(1,auxLargo);
                                auxLargo=auxRut.length
                        }
                }
                rut=auxRut;
                  //Fin Quitar Ceros

                texto = rut + obj_dv.value

                var tmpstr = "";
                  if ((rut==0)&&(obj_dv.value==0)){
                        alert("El RUT no es válido.");
                        return false;
                }
                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;
                if (largo < 2){
                        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" && texto.charAt(i) !="k" && texto.charAt(i) != "K" ){
                                alert("El valor ingresado no corresponde a un RUT válido.");
                                return false;
                        }
                }
                if (obj_dv.value == "k"){
                        obj_dv.value="K"
                }
                if (checkDVFlash(rut,obj_dv))
                        return true;
                return false;
        }


        function separaRutFlash(rut,obj_dv){
                var dv = rut.charAt(rut.length-1);
                var rut_int = rut.substring(0,rut.length-1);

                if(!isEmpty(rut)){
                        if ((rut.indexOf(".") == -1) && (rut.indexOf("-") == -1)){
                                rut = rut_int;
                                obj_dv.value = dv;
                                if (esNumeroPosFlash(rut)){
                                        ponerPuntosEnNumero(rut)
                                        if(!checkRutFieldFlash(rut,obj_dv))
                                                return false
                                }
                                else
                                        return false
                        }
                        else{
                                var raya = rut.charAt(rut.length-2);
                                rut_int = rut.substring(0,rut.length-2);
                                if (raya == "-"){
                                        rut = sacaPuntos(rut_int);
                                        obj_dv.value = dv;
                                        if (esNumeroPosFlash(rut)){
                                                ponerPuntosEnNumero(rut)
                                                if(!checkRutFieldFlash(rut,obj_dv))
                                                        return false
                                                rut = rut +'-'+obj_dv.value
                                        }
                                        else {
                                                alert("El RUT es Incorrecto")
                                                return false;
                                        }
                                }
                                else{
                                        alert("El RUT es Incorrecto")
                                        return false;
                                }

                        }
                }else
                        return false;
                return true;
        }

        //  funciones pensadas en el onKeyPress
        //  <input type="text" name="..el_que_sea.." onKeyPress="validaInput('numeros')>"
        function validaInput(tipo,e){
                var teclaCodigo = 0;
                if (navigator.appName == 'Netscape')
                        teclaCodigo = e.which
            else
                        teclaCodigo = e.keyCode
                if (tipo == "numeros"){//desde el 0 al 9
                        if ((teclaCodigo >= 48 && teclaCodigo <= 57)
                        || (teclaCodigo == 0)
                        || (teclaCodigo == 8)){event.returnValue = true}else return false;
                }
                if (tipo == "email"){//desde el 0 al 9
                        if ((teclaCodigo >= 48 && teclaCodigo <= 57)
                        || (teclaCodigo >= 65 && teclaCodigo <= 90)
                        || (teclaCodigo >= 97 && teclaCodigo <= 122)
                        || (teclaCodigo == 95)
                        || (teclaCodigo == 64)
                        || (teclaCodigo == 8) //tecla para borrar
                        || (teclaCodigo == 0)
                        || (teclaCodigo == 46)){event.returnValue = true}else return false;
                }
                if (tipo == "rut"){//desde el 0 al 9 mas punto (.)
                        if ((teclaCodigo >= 48 && teclaCodigo <= 57)
                        || (teclaCodigo >= 45 && teclaCodigo <= 46)
                        || (teclaCodigo == 75)
                        || (teclaCodigo == 8) //tecla para borrar
                        || (teclaCodigo == 0)
                        || (teclaCodigo == 107)){event.returnValue = true}else return false;

                }
                if (tipo == "rut_old"){//desde el 0 al 9 mas punto (.)
                        if ((teclaCodigo >= 48 && teclaCodigo <= 57)
                        || (teclaCodigo == 8) //tecla para borrar
                        || (teclaCodigo == 0)
                        || (teclaCodigo == 46)){event.returnValue = true}else return false;
                }
                if (tipo == "num_ptos"){//desde el 0 al 9 mas punto (.)
                        if ((teclaCodigo >= 48 && teclaCodigo <= 57)
                        || (teclaCodigo == 8) //tecla para borrar
                        || (teclaCodigo == 0)
                        || (teclaCodigo == 46)){event.returnValue = true}else return false;
                }
                if (tipo == "dv"){//desde el 0 al 9 mas - y la k y K
                        if ((teclaCodigo >= 49 && teclaCodigo <= 57)
                        //|| (teclaCodigo == 48)
                        || (teclaCodigo == 75)
                        || (teclaCodigo == 8) //tecla para borrar
                        || (teclaCodigo == 0)
                        || (teclaCodigo == 107)){event.returnValue = true}else return false;
                }
                //return false
        }

        ////// Crea arreglos multidimensionales //////
        function arrayMD(iRows,iCols){
                var i;
                var j;
                var a = new Array(iRows);
                for (i=0; i < iRows; i++){
                        a[i] = new Array(iCols);
                        for (j=0; j < iCols; j++){
                                a[i][j] = "";
                        }
                }
                return(a);
        }