// ----------------------------------------------------------------------------------------------
//  DMX-Database // Check Input Library 
//  Written by Gerardo Couso Domínguez 
//  E-Mail: gcouso@dmxdatabase.com 
//  (c) 2011 GeX Union Software 
// ----------------------------------------------------------------------------------------------
//  checkinput.js - Archivo de comandos JavaScript para validar el ingreso de datos predefinidos 
// ----------------------------------------------------------------------------------------------

// Chequear dato genérico 
function CheckGeneric(string) 
{ var regex = /^\s*[A-Za-zñáéíóúü0-9\.\,\-\&\s]+\s*$/; 
  if (string == '' || regex.test(string)) 
     { return(true); } 
  else { window.alert('\nNo es un dato válido porque \ncontiene caracteres extraños'); 
         return(false); 
       } 
} 

// Chequear identidad de usuario 
function CheckUserID(string) 
{ var regex = /^[A-Za-z0-9]{6,12}$/; 
  if (string == '' || regex.test(string)) 
     { return(true); } 
  else { window.alert(string+'\nNo es un usuario válido \n\nFormatos aceptados: \nJUANPEREZ · JUAN1234 \n\nSoporta de 6 a 12 digitos \nalfanuméricos sensibles a \nmayúsculas y minúsculas \nsin espacios en blanco');  
         return(false); 
       } 
} 

