/************************************************************************/
/*									*/
/*	Validaciones antes de trabajar con las cadenas			*/
/*									*/
/************************************************************************/


/******************** Foco **********************/
function Foco(cadena)
{
	eval(cadena + ".focus()");
}


/************* Validacion de una Cadena *********/

function ValidaCadena(cadena)
{	var sCad;
	eval( "sCad=" + cadena);
	while (sCad.indexOf("'")!=-1)
		sCad = sCad.replace("'","´");
	eval( cadena + "=sCad;");
}


/************* Validacion de Telefono ***********/

function ValidaTelefono(control,campo)
{	var flag=true;	 
	var i,j,a,cadena;
	eval("cadena = " + control + ".value");
	for(i=0;i<cadena.length;i++)
	{ 	a=(cadena.substr(i,1));
		j=a.charCodeAt(0);
		if (!( ((j>=48) && (j<=57)) || (j==45)))
			flag=false;
	}
	if (! flag)
	{
		alert("El " + campo + " contiene caracteres no válidos");
		eval(control + ".focus()")
	}
  return flag;
}


/************* Validacion de un Numero **********/

function ValidaNumero(control,campo)
{
	var flag=true;
	var i,j,a,cadena;
	eval("cadena = " + control + ".value");
	for(i=0;i<cadena.length;i++)
	{ 	a=(cadena.substr(i,1));
		j=a.charCodeAt(0);
		if (!( (j>=48) && (j<=57)) )
			flag=false;
	}
	if (! flag)
	{
		alert("El " + campo + " contiene caracteres no válidos");
		eval(control + ".focus()")
	}
  return flag;
}

/******* Validacion de un Codigo ******/
/* valida que el codigo (Cad) empieze con el literal*/

function ValidaCodigo(Cad,literal)
{	pos=0;
	a=1;
	b=1;
	Cadena=Cad;

	do
	{	car=Cadena.substr(pos,1);
		lit=literal.substr(pos,1);
		if  (!(car==lit))
			a=0
		else
			pos=pos+1;
	} while ((a) && (pos<literal.length));
	
	do
	{	car=Cadena.substr(pos,1);
		if  (!((car>="0") && (car<="9"))) 
			b=0
		else
			pos=pos+1;
	} while ((b) && (pos<Cadena.length));
	
	if ((a)&(b))
		return true
	else
		return false;
}

/*********** Validación de un TextArea **********/

// FUNCION ValidaTextArea VALIDA QUE LA CADENA NO SEA MAYOR QUE EL NUMERO DE CARACTERES
// ESPECIFICADOS EN nrocarac

function ValidaTextArea(cadena,nrocarac)
{	var longitud;
	var cad;
	eval("longitud="+cadena+".length");
	if (longitud>nrocarac)
	{	eval( "cad=" + cadena);
  		cad = cad.substr(0,nrocarac);
  		eval( cadena + "=cad");
 	}
	ValidaCadena(cadena);      
}

/********** Validacion de un Password **********/   
        
function ValidaPassword(control,campo)
{	seguir=1;
	pos=0;

	eval("Cadena= " + control + ".value");
	Cad=Cadena.toUpperCase();
	do
	{	car=Cad.substr(pos,1);
		if ((!((car>="A") && (car<="Z"))) && (!((car>="0") && (car<="9"))) && (car!="_"))
		{
			alert("El campo " + campo + " contiene caracteres no válidos");
			eval(control + ".focus()")
			seguir=0;
		}
		else
			pos=pos+1;
	} while ((seguir) && (pos<Cad.length));
	return seguir;
}

/********** Número de veces que se encuentra la subcadena**********/   
    
function numero_veces(cadena,caracter)
{	var numVeces=0;  
      
	while (cadena.indexOf(caracter,0)!=-1)
	{  	numVeces++;
		cadena=cadena.substr(cadena.indexOf(caracter,0)+1);
	}
	return numVeces;
}
     
/********** Número de veces que se encuentra la subcadena**********/

function reversa(cadena)
{	var resultado="";
	while (cadena!="")
	{ 	resultado=resultado.concat(cadena.substr(cadena.length-1));
		cadena=cadena.substr(0,cadena.length-2);
	}
	return resultado;
}


/************ Validación de una cadena de Emails ***************/
/*************** ( separados por (,) comas ) *******************/

