var mes_sp      = new Array ("ENE","FEB","MAR","ABR","MAY","JUN","JUL","AGO","SEP","OCT","NOV","DIC");
var mes_us      = new Array ("JAN","FEB","MAR","APR","MAY","JUN","JUL","AUG","SEP","OCT","NOV","DEC");

var id_lectura  = "#c3d6e6"
var colordobleclick = "#D5B4D6"

// funoion para poner el color a los objetos por los que se va pasando
function colorActivo(){  
  var tip_objeto=document.activeElement.type;
  if(tip_objeto!=undefined){ //Comprueba que el tipo de objeto este definido
    tip_objeto=tip_objeto.toUpperCase();
    if(!( (tip_objeto == 'BUTTON')||
          (tip_objeto == 'SUBMIT')||
          (tip_objeto == 'RESET')||
          (tip_objeto == 'RADIO')) ) {
            if(!(document.activeElement.disabled)){
              if(document.activeElement.style.backgroundColor != id_lectura)
              document.activeElement.style.backgroundColor = "#EEEEEE"; // Asigna al objeto documento en el elemento que tiene el foco el estilo de contornear con el color amarillo
            }
    }
  }
}
//#DFE6EF
//#FFFFD5

// funcion para asignar el color a los objetos por los que se va pasando
function colorDesActivo(){
  var val_objeto=document.activeElement.value;

  if(val_objeto!=undefined){
    var tip_objeto=document.activeElement.type;
    if(tip_objeto!=undefined){
      tip_objeto=tip_objeto.toUpperCase();
      if(!( (tip_objeto == 'BUTTON')||
          (tip_objeto == 'SUBMIT')||
          (tip_objeto == 'RESET')||
          (tip_objeto == 'RADIO')) ){
            if(!(document.activeElement.disabled)){
               //document.activeElement.value=document.activeElement.value.replace(/\s+/g,' ').replace(/^\s+|\s+$/g,'').replace(/#/g,'No.').replace(/"/g,'').replace(/""/g,'').replace(/\\\(/g,'').replace(/\\\)/g,'').replace(/'/g,'').replace(/\‘/g,'').replace(/\’/g,'').replace(/”/g,'').replace(/“/g,'').replace(/</g,'').replace(/>/g,'').replace(/&/,'').replace(/%/,'')

              if(document.activeElement.value.length>0)
                document.activeElement.style.backgroundColor = "#FFE7CE";
              else
                document.activeElement.style.backgroundColor = "#FFFFFF";
              if(document.activeElement.id=='colordobleclick')
                 document.activeElement.style.backgroundColor = colordobleclick
              if(document.activeElement.id=='lectura')
                 document.activeElement.style.backgroundColor = id_lectura
            }
      }
    }
  }
}

// funcion para convertir a mayusculas
function fn_toUpperCase(pi_form,pi_name){
  pi_form[pi_name].value=pi_form[pi_name].value.toUpperCase()
}

