/**********************************************************************/
/* Esta función devuelve verdadero si el valor pasado como argumento  */
/* es una cadena vacia.						      */
/**********************************************************************/


function vacio(valor)
	{
		if (valor=="")
			{
				return(true);
			}
		else
			{
				return(false);
			}
	}


/**********************************************************************/
/*  Esta funcion comprobará si el valor introducido en la variable    */
/*  'valor' tiene el número de caracteres introducidos en la          */
/*   variable 'num'.                                                  */   
/**********************************************************************/


function num_caracteres(valor,num)
	{
		if (valor.length==num) 
			
				return true;
			
		else
			
				return false;
			
		
	}
	


/**********************************************************************/	
/* La siguiente función toma como argumento una cadena de caracteres  */
/* y nos devuelve verdadero si la variable introducida está compuesta */
/* sólo por dígitos.                                                  */
/**********************************************************************/

function es_entero(numero)
	{
		cadena2="1234567890";
		valido=true;			
		cadena=numero;			
		for (i=0;i<cadena.length;i++)
			{
				ch=cadena.charAt(i);
				for (j=0;j<cadena2.length;j++)
					{						
						if (ch==cadena2.charAt(j)) break;								
							
					}
					if (j == cadena2.length) 
						{ 
      							valido = false; 
      							break; 
    						}														
			}
			
	
		if (valido==false)
			{	
				return(false);		
			}
		else
			{
				return(true);
			}		

}

/**********************************************************************/	
/* La siguiente función toma como argumento una cadena de caracteres  */
/* y nos devuelve verdadero si la variable introducida está compuesta */
/* sólo por dígitos y espacios.                                       */
/**********************************************************************/

function es_telefono(numero)
	{
		cadena2="1234567890";
		valido=true;			
		cadena=numero;			
		for (i=0;i<cadena.length;i++)
			{
				ch=cadena.charAt(i);
				for (j=0;j<cadena2.length;j++)
					{						
						if (ch==cadena2.charAt(j)) break;								
							
					}
					if (j == cadena2.length) 
						{ 
      							valido = false; 
      							break; 
    						}														
			}
			
	
		if (valido==false)
			{	
				return(false);		
			}
		else
			{
				return(true);
			}		

}
/**********************************************************************/	
/* La siguiente función toma como argumento una cadena de caracteres  */
/* y nos devuelve verdadero si la variable introducida está compuesta */
/* sólo por dígitos y una coma.                                                  */
/**********************************************************************/

function es_real(numero)
	{
		cadena2="1234567890,";
		contador=0;
		valido=true;			
		cadena=numero;			
		longitud=cadena.length;
		for (i=0;i<cadena.length;i++)
			{
				ch=cadena.charAt(i);
				if (ch==",") 
					{
						++contador;
					}
					
				
				for (j=0;j<cadena2.length;j++)
					{						
						if (ch==cadena2.charAt(j)) break;								
							
					}
					if (j == cadena2.length) 
						{ 
      							valido = false; 
      							break; 
    						}														
			}
	
		if (contador>=2 || cadena.charAt(longitud-1)==",")
			{
				 valido=false;
			}
		
		
		if (valido==false)
			{	
				return(false);		
			}
		else
			{
				return(true);
			}		

}

/**********************************************************************/	
/* La siguiente función toma como argumento una cadena de caracteres  */
/* y nos devuelve verdadero si la variable introducida está compuesta */
/* sólo por caracteres válidos para hacer una inserción en una base   */	
/* de datos.                                                          */
/**********************************************************************/

function es_valido(valor)
	{
		cadena2="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890_-";
		valido=true;			
		cadena=valor;			
		for (i=0;i<cadena.length;i++)
			{
				ch=cadena.charAt(i);
				for (j=0;j<cadena2.length;j++)
					{						
						if (ch==cadena2.charAt(j)) break;								
							
					}
					if (j == cadena2.length) 
						{ 
      							valido = false; 
      							break; 
    						}														
			}
			
	
		if (valido==false)
			{	
				return(false);		
			}
		else
			{
				return(true);
			}		

}

/**********************************************************************/
/*  Esta función recibe como argumento una cadena de caracteres       */
/* y devuelve verdadero si la cadena posée los caracteres '@' y '.'   */
/**********************************************************************/

function es_correo(email)
	{		
		if ((email.indexOf("@") == -1) || (email.indexOf(".") == -1))
			{
				return(false);
			}
		else
			{
				return(true);
			}
	}