function ValidaListaEmails(txtObject)
{
	var sCad,CadListaEmails,CadEmail,indice;
	
	eval( "sCad=" + txtObject + ".value");
	//alert(sCad);
	while (sCad.indexOf(";")!=-1)
		sCad = sCad.replace(";",",");
	while (sCad.indexOf(" ")!=-1)
		sCad = sCad.replace(" ","");
	eval( txtObject + ".value=sCad;");
	
	CadListaEmails = sCad;
	if (CadListaEmails.substr(CadListaEmails.length-1,1) != ",")
	   CadListaEmails = sCad + ",";
	
	//alert(CadEmail);
	
	while (CadListaEmails!="")	
	  { 	indice = CadListaEmails.indexOf(",");
		CadEmail = CadListaEmails.substr(0,indice);
		CadListaEmails = CadListaEmails.substr(indice+1,CadListaEmails.length-(indice+1));

		//alert(CadEmail);
		//alert(CadListaEmails);

		if(!CaractEmail(CadEmail))
		   { alert("El email '" + CadEmail + "' tiene caracteres no válidos");		
		     return false;	
		    }  
		if(!es_email(CadEmail))
		   { alert("El email '" + CadEmail + "' no es válido");
		     return false;	
		    }  
	   }	
	
	return true;
}

/************ Validacion de un Email ************/
     
function ValidaEmail(txtObject)
{

	if (!CaractEmail(txtObject.value))
	{
		alert("El email ingresado tiene caracteres no válidos");
		//alert(txtObject.value);
		txtObject.focus();
		return false;
	}

	if (txtObject.value.length!=0)
	{ 	if (es_email(txtObject.value))
			return true;
		else
		{ 	alert("El email ingresado no es válido");
   			txtObject.focus();
   			return false;
   		}
	}
	else
	{
		alert("El email ingresado no es válido");
		txtObject.focus();
		return false;
	}
	
}
     
     
function es_email(txtObject)
{	var cadena=txtObject;
	var flag=true; 

	//si hay espacios en blanco...
	if (cadena.indexOf(" ")!=-1)
	{
		flag=false;
		return flag;
	}
		
	//debe haber un único "@" en el medio de la cadena, así como no son
	//permitidos: "@.", ".@" o ".."
	//no puede empezar o terminar en "." o "@"
	//por lo menos debe haber un "."
	if 	((numero_veces(cadena,"@")!=1) || (cadena.indexOf("@")==0) ||
		(numero_veces(cadena,".")==0) || (cadena.indexOf(".")==0) ||
		(cadena.indexOf("..")!=-1) ||
		(cadena.indexOf("@.")!=-1) || (cadena.indexOf(".@")!=-1) ||
		(reversa(cadena).indexOf(".")==0) ||
		(reversa(cadena).indexOf("@")==0))
	{
		flag=false;
		return flag;
	}
	//por lo menos debe haber un "." después de "@"
	cadena=cadena.substr(cadena.indexOf("@")+1);
	if (cadena.indexOf(".")==-1)
		flag=false;
	return flag;
}


function CaractEmail(control)
{	
 	var seguir;
 	var pos;
 	var Cadena,Cad;
	seguir=1;
	pos=0;

	Cadena = control;
	
	Cad = Cadena.toUpperCase();
	do
	{	car=Cad.substr(pos,1);
		if ((!((car>="A") && (car<="Z"))) && (!((car>="0") && (car<="9"))) && (car!="_") && (car!=".") && (car!="@") && (car!="-"))
		{
			return false;
		}
		else
			pos=pos+1;
	} while ((seguir) && (pos<Cad.length));
	return true;
}

    
/********** Validacion de Fecha ************/
   
//min y max es el rango valido para el año (ingreso de datos sin value)

function ValidaFecha (dia,mes,anno,min,max,campo)
{	var aa,mm,dd;

	eval ("dd=" + dia + ".options[" + dia + ".selectedIndex].value");
	if (dd=="0")
	{
		alert("Por favor ingresa dia de " + campo);
      		eval( dia + ".focus()");
		return false		
	}

	eval ("mm=" + mes + ".options[" + mes + ".selectedIndex].value");
	if (mm=="0")
	{
		alert("Por favor ingresa mes de " + campo);
      		eval( mes + ".focus()");
		return false		
	}

	eval ("aa=" + anno + ".value");
	if (aa=="")
	{
		alert("Por favor ingresa año de " + campo);
      		eval( anno + ".focus()");
		return false		
	}
	
	if (isNaN(parseInt(aa,10)))
	{
		alert("Revisa Año de " + campo);
		eval( anno + ".focus()");
		return false;
	}
	
	if (parseInt(aa,10)<min)
	{
		alert("Año de " + campo + " debe ser mayor que " + min + ".");
		eval( anno + ".focus()");
		return false;
	}

	if (parseInt(aa,10)>max)
	{
		alert("Año de " + campo + " debe ser menor que " + max + ".");
		eval( anno + ".focus()");
		return false;
	}
    	
      	FechaAux = new Date(parseInt(aa,10),parseInt(mm,10)-1,parseInt(dd,10));
      	
      	if (FechaAux.getUTCMonth() == (mm-1) )
         	return true
       	else 
       	{
		alert("Fecha de " + campo + " inválida.");
		eval( dia + ".focus()");      
		return false;
       	}
}
   
