// ---------------------------------------------------------------------- // FormCheq.js (c) ChaTo [www.chato.cl] 1998 // basado en FormChek.js (c) Eric Krock 1997 Netscape Corp. // ---------------------------------------------------------------------- // Rutinas para verificacion de formularios, basado en FormChek.js // Parte del curso "TEJEDORES DEL WEB" http://www.chato.cl/tw/ // ---------------------------------------------------------------------- var defaultEmptyOK = false var checkNiceness = true; var digits = "0123456789"; var lowercaseLetters = "abcdefghijklmnopqrstuvwxyzáéíóúñü" var uppercaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZÁÉÍÓÚÑ" var specialChars = ".," var whitespace = " \t\n\r"; var timeChar = ":"; var whiteSpaceAndPoint = " \t\n\r.,"; var whiteSpaceAndSpecialChars = " \t\n\r.#-"; var phoneChars = "()-+anexoANEXO "; var mMessage = "Error: no puede dejar este espacio vacio" var pPrompt = "Error: "; var pAlphanumeric = "Error: Ingrese un texto que contenga solo letras y/o numeros"; var pAlphabetic = "ingrese un texto que contenga solo letras"; var pInteger = "ingrese un numero entero"; var pNumber = "Error: ingrese un numero"; var pPhoneNumber = "ingrese un número de teléfono"; var pEmail = "ingrese una dirección de correo electrónico válida"; var pName = "ingrese un texto que contenga solo letras, numeros, espacios o punto"; var pNice = "no puede utilizar comillas aqui"; var pAddress = "ingrese un texto que contenga solo letras, numeros, espacios o punto"; var pDate = "ingrese un texto que contenga una fecha valida (dd/mm/yyyy)"; var pTime = "ingrese un texto que contenga una hora valida (hh:mm)"; var creditCardDelimiters = " " function makeArray(n) { for (var i = 1; i <= n; i++) { this[i] = 0 } return this } 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); // si el caracter en que estoy no aparece en whitespace, // entonces retornar falso if (whitespace.indexOf(c) == -1) return false; } return true; } function stripCharsInBag (s, bag) { var i; var returnString = ""; // Buscar por el string, si el caracter no esta en "bag", // agregarlo a returnString for (i = 0; i < s.length; i++) { var c = s.charAt(i); if (bag.indexOf(c) == -1) returnString += c; } return returnString; } function stripCharsNotInBag (s, bag) { var i; var returnString = ""; for (i = 0; i < s.length; i++) { var c = s.charAt(i); if (bag.indexOf(c) != -1) returnString += c; } return returnString; } function stripWhitespace (s) { return stripCharsInBag (s, whitespace) } function charInString (c, s) { for (i = 0; i < s.length; i++) { if (s.charAt(i) == c) return true; } return false } function stripInitialWhitespace (s) { var i = 0; while ((i < s.length) && charInString (s.charAt(i), whitespace)) i++; return s.substring (i, s.length); } function isLetter (c) { return( ( uppercaseLetters.indexOf( c ) != -1 ) || ( lowercaseLetters.indexOf( c ) != -1 ) ) } function isDigit (c) { return ((c >= "0") && (c <= "9")) } function isLetterOrDigit (c) { return (isLetter(c) || isDigit(c)) } function isInteger (s) { var i; if (isEmpty(s)) if (isInteger.arguments.length == 1) return defaultEmptyOK; else return (isInteger.arguments[1] == true); for (i = 0; i < s.length; i++) { var c = s.charAt(i); if( i != 0 ) { if (!isDigit(c)) return false; } else { if (!isDigit(c) && (c != "-") || (c == "+")) return false; } } return true; } function isNumber (s) { var i; var dotAppeared; dotAppeared = false; if (isEmpty(s)) if (isNumber.arguments.length == 1) return defaultEmptyOK; else return (isNumber.arguments[1] == true); for (i = 0; i < s.length; i++) { var c = s.charAt(i); if( i != 0 ) { if ( c == "." ) { if( !dotAppeared ) dotAppeared = true; else return false; } else if (!isDigit(c)) return false; } else { if ( c == "." ) { if( !dotAppeared ) dotAppeared = true; else return false; } else if (!isDigit(c) && (c != "-") || (c == "+")) return false; } } return true; } function isNumberWithPoint (s) { var i; var dotAppeared; dotAppeared = false; if (isEmpty(s)) if (isNumber.arguments.length == 1) return defaultEmptyOK; else return (isNumber.arguments[1] == true); for (i = 0; i < s.length; i++) { var c = s.charAt(i); if( i != 0 ) { if ( c != "." ) if (!isDigit(c)) return false; } else if (!isDigit(c) && (c != "-") || (c == "+")) return false; } return true; } function isAlphabetic (s) { var i; if (isEmpty(s)) if (isAlphabetic.arguments.length == 1) return defaultEmptyOK; else return (isAlphabetic.arguments[1] == true); for (i = 0; i < s.length; i++) { // Check that current character is letter. var c = s.charAt(i); if (!isLetter(c)) return false; } return true; } function isAlphanumeric (s) { var i; if (isEmpty(s)) if (isAlphanumeric.arguments.length == 1) return defaultEmptyOK; else return (isAlphanumeric.arguments[1] == true); for (i = 0; i < s.length; i++) { var c = s.charAt(i); if (! (isLetter(c) || isDigit(c) ) ) return false; } return true; } function isName (s) { if (isEmpty(s)) if (isName.arguments.length == 1) return defaultEmptyOK; else return (isAlphanumeric.arguments[1] == true); return( isAlphanumeric( stripCharsInBag( s, whitespace ) ) || isAlphanumeric( stripCharsInBag( s, whiteSpaceAndPoint ) )); } function isAddress (s) { if (isEmpty(s)) if (isAddress.arguments.length == 1) return defaultEmptyOK; else return (isAlphanumeric.arguments[1] == true); return( isAlphanumeric( stripCharsInBag( s, whitespace ) ) || isAlphanumeric( stripCharsInBag( s, whiteSpaceAndSpecialChars ) )); } function isTime (s) { var partsTime partsTime = s.split(":"); if (partsTime.length == 2 && isInteger(partsTime[0]) && isInteger(partsTime[1])) { if (partsTime[0] > 23 || partsTime[1] > 59) return false; } else return false; return( isInteger( stripCharsInBag( s, timeChar ))); } /* Verifica si un año es bisiesto (true) o no (false)*/ function AnoBisiesto(Ano) { if (Ano % 4 == 0) return true return false }// AnoBisiesto /* retorna la cantidad de dias de un mes */ function RetornaDias(Mes, Ano) { var ar = new Array(12) ar[0] = 31 // enero ar[1] = (AnoBisiesto(Ano)) ? 29 : 28 // Febrero ar[2] = 31 // Marzo ar[3] = 30 // Abril ar[4] = 31 // Mayo ar[5] = 30 // Junio ar[6] = 31 // Julio ar[7] = 31 // Agosto ar[8] = 30 // Septiembre ar[9] = 31 // Octubre ar[10] = 30 // Noviembre ar[11] = 31 // Diciembre return ar[Mes] }// fin RetornaDias function isDate(s) { var partsDate if (isEmpty(s)) if (isDate.arguments.length == 1) return defaultEmptyOK; else return (isDate.arguments[1] == true); partsDate = s.split("/"); if (partsDate.length == 3 && isInteger(partsDate[0]) && isInteger(partsDate[1]) && isInteger(partsDate[2])) if (partsDate[0] > 0 && partsDate[1] > 0 && partsDate[2] > 1901 && partsDate[2] <= 9998) if (partsDate[1] > 12) return false; else if (partsDate[0] > RetornaDias((partsDate[1]-1), partsDate[2])) return false; else return true; else return false; else return false; } function isPhoneNumber (s) { var modString; if (isEmpty(s)) if (isPhoneNumber.arguments.length == 1) return defaultEmptyOK; else return (isPhoneNumber.arguments[1] == true); modString = stripCharsInBag( s, phoneChars ); return (isInteger(modString)) } function isEmail (s) { if (isEmpty(s)) if (isEmail.arguments.length == 1) return defaultEmptyOK; else return (isEmail.arguments[1] == true); if (isWhitespace(s)) return false; var i = 1; var sLength = s.length; while ((i < sLength) && (s.charAt(i) != "@")) { i++ } if ((i >= sLength) || (s.charAt(i) != "@")) return false; else i += 2; while ((i < sLength) && (s.charAt(i) != ".")) { i++ } if ((i >= sLength - 1) || (s.charAt(i) != ".")) return false; else return true; } function isNice(s) { var i = 1; var sLength = s.length; var b = 1; while(i=0;i--) { sum += (n.substring(i,i+1)-'0')*((j++)%6 + 2); } sts = base - sum % base ; if(sts == 11) sts = 0 ; return(sts); } //Valida el rut, rotorna un valor booleano function isValidRut(rut, dv) { if(rut.value.length < 6) { warnInvalid(rut, "Error: RUT No válido") ; return false ; } if (checkField (rut, isInteger, false, "Error: RUT No válido")) { if ((dv.value == 'k') || (dv.value == 'K') ) dd = 10 ; else if (checkField (dv, isInteger, false, "Error: Dígito verificador No válido")) dd = dv.value ; else return false ; if (dd == DigitoVerificador(rut.value)) return true ; warnInvalid(rut, "Error: RUT No válido") ; return false ; } return false ; } // permite validar el patron enviado function ValidaPatron(Patron,theField,mensaje) { var Valido = true; var Estado1= false; var Estado2= false; vartexto = theField.value; if(texto.length == 0) { warnInvalid(theField, mMessage); return false; } for (i = 0; i < texto.length; i++) { var Valido2= false; for (j = 0; j < Patron.length; j++) { if (texto.charAt(i) == Patron.charAt(j)) { if(Patron.charAt(j)=="@"&&Estado1==true) { Estado2=true; } if(Patron.charAt(j)=="@"&&Estado1==false) { Estado1=true; } Valido2=true; break; } } if (Valido2==false || Estado2==true) { Valido=false; break; } } if (!Valido) { warnInvalid(theField, "Error:" + mensaje); return (false); } return (true); } // Despliega la pagina que muestra los videos en banda ancha function Ventana220(s) { window.open("../../vid/video220.asp?sNomVid=" + s, "video","width=410,height=420,alwaysraised=yes,scrollbars=no,menubar=no,scrolbar=0,toolbar=0,status=no"); } // Despliega la pagina que muestra los videos con modem function Ventana56(s) { window.open("../../vid/video56.asp?sNomVid=" + s, "video","width=280,height=300,alwaysraised=yes,scrollbars=no,menubar=no,scrolbar=0,toolbar=0,status=no"); } function ventana(url, w_name, rs, w, h, t, l) { var resize = ""; if (rs) { resize = "resizable,"; } popupWin = window.open(url, w_name, 'scrollbars=no,menubar=no,' + resize + ',width=' + w + ',height=' + h + ',top=' + t + ',left=' + l); popupWin.focus(); } function MM_swapImgRestore() { //v3.0 var i,x,a=document.MM_sr; for(i=0;a&&i0&&parent.frames.length) { d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);} if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i AMDFecha2) { alert ("Error:" + mensaje) return (false); } return (true); } // valida que fecha1 no sea mayor que fecha2 // Recibe fechas con los siguentes formatos posibles : // dd/mm/yyyy - d/m/yyyy - dd/m/yyyy - d/mm/yyyy function FechaMayor1(Fecha1 , Fecha2 ,mensaje) { var partsDate var AMDFecha1 , AMDFecha2 var strFecha2 = Fecha2 var strFecha1 = Fecha1 //Fecha2 partsDate = strFecha2.split("/"); if (partsDate[2].length < 2) partsDate[2]= "0" + partsDate[2] if (partsDate[1].length < 2) partsDate[1]= "0" + partsDate[1] if (partsDate[0].length < 2) partsDate[0]= "0" + partsDate[0] AMDFecha2 = partsDate[2] + partsDate[1] + partsDate[0] //Fecha1 partsDate = strFecha1.split("/"); if (partsDate[2].length < 2) partsDate[2]= "0" + partsDate[2] if (partsDate[1].length < 2) partsDate[1]= "0" + partsDate[1] if (partsDate[0].length < 2) partsDate[0]= "0" + partsDate[0] AMDFecha1= partsDate[2] + partsDate[1] + partsDate[0] if (AMDFecha1 > AMDFecha2) return (true); return (false); } // // Verifica si fecha1 es menor que fecha2 // function FechaMenor(Fecha1 , Fecha2) { var partsDate var AMDFecha1 , AMDFecha2 var strFecha2 = Fecha2 var strFecha1 = Fecha1 //Fecha2 partsDate = strFecha2.split("/"); if (partsDate[2].length < 2) partsDate[2]= "0" + partsDate[2] if (partsDate[1].length < 2) partsDate[1]= "0" + partsDate[1] if (partsDate[0].length < 2) partsDate[0]= "0" + partsDate[0] AMDFecha2 = partsDate[2] + partsDate[1] + partsDate[0] //Fecha1 partsDate = strFecha1.split("/"); if (partsDate[2].length < 2) partsDate[2]= "0" + partsDate[2] if (partsDate[1].length < 2) partsDate[1]= "0" + partsDate[1] if (partsDate[0].length < 2) partsDate[0]= "0" + partsDate[0] AMDFecha1= partsDate[2] + partsDate[1] + partsDate[0] if (AMDFecha1 < AMDFecha2) { return (true); } return (false); } //-- valida la estructura de la direccion Email function EstructuraEmail(s) { var i = 1; var sLength = s.length; while ((i < sLength) && (s.charAt(i) != "@")) { i++ } if ((i >= sLength) || (s.charAt(i) != "@")) return false; else i += 2; while ((i < sLength) && (s.charAt(i) != ".")) { i++ } if ((i >= sLength - 1) || (s.charAt(i) != ".")) return false; else return true; } //------Valida Estructura del Telefono------ function EstructuraTelefono (s) { var modString; modString = stripCharsInBag( s, phoneChars ); return (isInteger(modString)) } //-----Valida Estructura Direccion-------------- function EstructuraDireccion (s) { return( isAlphanumeric( stripCharsInBag( s, whitespace ) ) || isAlphanumeric( stripCharsInBag( s, whiteSpaceAndSpecialChars ) )); } //-- Valida la estructura de un nombre --------- function esNombre (s) { return( isAlphanumeric( stripCharsInBag( s, whitespace ) ) || isAlphanumeric( stripCharsInBag( s, whiteSpaceAndPoint ) )); } //---------------------------------------------- function isNumDec (s) { var i; var dotAppeared; dotAppeared = false; if (isEmpty(s)) if (isNumber.arguments.length == 1) return defaultEmptyOK; else return (isNumber.arguments[1] == true); for (i = 0; i < s.length; i++) { var c = s.charAt(i); if( i != 0 ) { if ( c == "," ) { if( !dotAppeared ) dotAppeared = true; else return false; } else if (!isDigit(c)) return false; } else { if ( c == "," ) { if( !dotAppeared ) dotAppeared = true; else return false; } else if (!isDigit(c) && (c != "-") || (c == "+")) return false; } } return true; } function previousField( field ) { var f = formField(field); for (var i = 0; i < f.length; i++) if (f.elements[i] == field) break; return (i > 0 && i < f.length) ? f.elements[i-1] : null; } function getRadioButtonValue( radio ) { var exito = false; for (var i = 0; i < radio.length; i++) if (radio[i].checked) { exito = true; break; } if ( exito ) return radio[i].value; else return -1; } /* * Validaciones de Tarjetas de Crédito */ function isCreditCard( s ) { if (s.length > 19) return false; var sum = 0; var mul = 1; for (var i = 0; i < s.length; i++) { var digit = s.substring(s.length-i-1,s.length-i); var tprod = parseInt(digit,10)*mul; if (tprod >= 10) sum += (tprod % 10) + 1; else sum += tprod; if (mul == 1) mul++; else mul--; } return sum % 10 == 0 } function isVisa( cc ) { if (cc.length < 11 || cc.length > 19) return false; dig1 = cc.substring(0,1); return (dig1 == "4" && isCreditCard(cc)); } function isMasterCard( cc ) { if (cc.length < 11 || cc.length > 19) return false; dig1 = cc.substring(0,1); dig2 = cc.substring(1,2); return (dig1 == "5" && dig2 >= "1" && dig2 <= "5" && isCreditCard(cc)); } function isAmericanExpress( cc ) { if (cc.length < 11 || cc.length > 19) return false; dig1 = cc.substring(0,1); dig2 = cc.substring(1,2); return (dig1 == "3" && (dig2 == "4" || dig2 == "7") && isCreditCard(cc)); } function isDinersClub( cc ) { if (cc.length != 14) return false; dig1 = cc.substring(0,1); dig2 = cc.substring(1,2); return (dig1 == "3" && (dig2 == "0" || dig2 == "6" || dig2 == "8") && isCreditCard(cc)); } function isMagna( cc ) { if (cc.length != 16) return false; prefix = cc.substring(0,5); return ((prefix == "560359" || prefix == "567139" || prefix == "567229" || prefix == "568009") && isCreditCard(cc)); } function isAccount( ca ) { if (ca.length < 5 || ca.length > 20) return false; return isInteger(ca); } function isCardMatch( cardType, cardNumber ) { cardType = cardType.toUpperCase(); if (cardType == "VIS" || parseInt(cardType,10) == 5 ) return isVisa(cardNumber); if (cardType == "MST" || parseInt(cardType,10) == 4 ) return isMasterCard(cardNumber); if (cardType == "AMX" || parseInt(cardType,10) == 1 ) return isAmericanExpress(cardNumber); if (cardType == "DNR" || parseInt(cardType,10) == 2 ) return isDinersClub(cardNumber); if (cardType == "MGN" || parseInt(cardType,10) == 3 ) return isMagna(cardNumber); if (cardType == "CTE" ) return isAccount(cardNumber); if (cardType == "VTA" ) return isAccount(cardNumber); return false; } function reemplazarComas(Dato){ var Dato1 = Dato re = /\,/g Dato1 = Dato1.replace(re, ".") return(Dato1) } function Solo_Numeros(wKeycode){ num = isDigit(Chr(wKeycode)) if (num == false) { window.event.keyCode = 0 } else { return (window.event.keyCode) } }