// Chequear clave de usuario 
function CheckUserKEY(string) 
{ var regex = /^[A-Za-z0-9\@\#\$\%\&]{6,12}$/; 
  if (string == '' || regex.test(string)) 
     { return(true); } 
  else { window.alert(string+'\nNo es una clave válida \n\nFormatos aceptados: \n123456 · XY#123456 \n\nSoporta de 6 a 12 digitos \nalfanuméricos sensibles a \nmayúsculas y minúsculas \ninsertando @,#,$,%,& \nsin espacios en blanco'); 
         return(false); 
       } 
} 

// Chequear nombre de persona 
function CheckName(string) 
{ var regex = /^\s*[A-Z][a-zñáéíóúü]{1,15}(\s[A-Z]([a-zñáéíóúü]{1,15}|\.))?(\s[A-Z][a-zñáéíóúü]{1,15}){1,2}\s*$/; 
  if (string == '' || regex.test(string)) 
     { return(true); } 
  else { window.alert(string+'\nNo es un nombre válido \n\nFormatos aceptados: \nJuan Pérez García \nJuan Carlos Pérez \nJuan C. Pérez García'); 
         return(false); 
       } 
} 

// Chequear nombre de grupo 
function CheckGroup(string) 
{ var regex = /^\s*[A-Z][A-Za-zñáéíóúü0-9]{1,15}((\-|\.\s|\s)[A-Z][A-Za-zñáéíóúü0-9]{1,15}){0,2}\s*$/; 
  if (string == '' || regex.test(string)) 
     { return(true); } 
  else { window.alert(string+'\nNo es un grupo válido \n\nFormatos aceptados: \nComunicaciones \nRedes Locales \nServ. Técnico \nWi-Fi Routers'); 
         return(false); 
       } 
} 

// Chequear frase de texto 
function CheckPhrase(string) 
{ var regex = /^\s*[A-Za-zñáéíóúü0-9\.\,\-\¡\!\¿\?\(\)\&\s]+\s*$/; 
  if (string.length <= 128) 
     { if (string == '' || regex.test(string)) 
          { return(true); } 
       else { window.alert('\nNo es una frase válida porque \ncontiene caracteres extraños'); 
              return(false); 
            } 
     } 
  else { window.alert('\nNo es una frase válida porque \ntiene más de 128 caracteres'); 
         return(false); 
       } 
} 

// Chequear mensaje de texto 
function CheckMessage(string) 
{ var regex = /^\s*[A-Za-zñáéíóúü0-9\.\:\,\;\-\+\*\/\=\<\>\¡\!\¿\?\(\)\{\}\[\]\'\"\º\ª\@\#\$\%\&\s]+\s*$/; 
  if (string.length <= 1024) 
     { if (string == '' || regex.test(string)) 
          { return(true); } 
       else { window.alert('\nNo es un mensaje válido porque \ncontiene caracteres extraños'); 
              return(false); 
            } 
     } 
  else { window.alert('\nNo es un mensaje válido porque \ntiene más de 1024 caracteres'); 
         return(false); 
       } 
} 

// Chequear texto genérico 
function CheckText(string) 
{ var regex = /^\s*[A-Za-zñáéíóúü0-9\.\:\,\;\-\+\*\/\=\<\>\¡\!\¿\?\(\)\{\}\[\]\'\"\º\ª\@\#\$\%\&\s]+\s*$/; 
  if (string.length <= 16384) 
     { if (string == '' || regex.test(string)) 
          { return(true); } 
       else { window.alert('\nNo es un texto válido porque \ncontiene caracteres extraños'); 
              return(false); 
            } 
     } 
  else { window.alert('\nNo es un texto válido porque \ntiene más de 16384 caracteres'); 
         return(false); 
       } 
} 

// Chequear número natural 
function CheckNatural(string) 
{ var regex = /^\s*([0-9]|[1-9][0-9]{1,8}|[1-9][0-9]{0,2}(\.[0-9]{3}){1,2})\s*$/; 
  if (string == '' || regex.test(string)) 
     { return(true); } 
  else { window.alert(string+'\nNo es un número natural válido \n\nFormatos y rangos aceptados: \n1234 · (0 a 999999999) \n1.234 · (0 a 999.999.999)'); 
         return(false); 
       } 
} 

// Chequear número entero 
function CheckInteger(string) 
{ var regex = /^\s*([\+\-]?[0-9]|[\+\-]?[1-9][0-9]{1,8}|[\+\-]?[1-9][0-9]{0,2}(\.[0-9]{3}){1,2})\s*$/; 
  if (string == '' || regex.test(string)) 
     { return(true); } 
  else { window.alert(string+'\nNo es un número entero válido \n\nFormatos y rangos aceptados: \n1234 · (0 a ±999999999) \n1.234 · (0 a ±999.999.999)'); 
         return(false); 
       } 
} 

// Chequear número decimal 
function CheckDecimal(string) 
{ var regex = /^\s*([\+\-]?[0-9][\,\.][0-9]{1,9}|[\+\-]?[1-9][0-9]{1,8}[\,\.][0-9]{1,9}|[\+\-]?[1-9][0-9]{0,2}(\.[0-9]{3}){1,2}\,[0-9]{1,9})\s*$/; 
  if (string == '' || regex.test(string)) 
     { return(true); } 
  else { window.alert(string+'\nNo es un número decimal válido \n\nFormatos y rangos aceptados: \n1234.0 · (0.0 a ±999999999.999999999) \n1234,0 · (0,0 a ±999999999,999999999) \n1.234,0 · (0,0 a ±999.999.999,999999999)'); 
         return(false); 
       } 
} 

// Chequear precio de producto 
function CheckPrice(string) 
{ var regex = /^\s*([0-9][\,\.][0-9]{2}|[1-9][0-9]{1,8}[\,\.][0-9]{2}|[1-9][0-9]{0,2}(\.[0-9]{3}){1,2}\,[0-9]{2})\s*$/; 
  if (string == '' || regex.test(string)) 
     { return(true); } 
  else { window.alert(string+'\nNo es un precio válido \n\nFormatos y rangos aceptados: \n1234.00 · (0.00 a 999999999.99) \n1234,00 · (0,00 a 999999999,99) \n1.234,00 · (0,00 a 999.999.999,99)'); 
         return(false); 
       } 
} 

// Chequear código de producto 
function CheckCode(string) 
{ var regex = /^\s*[A-Za-z0-9]+([\-\/][A-Za-z0-9]+)*\s*$/; 
  if (string == '' || regex.test(string)) 
     { return(true); } 
  else { window.alert(string+'\nNo es un código válido \n\nFormatos aceptados: \n1234 · 1234-56 · 1234/56 \n12XY · 1234-XY · 1234/XY'); 
         return(false); 
       } 
} 

// Chequear fecha gregoriana 
function CheckDate(string) 
{ var regex1 = /^\s*[0-9]{2}(\/[0-9]{2}\/|\-[0-9]{2}\-|\.[0-9]{2}\.)[0-9]{4}\s*$/; 
  var regex2 = /^\s*(0[1-9]|[12][0-9]|3[01])[\/\-\.](01|03|05|07|08|10|12)[\/\-\.](19|20)[0-9]{2}\s*$/; 
  var regex3 = /^\s*(0[1-9]|[12][0-9]|30)[\/\-\.](04|06|09|11)[\/\-\.](19|20)[0-9]{2}\s*$/; 
  var regex4 = /^\s*(0[1-9]|1[0-9]|2[0-8])[\/\-\.]02[\/\-\.](19|20)[0-9]{2}\s*$/; 
  var regex5 = /^\s*29[\/\-\.]02[\/\-\.](19|20)(00|04|08|12|16|20|24|28|32|36|40|44|48|52|56|60|64|68|72|76|80|84|88|92|96)\s*$/; 
  if (string == '' || (regex1.test(string) && (regex2.test(string) || regex3.test(string) || regex4.test(string) || regex5.test(string))))
     { return(true); } 
  else { window.alert(string+'\nNo es una fecha válida \n\nFormatos y rangos aceptados: \ndd/mm/aaaa · (01/01/1900 al 31/12/2099) \ndd-mm-aaaa · (01-01-1900 al 31-12-2099) \ndd.mm.aaaa · (01.01.1900 al 31.12.2099)'); 
         return(false); 
       } 
} 

// Chequear hora y minutos 
function CheckTime(string) 
{ var regex = /^\s*([01][0-9]|2[0-3]):[0-5][0-9]\s*$/; 
  if (string == '' || regex.test(string)) 
     { return(true); } 
  else { window.alert(string+'\nNo es una hora válida \n\nFormato y rango aceptado: \nhh:mm · (00:00 a 23:59)'); 
         return(false); 
       } 
} 

// Chequear número de teléfono 
function CheckPhone(string) 
{ var regex1 = /^\s*(\+[0-9]{1,4}\-|\(\+?[0-9]{1,4}\)\s)?[0-9]{1,4}(\-?[0-9]{1,4}){1,2}\s*$/; 
  var regex2 = /^\s*(\+[0-9]{1,4}\s|\(\+?[0-9]{1,4}\)\s)?[0-9]{1,4}(\s?[0-9]{1,4}){1,2}\s*$/; 
  if (string == '' || regex1.test(string) || regex2.test(string)) 
     { return(true); } 
  else { window.alert(string+'\nNo es un teléfono válido \n\nFormatos aceptados: \n+598-1234-5678 \n+598 1234 5678 \n(+598) 1234-5678 \n(+598) 1234 5678 \n(+598) 12345678 \n(598) 12345678 \n1234-5678 \n\nSoporta cualquier número\ncon código internacional'); 
         return(false); 
       } 
} 

// Chequear número de celular 
function CheckCellular(string) 
{ var regex1 = /^\s*(\+[0-9]{1,4}\-|\(\+?[0-9]{1,4}\)\s)?[0-9]{1,4}(\-?[0-9]{1,4}){1,2}\s*$/; 
  var regex2 = /^\s*(\+[0-9]{1,4}\s|\(\+?[0-9]{1,4}\)\s)?[0-9]{1,4}(\s?[0-9]{1,4}){1,2}\s*$/; 
  if (string == '' || regex1.test(string) || regex2.test(string)) 
     { return(true); } 
  else { window.alert(string+'\nNo es un celular válido \n\nFormatos aceptados: \n+598-99-123456 \n+598 99 123456 \n(+598) 99-123456 \n(+598) 99 123456 \n(+598) 99123456 \n(598) 99123456 \n099-123456 \n\nSoporta cualquier número\ncon código internacional'); 
         return(false); 
       } 
} 

// Chequear cédula de identidad 
function CheckIDCard(string) 
{ var regex1 = /^\s*[1-9]\.[0-9]{3}\.[0-9]{3}\-[0-9]\s*$/; 
  var regex2 = /^\s*[1-9][0-9]{2}\.[0-9]{3}\-[0-9]\s*$/; 
  var ci = new Array(); 
  var v1 = new Array(); 
  var v2 = new Array(); 
  var sum = 0; 
  if (string == '') 
     { return(true); } 
  if (regex1.test(string) || regex2.test(string)) 
     { ci = string.split(''); 
       switch (ci.length) 
       { case 9: 
         v1.push(ci[0],ci[1],ci[2],ci[4],ci[5],ci[6]); 
         v2.push(1,2,3,4,7,6); break; 
         case 11: 
         v1.push(ci[0],ci[2],ci[3],ci[4],ci[6],ci[7],ci[8]); 
         v2.push(8,1,2,3,4,7,6); break; 
       } 
       for (i=0; i <= v1.length-1; i++) 
           { sum += v1[i] * v2[i]; } 
       if (ci[ci.length-1] == sum % 10) 
          { return(true); } 
       else { window.alert(string+'\nNo es una cédula válida porque \nhay algún error en la digitación'); 
              return(false); 
            } 
     } 
  else { window.alert(string+'\nNo es una cédula válida \n\nFormatos aceptados: \n1.234.567-2 \n123.456-1 \n\nSoporta solamente\ncédulas uruguayas'); 
         return(false); 
       } 
} 

// Chequear dirección de correo 
function CheckEmail(string) 
{ var regex = /^\s*[\wñáéíóúü\-\.]+@[\wñáéíóúü\-]+(\.[\wñáéíóúü\-]+)?(\.(com|net|org|gub|edu|info|tv)(\.[a-z]{2})?|\.[a-z]{2})\s*$/; 
  if (string == '' || regex.test(string)) 
     { return(true); } 
  else { window.alert(string+'\nNo es una dirección válida de correo \n\nFormatos aceptados: \njuanperez@hotmail.com \njuanperez@adinet.com.uy \njuan-perez@adinet.com.uy \njuan_perez@adinet.com.uy \njuan.perez@adinet.com.uy \njuan.pérez@mail.dmx.com \n\nSoporta nombres de dominios \ninternacionales (Norma IDN)'); 
         return(false); 
       } 
} 

// Chequear dirección de sitio web 
function CheckWebsite(string) 
{ var regex = /^\s*http:\/\/(www\.)?[\wñáéíóúü\-]+(\.[\wñáéíóúü\-]+)?(\.(com|net|org|gub|edu|info|tv)(\.[a-z]{2})?|\.[a-z]{2})(\/([\wñáéíóúü\-]+\/)*[\wñáéíóúü\-]+(\.(asp|aspx|cgi|php|htm|html))?)?\s*$/; 
  if (string == '' || regex.test(string)) 
     { return(true); } 
  else { window.alert(string+'\nNo es una dirección válida de sitio web \n\nFormatos aceptados: \nhttp://www.juanperez.com \nhttp://www.juan-pérez.com \nhttp://juanperez.blogspot.com \nhttp://www.juanperez.com/contacto \nhttp://www.juanperez.com/inicio.asp \n\nSoporta nombres de dominios \ninternacionales (Norma IDN)'); 
         return(false); 
       } 
} 

// Chequear dirección de IP fija 
function CheckIPAddress(string) 
{ var regex = /^\s*http:\/\/([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){3}(:[0-9]{1,5})?\s*$/; 
  if (string == '' || regex.test(string)) 
     { return(true); } 
  else { window.alert(string+'\nNo es una dirección válida de IP \n\nFormatos aceptados: \nhttp://186.49.145.134:8080 \nhttp://186.49.145.134'); 
         return(false); 
       } 
} 

// Chequear dirección de archivo Acrobat 
function CheckUrlPDF(string) 
{ var regex = /^\s*http:\/\/(www\.)?[\wñáéíóúü\-]+(\.[\wñáéíóúü\-]+)?(\.(com|net|org|gub|edu|info|tv)(\.[a-z]{2})?|\.[a-z]{2})\/([\wñáéíóúü\-]+\/)*[\wñáéíóúü\-]+\.pdf\s*$/; 
  if (string == '' || regex.test(string)) 
     { return(true); } 
  else { window.alert(string+'\nNo es una dirección válida de archivo Acrobat \n\nFormato aceptado: \nhttp://www.juanperez.com/medios/archivo.pdf'); 
         return(false); 
       } 
} 

// Chequear dirección de archivo Word 
function CheckUrlDOC(string) 
{ var regex = /^\s*http:\/\/(www\.)?[\wñáéíóúü\-]+(\.[\wñáéíóúü\-]+)?(\.(com|net|org|gub|edu|info|tv)(\.[a-z]{2})?|\.[a-z]{2})\/([\wñáéíóúü\-]+\/)*[\wñáéíóúü\-]+\.doc\s*$/; 
  if (string == '' || regex.test(string)) 
     { return(true); } 
  else { window.alert(string+'\nNo es una dirección válida de archivo Word \n\nFormato aceptado: \nhttp://www.juanperez.com/medios/archivo.doc'); 
         return(false); 
       } 
} 

// Chequear dirección de archivo Excel 
function CheckUrlXLS(string) 
{ var regex = /^\s*http:\/\/(www\.)?[\wñáéíóúü\-]+(\.[\wñáéíóúü\-]+)?(\.(com|net|org|gub|edu|info|tv)(\.[a-z]{2})?|\.[a-z]{2})\/([\wñáéíóúü\-]+\/)*[\wñáéíóúü\-]+\.xls\s*$/; 
  if (string == '' || regex.test(string)) 
     { return(true); } 
  else { window.alert(string+'\nNo es una dirección válida de archivo Excel \n\nFormato aceptado: \nhttp://www.juanperez.com/medios/archivo.xls'); 
         return(false); 
       } 
} 

// Chequear dirección de archivo PowerPoint 
function CheckUrlPPS(string) 
{ var regex = /^\s*http:\/\/(www\.)?[\wñáéíóúü\-]+(\.[\wñáéíóúü\-]+)?(\.(com|net|org|gub|edu|info|tv)(\.[a-z]{2})?|\.[a-z]{2})\/([\wñáéíóúü\-]+\/)*[\wñáéíóúü\-]+\.pps\s*$/; 
  if (string == '' || regex.test(string)) 
     { return(true); } 
  else { window.alert(string+'\nNo es una dirección válida de archivo PowerPoint \n\nFormato aceptado: \nhttp://www.juanperez.com/medios/archivo.pps'); 
         return(false); 
       } 
} 

// Chequear dirección de archivo comprimido (1) 
function CheckUrlZIP(string) 
{ var regex = /^\s*http:\/\/(www\.)?[\wñáéíóúü\-]+(\.[\wñáéíóúü\-]+)?(\.(com|net|org|gub|edu|info|tv)(\.[a-z]{2})?|\.[a-z]{2})\/([\wñáéíóúü\-]+\/)*[\wñáéíóúü\-]+\.zip\s*$/; 
  if (string == '' || regex.test(string)) 
     { return(true); } 
  else { window.alert(string+'\nNo es una dirección válida de archivo comprimido \n\nFormato aceptado: \nhttp://www.juanperez.com/medios/archivo.zip'); 
         return(false); 
       } 
} 

// Chequear dirección de archivo comprimido (2) 
function CheckUrlRAR(string) 
{ var regex = /^\s*http:\/\/(www\.)?[\wñáéíóúü\-]+(\.[\wñáéíóúü\-]+)?(\.(com|net|org|gub|edu|info|tv)(\.[a-z]{2})?|\.[a-z]{2})\/([\wñáéíóúü\-]+\/)*[\wñáéíóúü\-]+\.rar\s*$/; 
  if (string == '' || regex.test(string)) 
     { return(true); } 
  else { window.alert(string+'\nNo es una dirección válida de archivo comprimido \n\nFormato aceptado: \nhttp://www.juanperez.com/medios/archivo.rar'); 
         return(false); 
       } 
} 

// Chequear dirección de archivo de audio 
function CheckUrlAUDIO(string) 
{ var regex1 = /^\s*http:\/\/(www\.)?[\wñáéíóúü\-]+(\.[\wñáéíóúü\-]+)?(\.(com|net|org|gub|edu|info|tv)(\.[a-z]{2})?|\.[a-z]{2})(:[0-9]{2,5})?\/([\wñáéíóúü\-]+\/)*[\wñáéíóúü\-]+\.(aac|mp3)\s*$/; 
  var regex2 = /^\s*http:\/\/([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){3}(:[0-9]{2,5})?\/([\wñáéíóúü\-]+\/)*[\wñáéíóúü\-]+\.(aac|mp3)\s*$/; 
  if (string == '' || regex1.test(string) || regex2.test(string)) 
     { return(true); } 
  else { window.alert(string+'\nNo es una dirección válida de archivo de audio \n\nFormatos aceptados: \nhttp://www.juanperez.com/medios/archivo.aac \nhttp://www.juanperez.com/medios/archivo.mp3 \nhttp://dmxaudio.dyndns.tv:8080/archivo.mp3 \nhttp://186.49.145.134:8080/archivo.mp3'); 
         return(false); 
       } 
} 

// Chequear dirección de archivo de video 
function CheckUrlVIDEO(string) 
{ var regex1 = /^\s*http:\/\/(www\.)?[\wñáéíóúü\-]+(\.[\wñáéíóúü\-]+)?(\.(com|net|org|gub|edu|info|tv)(\.[a-z]{2})?|\.[a-z]{2})(:[0-9]{2,5})?\/([\wñáéíóúü\-]+\/)*[\wñáéíóúü\-]+\.(flv|mp4)\s*$/; 
  var regex2 = /^\s*http:\/\/([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){3}(:[0-9]{2,5})?\/([\wñáéíóúü\-]+\/)*[\wñáéíóúü\-]+\.(flv|mp4)\s*$/; 
  if (string == '' || regex1.test(string) || regex2.test(string)) 
     { return(true); } 
  else { window.alert(string+'\nNo es una dirección válida de archivo de video \n\nFormatos aceptados: \nhttp://www.juanperez.com/medios/archivo.flv \nhttp://www.juanperez.com/medios/archivo.mp4 \nhttp://dmxvideo.dyndns.tv:8080/archivo.mp4 \nhttp://186.49.145.134:8080/archivo.mp4'); 
         return(false); 
       } 
} 

// Chequear dirección de archivo de imagen 
function CheckUrlWEBCAM(string) 
{ var regex1 = /^\s*http:\/\/(www\.)?[\wñáéíóúü\-]+(\.[\wñáéíóúü\-]+)?(\.(com|net|org|gub|edu|info|tv)(\.[a-z]{2})?|\.[a-z]{2})(:[0-9]{2,5})?(\/([\wñáéíóúü\-]+\/)*[\wñáéíóúü\-]+\.jpg)?\s*$/; 
  var regex2 = /^\s*http:\/\/([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){3}(:[0-9]{2,5})?(\/([\wñáéíóúü\-]+\/)*[\wñáéíóúü\-]+\.jpg)?\s*$/; 
  if (string == '' || regex1.test(string) || regex2.test(string)) 
     { return(true); } 
  else { window.alert(string+'\nNo es una dirección válida de archivo de imagen \n\nFormatos aceptados: \nhttp://www.juanperez.com/medios/archivo.jpg \nhttp://dmxwebcam.dyndns.tv:8080/archivo.jpg \nhttp://186.49.145.134:8080/archivo.jpg \nhttp://186.49.145.134:8080'); 
         return(false); 
       } 
} 

// Fin de Archivo
