﻿/*
VALIDACION DE STRINGS:
verificarCadena(campo,cadena,obligatorio,maxSize)
verificarCadenaSinComillas(campo,cadena,obligatorio,maxSize)
verificarUrl(campo,cadena,obligatorio)
verificarArchivo(campo,cadena,formatos,obligatorio)
verificarMail(campo,cadena,obligatorio)
verificarAlfanumerico(campo,cadena,obligatorio)


VALIDACION DE FECHAS
verificarFecha(campo,cadena,obligatorio)
verificarRangoFechas(fecha1,fecha2,obligatorio)


VALIDACION DE NUMEROS
verificarEntero(campo,valor,obligatorio)
verificarRangoEntero(campo,valor,min, max,obligatorio)
verificarFlotante(campo,valor,obligatorio)
verificarSimboloRomano(campo,valor,obligatorio)


VALIDACION VARIAS
verificarSelect(campo,valor)
*/

function verificarSelect(campo,valor){
    if (valor==-1){
        return " - Elija una opción para el campo "+campo+".<br />";
    }
    return "";
}

function verificarCadena(campo,cadena,obligatorio,maxSize){

    url = document.location.href ;    
    if (url.match("ing/")){        
        texto = " - It is necessary to enter "+campo+"<br />" ;
    }
    else {             
        texto = " - El campo "+campo+" es obligatorio.<br />";
    }

	if (obligatorio){
		if (esVacio(cadena)){
			return texto;
		}
	}
	
	if (cadena.length>maxSize){
		return " - El campo "+campo+" no puede excederse de " + maxSize + " caracteres.<br />";
	}
	
	return "";
}

function verificarCadenaSinComillas(campo,cadena,obligatorio,maxSize){
	if (obligatorio){
		if (esVacio(cadena)){
			return " - El campo "+campo+" es obligatorio.<br />";
		}
	}
	
	if(!validarCadenaSinComillas(cadena))
    {
	    return " - El campo "+campo+" esta mal formado. No se permiten comillas.<br />";
	}

	if (cadena.length>maxSize){
		return " - El campo "+campo+" no puede excederse de " + maxSize + " caracteres.<br />";
	}
	
	return "";
}


function verificarCadenaSinComillasDobles(campo,cadena,obligatorio,maxSize){
	if (obligatorio){
		if (esVacio(cadena)){
			return " - El campo "+campo+" es obligatorio.<br />";
		}
	}
	
	if(!validarCadenaSinComillasDobles(cadena))
    {
	    return " - El campo "+campo+" esta mal formado. No se permiten comillas dobles.Solamente comillas simples.<br />";
	}

	if (cadena.length>maxSize){
		return " - El campo "+campo+" no puede excederse de " + maxSize + " caracteres.<br />";
	}
	
	return "";
}


function verificarSimboloRomano(campo,cadena,obligatorio,maxSize){ 
  cadena=cadena.toUpperCase();  
  if (obligatorio){
		if (esVacio(cadena)){
			return " - El campo "+campo+" es obligatorio.<br />";
		}
	}           
   
    var charpos=cadena.search("[^IVXLCDM]");
   
    if(charpos >= 0) { 
		return " - El campo "+campo+" esta mal formado. Los simbolos validos en el sistema de numeracion romano pueden ser M, D, C, L, X, V y I.<br />";
		
	} 
	
	return "";
}



function verificarFecha(campo,cadena,obligatorio){
	if (obligatorio){
		if (esVacio(cadena)){
			return " - El campo "+campo+" es obligatorio.<br />";
		}
	}
	if (!(esVacio(cadena))&&(!isDate(cadena))){
			return " - El campo "+campo+" esta mal formado. Ejemplo de ayuda: 05/10/2008.<br />";
		}

	return "";	
}

