var sNUMERO = 'numero'; var sFECHA = 'fecha'; var sEMAIL = 'email'; var sTEXTO = 'texto'; function vGetItemValue ( sParCampo, sParForm ) { var nNumPar = arguments.length; if ( nNumPar < 1 || nNumPar > 2 || typeof( sParCampo ) != "string" ) { return( null ); } var oForm = ( nNumPar == 1 || typeof( sParForm ) != "string" ) ? document.forms[ 0 ] : document.forms[ sParForm ]; if( typeof( oForm ) != "object" ) { return( null ); } var oCampo = oForm.elements[ sParCampo ]; if( typeof( oCampo ) != "object" ) { return( null ); } var i, vRet, sValor, sCampoTipo = oCampo.type; if( sCampoTipo == "text" || sCampoTipo == "textarea" || sCampoTipo == "password" || sCampoTipo == "hidden" ) { vRet = oCampo.value; } else if( sCampoTipo == "select-one" || sCampoTipo == "select-multiple" ) { sValor = ""; for( i = 0; i < oCampo.options.length; i++ ) { if( oCampo.options[ i ].selected ) { if( sValor == "" ) { //sValor = oCampo.options[ i ].text; sValor = oCampo.options[ i ].value; } else { //sValor1 = oCampo.options[ i ].text; sValor1 = oCampo.options[ i ].value; sValor += ";" + sValor1 } } } vRet = new Array(); vRet = sValor.split (';'); } else if( sCampoTipo == "checkbox" || sCampoTipo == "radio" ) { vRet = ( oCampo.checked ) ? oCampo.value : ""; } else if ( ( "" + sCampoTipo ) == "undefined" ) { if( oCampo.value == null ) { var cMarcado; sValor = ""; for( i = 0; i < oCampo.length; i++ ) { cMarcado = ( oCampo[ i ].checked ) ? oCampo[i].value : ""; if( sValor == "" ) { sValor = cMarcado; } else { sValor += ";" + cMarcado; } } vRet = new Array(); vRet = sValor.split(';'); } else { vRet = null; } } else { vRet = null; } return( vRet ); } function bValidarFecha ( sParCampo, bParSoloTipo ) { if (arguments.length == 1) bParSoloTipo = false; else if (arguments.length != 2) return false; var bRet = false; var vValor = vGetItemValue ( sParCampo ); if ( vValor != null) { if (bParSoloTipo && vValor == "") return true; var re = /\d+(\/|-)\d+(\/|-)\d+/g // Cuadra con 'd+/d+/d+' var sFecha = new String ( vValor ); var sMatch = sFecha.match ( re ); if (sMatch != null && sMatch.toString() == sFecha) { var nPosAnio = sFecha.lastIndexOf ("/") + 1 + sFecha.lastIndexOf ("-") + 1; var nPosMes = sFecha.indexOf ("/") + 1 + sFecha.indexOf ("-") + 1; var nAnio = parseInt ( sFecha.substring ( nPosAnio, sFecha.length ) ); var nMes = parseInt ( sFecha.substring ( nPosMes, nPosAnio ), 10 ) - 1; var nDia = parseInt ( sFecha.substring ( 0, nPosMes ), 10); if ( nAnio < 50 ) nAnio = nAnio + 2000; else if ( nAnio < 100 ) nAnio = nAnio + 1900; var vFecha = new Date ( nAnio, nMes, nDia ); bRet = ( vFecha.getDate() == nDia && vFecha.getMonth() == nMes && vFecha.getFullYear() == nAnio && vFecha != "Invalid Date" ); } } return ( bRet ); } function bValidarNumero ( sParCampo, bParSoloTipo ) { if (arguments.length == 1) bParSoloTipo = false; else if (arguments.length != 2) return false; var bRet = false; var vValor = vGetItemValue ( sParCampo ); if ( vValor != null ) { if (bParSoloTipo && vValor == "") return true; var nNum = parseFloat ( vValor ); bRet = ( ! isNaN ( nNum ) ) && ( vValor == nNum ); } return ( bRet ); } function bValidarTexto ( sParCampo ) { var vValor = vGetItemValue ( sParCampo ); return ( vValor != null && vValor != ""); } function bValidarEMail( oParCampo, bParSoloTipo ) { if (arguments.length == 1) { bParSoloTipo = false; } else if (arguments.length != 2) return (false); var sEmail=vGetItemValue(oParCampo); if (sEmail == null) return false; if (bParSoloTipo && sEmail.length < 1) { return( true ); } var sEmailPatron = /^(.+)@(.+)$/; var sCaracteresEspeciales = "\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"; var sCaracteresValidos = "\[^\\s" + sCaracteresEspeciales + "\]"; var sComillasUsuario = "(\"[^\"]*\")"; var sIpDominioPatron = /^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/; var sSerie = sCaracteresValidos + '+'; var sPalabra = "(" + sSerie + "|" + sComillasUsuario + ")"; var sUsuarioPatron = new RegExp( "^" + sPalabra + "(\\." + sPalabra + ")*$" ); var sDominioPatron = new RegExp( "^" + sSerie + "(\\." + sSerie +")*$" ); var asEmail = sEmail.match( sEmailPatron ); if( asEmail == null) { return( false ); } var sUsuario = asEmail[ 1 ]; var sDominio = asEmail[ 2 ]; if( sUsuario.match( sUsuarioPatron ) == null ) { return( false ); } var asIpDominio = sDominio.match( sIpDominioPatron ); if( asIpDominio != null ) { for ( var i = 1; i <= 4; i++ ) { if ( asIpDominio[i] >255 ) { return( false ); } } return( true ); } var asDominio = sDominio.match( sDominioPatron ); if( asDominio == null ) { return( false ); } var sSeriePatron = new RegExp( sSerie, "g" ); var asDominioPartes = sDominio.match( sSeriePatron ); var nLen = asDominioPartes.length; if( asDominioPartes[ nLen-1 ].length < 2 || asDominioPartes[ nLen - 1 ].length > 3 ) { return( false ); } if( nLen < 2 ) { return( false ); } return( true ); } function vValidarCampo ( sParCampo, sParEtiqueta, sParTipo, bParSoloTipo ) { var vRet; if (arguments.length == 2) { sParTipo = ''; bParSoloTipo = false; } else if (arguments.length == 3) { bParSoloTipo = false; } else if (arguments.length != 4) return false; if (sParTipo == sNUMERO) { vRet = bValidarNumero (sParCampo, bParSoloTipo ); if ( ! vRet ) vRet = ' · El campo "' + sParEtiqueta + '" debe ser numérico.'; } else if (sParTipo == sFECHA) { vRet = bValidarFecha ( sParCampo, bParSoloTipo ); if ( ! vRet ) vRet = ' · El campo "' + sParEtiqueta + '" debe ser de tipo fecha (dd/mm/aa).'; } else if (sParTipo == sEMAIL) { vRet = bValidarEMail ( sParCampo, bParSoloTipo ); if ( ! vRet ) vRet = ' · El campo "' + sParEtiqueta + '" no tiene el formato correcto'; } else { vRet = bValidarTexto ( sParCampo ); if ( ! vRet ) vRet = ' · El campo "' + sParEtiqueta + '" no puede estar vacío.'; } return vRet; } function vValidarCampo_EN ( sParCampo, sParEtiqueta, sParTipo, bParSoloTipo ) { var vRet; if (arguments.length == 2) { sParTipo = ''; bParSoloTipo = false; } else if (arguments.length == 3) { bParSoloTipo = false; } else if (arguments.length != 4) return false; if (sParTipo == sNUMERO) { vRet = bValidarNumero (sParCampo, bParSoloTipo ); if ( ! vRet ) vRet = ' · Field "' + sParEtiqueta + '" must to be a number.'; } else if (sParTipo == sFECHA) { vRet = bValidarFecha ( sParCampo, bParSoloTipo ); if ( ! vRet ) vRet = ' · Field "' + sParEtiqueta + '" must to be a date (dd/mm/aa).'; } else if (sParTipo == sEMAIL) { vRet = bValidarEMail ( sParCampo, bParSoloTipo ); if ( ! vRet ) vRet = ' · Field "' + sParEtiqueta + '" hasn\'t got the correct format'; } else { vRet = bValidarTexto ( sParCampo ); if ( ! vRet ) vRet = ' · Field "' + sParEtiqueta + '" can\'t be null.'; } return vRet; } function bValidar ( asParCampos, asParEtiquetas, asParTipos, abParSoloTipos ) { var n = asParCampos.length; if ( n != asParEtiquetas.length ) return ( false ); if (arguments.length < 2) return ( false ); else if (arguments.length == 2) { var asParTipos = new Array(); var abParSoloTipos; for (var i = 0; i < n; i++) { asParTipos [ i ] = ''; abParSoloTipos = false; } } else if (arguments.length == 3) { var abParSoloTipos; for (var i = 0; i < n; i++) abParSoloTipos = false; } var bRet = true; var vOK; var k = 0; var sMensaje = 'Se han hallado los siguientes errores: \n\n'; for ( var i = 0; i < n; i++ ) { vOK = vValidarCampo ( asParCampos [ i ], asParEtiquetas [ i ], asParTipos [ i ], abParSoloTipos [ i ]); if ( typeof ( vOK ) != "boolean" ) { sMensaje += vOK + ' \n'; bRet = false; } else bRet = bRet && vOK; } if ( ! bRet ) alert ( sMensaje, 'Error' ); return bRet; } function bValidar_Campos ( asParCampos,asParEtiquetas, asParTipos, abParSoloTipos ) { var n = asParCampos.length; if ( n != asParEtiquetas.length ) return ( false ); if (arguments.length < 2) return ( false ); else if (arguments.length == 2) { var asParTipos = new Array(); var abParSoloTipos; for (var i = 0; i < n; i++) { asParTipos [ i ] = ''; abParSoloTipos = false; } } else if (arguments.length == 3) { var abParSoloTipos; for (var i = 0; i < n; i++) abParSoloTipos = false; } var bRet = true; var vOK; var k = 0; var sMensaje = 'Debe indicar los parámetros de búsqueda. \n\n'; for ( var i = 0; i < n; i++ ) { vOK = vValidarCampo_EN ( asParCampos [ i ], asParEtiquetas [ i ], asParTipos [ i ], abParSoloTipos [ i ]); if ( typeof ( vOK ) != "boolean" ) { bRet = false; } else bRet = bRet && vOK; } if ( ! bRet ) alert ( sMensaje, 'Error' ); return bRet; }