function chkfields(formname) {
  Error=''  	 
  re = /^([a-zA-Z]{3})(\w{0,1})_(\w+)$/;
  for(var i=0;i<document.forms[formname].length;i++){ 
    re.exec(document.forms[formname].elements[i].name)
    if(RegExp.$_== document.forms[formname].elements[i].name){//Nombre de campo valido
      fieldtype=RegExp.$1
      required=RegExp.$2
      fieldname=RegExp.$3
      switch(fieldtype.toLowerCase()){
        case 'str':
          reexp=/^.+$/;
          erresp='Deben ser caracteres.';
        break;
        case 'mem':
          reexp=/^(.+|\s*)+$/;
          erresp='Deben ser caracteres.';
        break;
        case 'int':
          reexp=/^[+|-]?\d+$/;
          erresp='Debe ser un número entero.';
        break;
		case 'lon':
          reexp=/^[+|-]?\d+$/;
          erresp='Debe ser un número entero.';
        break;
		case 'byt':
          reexp=/^[+|-]?[0-9]+$/;
          erresp='Debe ser un número entero.';
        break;
        case 'dbl':
          reexp=/^(([+|-]?\d+(\.\d*)?)|([+|-]?(\d*\.)?\d+))$/;
          erresp='Debe ser un número real.';
        break;
		case 'dou':
          reexp=/^(([+|-]?\d+(\.\d*)?)|([+|-]?(\d*\.)?\d+))$/;
          erresp='Debe ser un número real.';
        break;
        case 'eml':
		  //reexp=/^[a-zA-Z]{1}[a-zA-Z0-9_\.]*[\@][a-zA-Z0-9_]+((\.)[a-zA-Z]{2,3}){1,2}$/;
		  reexp=/^[a-zA-Z]{1}[a-zA-Z0-9_\.\-]*[\@][a-zA-Z0-9_\-]+((\.)[a-zA-Z0-9_\-]+)?((\.)[a-zA-Z]{2,3}){1,2}$/;
          erresp='Debe ser una cuenta de correo válida.';
        break;
        case 'dat':
          reexp=/^\d{1,2}[\/|-]\d{1,2}[\/|-]\d{4}$/
          erresp='Debe ser una fecha válida. mm/dd/aaaa';
        break;
		case 'rfc':
		  reexp=/^[a-zA-Z&]{3,4}[0-9]{6}[a-zA-Z0-9]{3}$/;
          erresp='Debe ser una Registro Federal de Causantes Válido. No debe incluir espacios ni guiones.';
        break;
		case 'hou':
		  reexp=/^\d{2}:\d{2}$/
          erresp='Debe ser una hora válida. hh:mm';
        break;
        default:reexp=/^$/
      }//switch
      if(required=='r'){
      	if(document.forms[formname].elements[i].value=='')
          Error+='El campo '+fieldname+' es requerido.\n'
        else      
          if(!reexp.test(document.forms[formname].elements[i].value) && reexp.source!='^$')
            Error+='Error en el campo '+fieldname+'. '+erresp+'\n'    
      }else    
         if(document.forms[formname].elements[i].value!='' && !reexp.test(document.forms[formname].elements[i].value) && reexp.source!='^$')
          Error+='Error en el campo '+fieldname+'.'+erresp+'\n'    
    }//Nombre de campo valido
  }//for
  if (Error!=''){
    alert(Error)
    return false
  }else
   return true
}

function MM_jumpMenu(targ,selObj,restore){ //v3.0
  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  if (restore) selObj.selectedIndex=0;
}

function openwindow(file,width,height){
  window.open(file,'_blank','toolbar=no,location=no,status=no,menubar=no,resizable=no,scrollbars=yes,width=' + width + ',height=' + height);
  void(0);
}

function openwindown(file,width,height){
  window.open(file,'_blank','toolbar=no,location=no,status=no,menubar=no,resizable=no,scrollbars=no,width=' + width + ',height=' + height);
  void(0);
}

function openwindowp(file,width,height,scr){
  window.open(file,'_blank','toolbar=no,location=no,status=no,menubar=no,resizable=yes,scrollbars=' + scr + ',width=' + width + ',height=' + height);
  void(0);
}

// Funcion para seleccionar todos los checkbox de una forma
function CheckAll(formname){
  for (i=0;i<document.forms[formname].elements.length;i++)
    if(document.forms[formname].elements[i].type=='checkbox') document.forms[formname].elements[i].checked=true
}

// Funcion para deseleccionar todos los checkbox de una forma
function UnCheckAll(formname){
  for (i=0;i<document.forms[formname].elements.length;i++)
    if(document.forms[formname].elements[i].type=='checkbox')document.forms[formname].elements[i].checked=false
}

// Funcion para invertir la seleccion de checkbox de una forma
function InvertAll(formname){
  for (i=0;i<document.forms[formname].elements.length;i++)
    if(document.forms[formname].elements[i].type=='checkbox')document.forms[formname].elements[i].checked=!document.forms[formname].elements[i].checked
}

// Funciones para seleccionar todos los checkbox menos uno, usado en la aplicacion usuarios.asp

function CheckAll2(formname, nocheck){
  for (i=0;i<document.forms[formname].elements.length;i++)
    if(document.forms[formname].elements[i].type=='checkbox'  && document.forms[formname].elements[i].name != nocheck) document.forms[formname].elements[i].checked=true
}

function UnCheckAll2(formname, nocheck){
  for (i=0;i<document.forms[formname].elements.length;i++)
    if(document.forms[formname].elements[i].type=='checkbox'  && document.forms[formname].elements[i].name != nocheck)document.forms[formname].elements[i].checked=false
}

function InvertAll2(formname, nocheck){
  for (i=0;i<document.forms[formname].elements.length;i++)
    if(document.forms[formname].elements[i].type=='checkbox'  && document.forms[formname].elements[i].name != nocheck)document.forms[formname].elements[i].checked=!document.forms[formname].elements[i].checked
}

// Función para mostrar calendario 1
function open_calendar00()
{
  new_window=window.open("./calendario00.asp","","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,copyhistory=yes,width=300,height=200");
}
// Función para mostrar calendario 2
function open_calendar01()
{
  new_window=window.open("./calendario01.asp","","toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,copyhistory=yes,width=300,height=200");
}

function somethingselected(formname,campo,cont){
  var forma=document.forms[formname];
  var algo=false;
  
  for(var i=1 ; i<=cont ;i++){
    if(forma.elements[campo + String(i)].checked)
	{
	  algo=true;
	}
  }
  return algo;
}