/**********************************************************************/
/*Esta función valida si una fecha introducida es válida              */
/*    Ej: mm/dd/yyyy o mm-dd-yyyy o mm.dd.yyyy                      */
/*    								      */
/* 								      */
/**********************************************************************/	
function validar_fecha( strValue ) {

  var objRegExp = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/
 
  //Revisa si está en el formato correcto
  if(!objRegExp.test(strValue))
    return false; //no se ajusta al patron, fecha no valida
  else{
    var strSeparator = strValue.substring(2,3) //encuentra separador de fechas
    var arrayDate = strValue.split(strSeparator); //separa la fecha en dia, mes y año
    //crea un vector con los meses no iguales a febrero
    var arrayLookup = { '01' : 31,'03' : 31, '04' : 30,'05' : 31,'06' : 30,'07' : 31,
                        '08' : 31,'09' : 30,'10' : 31,'11' : 30,'12' : 31}
    var intDay = parseInt(arrayDate[1]); 

    //revisa si el valor del día y del mes son válidos
    if(arrayLookup[arrayDate[0]] != null) {
      if(intDay <= arrayLookup[arrayDate[0]] && intDay != 0)
        return true; //encontrado en el vector, fecha valida
    }
    
    //revisa febrero
    var intYear = parseInt(arrayDate[2]);
    var intMonth = parseInt(arrayDate[0]);
    if( ((intYear % 4 == 0 && intDay <= 29) || (intYear % 4 != 0 && intDay <=28)) && intDay !=0)
      return true; //Feb. tiene un número valido de días
  }
  return false; //cualquier otro valor, fecha no valida
}
	
	
/**********************************************************************/
//Validar fecha
//Este codigo JavaScript Permite validar la fecha en formato 00/00/0000. 
//formato fecha: dd/mm/yyyy
//Valida bisiestos y meses de 30 y 31 dias, 
//asegurandose demás de que la fecha sea mayor de 1900.
/**********************************************************************/

function fecha_correcta(fecha)
{ 
   if(fecha)
   {
      borrar = fecha;
      if ((fecha.substr(2,1) == "/") && (fecha.substr(5,1) == "/"))
      {      
         for (i=0; i<10; i++)
	     {	
            if (((fecha.substr(i,1)<"0") || (fecha.substr(i,1)>"9")) && (i != 2) && (i != 5))
			{
               borrar = '';
               break;  
			}  
         }
	     if (borrar)
	     { 
	        a = fecha.substr(6,4);
		    m = fecha.substr(3,2);
		    d = fecha.substr(0,2);
//		    if((a < 1900) || (a > 2050) || (m < 1) || (m > 12) || (d < 1) || (d > 31))
			if((a < 1900) || (m < 1) || (m > 12) || (d < 1) || (d > 31))
			{
		       borrar = '';
			 }
		    else
		    {
		       if((a%4 != 0) && (m == 2) && (d > 28))	 
			   {  
		          borrar = ''; // Año no biciesto y es febrero y el dia es mayor a 28
				}
			   else	
			   {
		          if ((((m == 4) || (m == 6) || (m == 9) || (m==11)) && (d>30)) || ((m==2) && (d>29)))
				  {
			         borrar = '';	    
  				  }	 
			   }  // else
		    } // fin else
         } // if (error)
      } // if ((fecha.substr(2,1) == "/") && (fecha.substr(5,1) == "/"))			    			
	  else
	  {
	     borrar = '';
	  }
   } // if (fecha)   
   if (borrar == '')  return false;
   else	return true;
}

function correctPNG() // correctly handle PNG transparency in Win IE 5.5 & 6.
{
   var arVersion = navigator.appVersion.split("MSIE")
   var version = parseFloat(arVersion[1])
   if ((version >= 5.5) && (document.body.filters)) 
   {
      for(var i=0; i<document.images.length; i++)
      {
         var img = document.images[i]
         var imgName = img.src.toUpperCase()
         if (imgName.substring(imgName.length-3, imgName.length) == "PNG")
         {
            var imgID = (img.id) ? "id='" + img.id + "' " : ""
            var imgClass = (img.className) ? "class='" + img.className + "' " : ""
            var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
            var imgStyle = "display:inline-block;" + img.style.cssText 
            if (img.align == "left") imgStyle = "float:left;" + imgStyle
            if (img.align == "right") imgStyle = "float:right;" + imgStyle
            if (img.parentElement.href) imgStyle = "cursor:pointer;" + imgStyle
            var strNewHTML = "<span " + imgID + imgClass + imgTitle
            + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
            + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
            + "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>" 
            img.outerHTML = strNewHTML
			
            i = i-1
         }
      }
   }    
}