/********** Validacion de Campo no Vacío ************/
   
function Vacio(control,campo)
{
	var sCad;   	
	eval("sCad = " + control + ".value" );
	sCad=trim(sCad);
	if (sCad=="")
	{
		alert("Por favor ingrese su " + campo + ".");
		eval(control + ".focus()");
		return true
	}
}
   	
/********** Validación de un Porcentaje *********/
 
function ValidaPorcentaje (txtObject)
{	var numVeces = 0;
	var longitud;
	var cadena=txtObject.value;
	var aux = cadena;

 	longitud = cadena.length;
 	while (aux.indexOf(".",0)!=-1)
 	{  	numVeces++;
 	  	aux=aux.substr(aux.indexOf(".",0)+1);
 	}
 	
 	if (numVeces > 1)
		return false;
 	
 	if (cadena.indexOf(".")==0)
		return false;
 	
 	if (cadena.indexOf(".")==(longitud-1)) 
		return false
 	else
		return true;
}

/********** Validación de espacios en blanco *********/

function trim(cadena)
{	while (cadena.substr(0,1)==" ")
		cadena=cadena.substr(1);
	while (cadena.substr(cadena.length-1,1)==" ")
		cadena=cadena.substr(0,cadena.length-1);
	while (cadena.search(/  /)!=-1)
		cadena=cadena.replace("  "," ");
	return(cadena);
}


/************************************************************************/
/*									*/
/*	Validaciones al momento de escribir las cadenas			*/
/*									*/
/************************************************************************/


   
var 	esNavegador, esIExplorer;

esNavegador = (navigator.appName == "Netscape") ? true : false;
esIExplorer = ((navigator.appName.indexOf("Microsoft") != -1) || (navigator.appName.indexOf("MSIE") != -1)) ? true : false;


/********** Validacion de Usuario y Contrasena en Onkeypress ************/

function e_carusu()
{
	if ( (!((event.keyCode>=65) && (event.keyCode<=90))) && (!((event.keyCode>=97) && (event.keyCode<=122))) && (!((event.keyCode>=48) && (event.keyCode<=57))) && (!(event.keyCode==95)))
	{
		event.returnValue=false;
	};
}

/********** Validacion de Usuario y Contrasena en Onkeypress ************/

function e_caracter()
{
	if ( (!((event.keyCode>=65) && (event.keyCode<=90))) && (!((event.keyCode>=97) && (event.keyCode<=122))) && (!(event.keyCode==46)) && (!(event.keyCode==209)) && (!(event.keyCode==241)) &&  (!(event.keyCode==32)) )
			  event.returnValue=false;
}

/********** Validacion de Correo en Onkeypress ************/

function e_correo()
{
	if ( (!((event.keyCode>=65) && (event.keyCode<=90))) && (!((event.keyCode>=97) && (event.keyCode<=122))) && (!(event.keyCode==46)) && (!((event.keyCode>=48) && (event.keyCode<=57))) && (!(event.keyCode==95)) && (!(event.keyCode==64)) && (!(event.keyCode==45)))
	{
		event.returnValue=false;
	};
 }

/********** Validacion de una lista de Correos en Onkeypress ************/

function e_listacorreo()
{
	if  (! ( ((event.keyCode>=65) && (event.keyCode<=90)) || ((event.keyCode>=97) && (event.keyCode<=122)) || (event.keyCode==46) || ((event.keyCode>=48) && (event.keyCode<=57)) || (event.keyCode==95) || (event.keyCode==64) || (event.keyCode==45) || (event.keyCode==44) )  )
	{
		event.returnValue=false;
	};
 }


/********** Validacion de Número en Onkeypress ************/

function e_numero()
{
	if ((event.keyCode<48) || (event.keyCode>57))
		 event.returnValue=false;
}

/********** Validacion de Teléfono en Onkeypress ************/

function e_telefono()
{
	if (!((event.keyCode>=48) && (event.keyCode<=57)) && (event.keyCode!=45))
		event.returnValue=false;
}

/********** Validacion de Cadena en Onkeypress ************/

function e_car_num()
{
	if (event.keyCode==39) //Se cambia la comilla simple por un apostrofe
		event.keyCode=180;
}

/********** Validacion de Caracteres en mayuscula en Onkeypress ************/

function e_mayusc_num()
{
	if (!((event.keyCode>=65) && (event.keyCode<=90))) 
		if ((event.keyCode<48) || (event.keyCode>57))
		event.returnValue=false;
}

/********** Validacion de Porcentaje en Onkeypress ************/

function e_porcentaje()
{
   	if ( ((event.keyCode<48) || (event.keyCode>57)) && (event.keyCode!=46) )
		event.returnValue=false;  
 } 
 
 