function verificarRangoFechas(fecha1,fecha2,obligatorio){
	if (obligatorio){
		if ((esVacio(fecha1))||(esVacio(fecha2))){
			return " - El rango de fechas es obligatorio.<br />";
		}
	}
	var dia1=new Date();
	var f1 = fecha1.split("/")
	dia1.setFullYear(f1[2],f1[1]-1,f1[0]);
	var dia2=new Date();
	var f2 = fecha2.split("/")
	dia2.setFullYear(f2[2],f2[1]-1,f2[0]);		
	if (dia1>dia2){
		return " - Verifique el rango de fechas.<br />";
	}	

	return "";
}


function verificarUrl(campo,cadena,obligatorio){
	if (obligatorio){
		if (esVacio(cadena)){
			return " - El campo "+campo+" es obligatorio.<br />";
		}
	}
	
	if((!validarUrl(cadena))||(!validarCadenaSinComillas(cadena)))
    {
	    return " - El campo "+campo+" esta mal formado. Ejemplo de ayuda: http://www.google.com<br />";
	}	
	
	return "";
}

function verificarEntero(campo,valor,obligatorio){
	if (obligatorio){
		if (esVacio(valor)){
			return " - El campo "+campo+" es obligatorio.<br />";
		}
	}
	
	var expr = /^(?:\+|-)?\d+$/
    if ((!expr.test( valor ))&&(!esVacio(valor))) {
		return " - El campo "+campo+" esta mal formado. Debe ser un numero entero.<br />";
	}
	return "";
}

function verificarRangoEntero(campo,valor,min,max,obligatorio){
   
	if (obligatorio){
		if (esVacio(valor)){
			return " - El campo "+campo+" es obligatorio.<br />";
		}
	}
	
	var expr = /^(?:\+|-)?\d+$/
    if ((!expr.test( valor ))&&(!esVacio(valor))) {
		return " - El campo "+campo+" esta mal formado. Debe ser un numero entero.<br />";
	}
		
	if (valor < min || valor > max){
	    return " - El campo "+campo+" esta fuera del rango. Rango permitido "+min+" - "+max+".<br />";
	}
	return "";
}



function verificarFlotante(campo,valor,obligatorio){
	if (obligatorio){
		if (esVacio(valor)){
			return " - El campo "+campo+" es obligatorio.\n";
		}
	}
	var expr = /(^(?:\+|-)?\d+\.\d*$|^(?:\+|-)?\d+$)/
    if ((!expr.test( valor ))&&(!esVacio(valor))) {
		return " - El campo "+campo+" debe ser un numero real, separado por punto.<br />";
	}
	return "";
}

//formatos debe ser un array de la forma new Array('txt','doc','pdf')
function verificarArchivo(campo,cadena,formatos,obligatorio){
	if (obligatorio){
		if (esVacio(cadena)){
			return " - El campo "+campo+" es obligatorio.<br />";
		}
	}
	if (!esVacio(cadena)){
		var ext=cadena.substring(cadena.lastIndexOf(".")+1,cadena.length).toLowerCase();
		var i = 0;
		var txtFormatos = "";
		var ok = false;
		while (i < formatos.length){
			txtFormatos+=" ." + formatos[i];
			if (ext==formatos[i]){
				ok = true;
			}
			i++;
		}
		
		if (!ok){
			return " - El campo "+campo+" debe ser un archivo de extension "+txtFormatos+" .<br />";
		}
	}
	return "";
}



function verificarMail(campo,cadena,obligatorio){
    texto=""
    url = document.location.href ;  
	if (obligatorio){
		if (esVacio(cadena)){
			if (url.match("ing/")){        
                texto = " - It is necessary to enter "+campo+"<br />" ;
            }
            else {             
                texto = " - El campo "+campo+" es obligatorio.<br />";
            }
			return texto;
		}
	}
	
	if(cadena.indexOf('@',0)==-1 || cadena.indexOf(';',0)!=-1
	|| cadena.indexOf(' ',0)!=-1 || cadena.indexOf('/',0)!=-1
	|| cadena.indexOf(';',0)!=-1 || cadena.indexOf('<',0)!=-1
	|| cadena.indexOf('>',0)!=-1 || cadena.indexOf('*',0)!=-1
	|| cadena.indexOf('|',0)!=-1 
	|| cadena.indexOf('&',0)!=-1 || cadena.indexOf('$',0)!=-1
	|| cadena.indexOf('!',0)!=-1 || cadena.indexOf(':',0)!=-1 
	|| (!validarCadenaSinComillas(cadena))
	) 
	{ 
		 if (url.match("ing/")){        
                texto = " - The email address you entered seems to be wrong.<br />" ;
            }
            else {             
                texto = " - El campo "+campo+" esta mal formado.<br />";
            }
        return texto;	
	}
	
	return texto;
}






