

function validaTextArea(myfield, e, strTipo, iLongitud ,strExtras) 
{
	if (iLongitud) {
      if (myfield.value.length>iLongitud){
    		alert ('Solo puede capturar un máximo de ' + iLongitud + ' caracteres');
        myfield.value= myfield.value.substr (0,iLongitud);
    		return false;
    	}	
  }
  switch (strTipo){
         case 'a' : return permiteLetras (myfield, e, strExtras);
         case 'an': return permiteAlfanumerico (myfield, e, strExtras);
         case 'na': return permiteAlfanumerico (myfield, e, strExtras);
         case 'n' : return permiteNumeros (myfield, e, strExtras);
         case 't' : return permiteTexto (myfield, e, strExtras);
         default  : return true;
  }
}

//==================================================================

function permiteLetras (myfield, e, strExtras){
   var strCarValidos="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" + strExtras;
   return validateChar(myfield,e,strCarValidos);
}

//==================================================================

function permiteNumeros (myfield, e, strExtras){
   var strCarValidos="1234567890" + strExtras;
   return validateChar(myfield,e,strCarValidos);
}

//==================================================================

function permiteAlfanumerico(myfield, e, strExtras){
   var strCarValidos="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890" + strExtras;
   return validateChar(myfield,e,strCarValidos);
}

//==================================================================

function permiteTexto(myfield, e, strExtras){
   var strCarValidos="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 ,¿?¡!<>/@;.:-_()$&%#" + strExtras;
   return validateChar(myfield,e,strCarValidos);
}

//==================================================================

function validateChar(myfield,e,validChars){ 
    var key;
    var keychar;
    
    if(window.event)
    	key = window.event.keyCode;
    else if (e)
    	key = e.which;
    else
    	return true;
    keychar = String.fromCharCode(key);
    
    //control keys
    if ((key==null)||(key==0)||(key==8)|| (key==9)||(key==13)||(key==27))
    	return true;
    //chars
    else if (((validChars).indexOf(keychar)>-1))
    	return true;	
    else
    	return false;
}

//==================================================================

function validaFormaAutomatico(oForma, strExcepciones,bValidaCamposOcultos){
  var listaObjetos='', i=0, bControlSinValor=false;

	if(bValidaCamposOcultos)
		strTiposdeCamposAValidar="'text,select-one,password,hidden'"
	else
		strTiposdeCamposAValidar="'text,select-one,password'"
		
  for (i=0;i<oForma.length; i++){

      if (strTiposdeCamposAValidar.indexOf(oForma[i].type)!=-1){ //buscar en estos tipos de objeto
         if (strExcepciones){
           if (strExcepciones.indexOf (oForma[i].name)!=-1){
              continue; //los controles en la lista de excepciones se omiten 
           }
         }
         if (oForma[i].value==''){         
            bControlSinValor=true;
            if(oForma[i].type!="hidden")
				oForma[i].focus();
            break;
         }
      }  
  }
  if (bControlSinValor){
	alert ('Debe de escribir al menos un valor en: "' + ((oForma[i].title.length>0)?oForma[i].title:oForma[i].name) + '"');
  } 
  return !bControlSinValor;

}

//==================================================================