// funcion para limpiar la forma con los colores de los objetos
function fn_limpiaforma(form){
   with(form){  
      lim_sup = elements.length;   //el array referencia al número de elementos que contiene el formulario, en el mismo orden en el que se definen en el documento HTML.
      for (k=0; k < lim_sup; k++){ // recorre filas
         tip_objeto  =elements[k].type; //el array referencia al tipo de objeto de los elementos que contiene el formulario en el mismo orden en el que se defienen en el documento HTML.
         tip_objeto  =tip_objeto.toUpperCase()//Lo convierte a Mayusculas.

         if(!( (tip_objeto == 'BUTTON')||
               (tip_objeto == 'SUBMIT')||
               (tip_objeto == 'RESET')||
               (tip_objeto == 'RADIO')) ){
             
             if (elements[k].style){
                    elements[k].style.backgroundColor = '#FFFFFF';
//                  elements[k].style.color           = '#2875C1';
             }
         }
      }
   }
}
// funcion para validar fechas
function isDate(fecha){
   if(fecha.search(/\//)==2)
      var sdate = fecha.split('/');
   else
      var sdate = fecha.split('-');

   mes = '0';
   for (k=0; k < 12; k++)
     if(
         (mes_sp[k]==sdate[1]) || (mes_us[k]==sdate[1])
        ){
           mes = k+1;
           break;
         }
   if(mes=='0')
     mes = Math.abs(sdate[1]);

   var fecha2  = mes+'/'+sdate[0]+'/'+sdate[2];
   var chkDate = new Date(Date.parse(fecha2));
   var cmpDate = (chkDate.getDate())+'/'+(chkDate.getMonth()+1)+'/'+(chkDate.getFullYear());
   var fecha3  = Math.abs(sdate[0])+'/'+mes+'/'+Math.abs(sdate[2]);
   tmp_valor   = fecha3;
   return((fecha3 != cmpDate)||(cmpDate == 'NaN/NaN/NaN'))
}

//funcion para validar el rfc
function fn_val_rfc(pi_form, pi_name)
{
	   rfc=pi_form[pi_name].value; 
       //rfc = rfc.toUpperCase().replace(/\&/g,'A');
       rfc = rfc.toUpperCase()
       if (rfc.length==0) 
       {
             return;
       }
      
       if (rfc.charAt(0)=='_') {
         msk_rfc=/^[_][A-ZÑ&][A-ZÑ&][A-ZÑ&]\d{6}[0-9A-ZÑ]{3}$/;
       }
       else {
         msk_rfc=/^[A-ZÑ&][A-ZÑ&][A-ZÑ&][A-ZÑ&]\d{6}[0-9A-ZÑ]{3}$/;
//         msk_rfc=/^[A-Z][AEIOU][A-Z][A-Z]\d{6}[0-9A-Z]{3}$/;
       }

       if (msk_rfc.test(rfc))
       {           
             var vl_fch_0 = new String(rfc.charAt(8)+rfc.charAt(9));
             var vl_fch_1 = new String(rfc.charAt(6)+rfc.charAt(7));
             var vl_fch_2 = new String(rfc.charAt(4)+rfc.charAt(5));       

             var vl_tmp1 = '0'+ new String(Math.abs(parseFloat(vl_fch_0)) + 100)             

             var vl_tmp2 = '0'+ new String(Math.abs(parseFloat(vl_fch_1)) + 100)
   
             switch( vl_fch_2.length)
             {
                 case 2:
                 {
                             if(vl_fch_2>="00" && vl_fch_2<="09")
                               vl_fch_2='20' + vl_fch_2
                             else
                               vl_fch_2='19' + vl_fch_2
                             break
                 }
             }


             var vl_tmp3 = '0'+ new String(Math.abs(parseFloat(vl_fch_2)) + 10000)             

             var vl_prueba = vl_tmp1.substr(2) + '/' +
                                   vl_tmp2.substr(2) + '/' +
                                   vl_tmp3.substr(2)

             if(isDate(vl_prueba))
             {
                    alert("R.F.C. Inválido");
                    pi_form[pi_name].value = '';
                    pi_form[pi_name].select();
                    pi_form[pi_name].focus();            
                    return; 
             }
             
             return;

       }
       else
       {    
            alert("R.F.C. Inválido");
            pi_form[pi_name].value = '';
            pi_form[pi_name].select();
            pi_form[pi_name].focus();            
            return;
       }
}

//funcion para validar el curp
function fn_val_curp(pi_form, pi_name)
{
       curp=pi_form[pi_name].value;
       curp = curp.toUpperCase();
       if (curp.length==0) 
       {
             return;
       }
       if (/^[A-ZÑ&][A-ZÑ&][A-ZÑ&][A-ZÑ&]\d{6}[H|M](AS|BC|BS|CC|CS|CH|CL|CM|DF|DG|GT|GR|HG|JC|MC|MN|MS|NT|NL|OC|PL|QT|QR|SP|SL|SR|TC|TS|TL|VZ|YN|ZS|NE)[BCDFGHJKLMNÑPQRSTVWXYZ]{3}[0-9|A-Z][0-9]$/.test(curp))
//       if (/^[A-Z][AEIOU][A-Z][A-Z]\d{6}[H|M](AS|BC|BS|CC|CS|CH|CL|CM|DF|DG|GT|GR|HG|JC|MC|MN|MS|NT|NL|OC|PL|QT|QR|SP|SL|SR|TC|TS|TL|VZ|YN|ZS|NE)[BCDFGHJKLMNÑPQRSTVWXYZ]{3}[0-9|A-Z][0-9]$/.test(curp))
       {
             var vl_fch_0 = new String(curp.charAt(8)+curp.charAt(9));
             var vl_fch_1 = new String(curp.charAt(6)+curp.charAt(7));
             var vl_fch_2 = new String(curp.charAt(4)+curp.charAt(5));

             var vl_tmp1 = '0'+ new String(Math.abs(parseFloat(vl_fch_0)) + 100)

             var vl_tmp2 = '0'+ new String(Math.abs(parseFloat(vl_fch_1)) + 100)
   
             switch( vl_fch_2.length)
             {
                 case 2:
                 {
                             vl_fch_2='19' + vl_fch_2
                             break
                 }
             }


             var vl_tmp3 = '0'+ new String(Math.abs(parseFloat(vl_fch_2)) + 10000)

             var vl_prueba = vl_tmp1.substr(2) + '/' +
                                   vl_tmp2.substr(2) + '/' +
                                   vl_tmp3.substr(2)

     
             if(isDate(vl_prueba))
             {
                    alert("C.U.R.P. Inválido");
                    pi_form[pi_name].value = '';
                    pi_form[pi_name].select();
                    pi_form[pi_name].focus();            
                    return; 
             }
             
             return;

       }
       else
       {
            alert("C.U.R.P. Inválido");
            pi_form[pi_name].value = '';
            pi_form[pi_name].select();
            pi_form[pi_name].focus();            
            return;
       }
}

function fn_entero_sin_signo(event){
  if (event.keyCode < 48 || event.keyCode > 57) event.returnValue = false;
}