function verificarAlfanumerico(campo,cadena,obligatorio)
{
    if (obligatorio)
    {
		if (esVacio(cadena))
		{
			return " - El campo "+campo+" es obligatorio.<br />";
		}
		if(!validarAlfanumerico(cadena))
        { 
	
		    return " - El campo "+campo+" esta mal formado. Solo se admiten caracteres alfanuméricos.<br />";
		}
	}
    return "";
}

//no mas en uso.. usar verificarArchivo
function verificarImagen(campo,cadena,obligatorio){
	if (obligatorio){
		if (esVacio(cadena)){
			return " - El campo "+campo+" es obligatorio.<br />";
		}
	}

	var ext=cadena.substring(cadena.lastIndexOf(".")+1,cadena.length).toLowerCase();
	if ((ext!="jpg")&&(!esVacio(cadena))){
		return " - El campo "+campo+" debe ser una imagen de extension .jpg<br />";
	}
	return "";
}

/******************************************************************/
function validarAlfanumerico(valor)
{
    var alfa = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
    alfa+=String.fromCharCode(193,201,205,209,211,218,225,233,237,241,243,250);   
    for(i=0;i<valor.length;i++)
    {    
        if(alfa.indexOf(valor.charAt(i))==-1)
        {
            return false;
        }
    }
   return true;
}

function validarEntero(valor){
     valor = parseInt(valor)
     if (isNaN(valor)) {
        return false;
     }
     else {
        return true;
     }
}

function validarFlotante(valor){
	var valido=true;
	//permito numeros, caracter '.'
	for (i = 0; i < valor.length; i++)	{
		if (!(  ((valor.charAt(i) >= "0") && (valor.charAt(i) <= "9")) || (valor.charAt(i) == "."))){
			valido = false;
			break;
		}
	} 
	return valido;
} 

function esVacio(cadena)
{
    var valido=false;
    var mistr;
    mistr="";
	for ( i = 0; i < cadena.length; i++ ) 
	{
        if ( cadena.charAt(i) != " " ) 
        {
            mistr= mistr + cadena.charAt(i);
        }           
    }
    
  if (cadena.length==0 || mistr.length==0)
    {
        valido=true;
    }
    return valido;
 }   

function isDate(dateStr) {
	var datePat = /^(\d{2})(\/)(\d{2})(\/|-)(\d{4})$/;
	var matchArray = dateStr.match(datePat); // is the format ok?
	
	if (matchArray == null) {
		return false;
	}
	
	day = matchArray[1]; // p@rse date into variables
	month = matchArray[3];
	year = matchArray[5];
	
	if (month < 1 || month > 12) { // check month range
		return false;
	}
	
	if (day < 1 || day > 31) {
		return false;
	}
	
	if ((month==4 || month==6 || month==9 || month==11) && day==31) {
		return false;
	}
	
	if (month == 2) { // check for february 29th
	var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
	if (day > 29 || (day==29 && !isleap)) {
		return false;
	}
	}
	return true; // date is valid
}

function validarUrl(cadena){
	return ((cadena.substr(0,7)== "http://")||(cadena.substr(0,8)== "https://"));
}

function validarCadenaSinComillas(cadena){
	var alfa = "'\"";
	for(i=0;i<cadena.length;i++)
	{    
		if(alfa.indexOf(cadena.charAt(i))!=-1)
		{
			return false;
		}
	}	
	return true;
}

function validarCadenaSinComillasDobles(cadena){
	var alfa = '"';
	for(i=0;i<cadena.length;i++)
	{    
		if(alfa.indexOf(cadena.charAt(i))!=-1)
		{
			return false;
		}
	}	
	return true;
}
