/*Jxs 0.2 Beta
 * Desarrollado por javier L. Ajaxman
 * Derechos reservados (c) México 2007 Ajaxman mas informacion en www.ajaxman.net
 * licencia GPL.
 *
 */
Jxs=new Object();
/*
Definicion de la funciones globales para uso comun
*/
var _F=function(ID){return document.getElementById(ID).focus();} //Foco del Elemento
var _I=function(ID){var ID=document.getElementById(ID);return ID;} //ID del Elemento
var _V=function(ID){var val=document.getElementById(ID).value;return val;} //valor del Elemento
var _DL=function(f){var n = 0;	var t = setInterval(function(){var c = true;  n++;	if(typeof document.getElementsByTagName != 'undefined' && (document.getElementsByTagName('body')[0] != null || document.body != null)){c = false;if(!c) { f(); clearInterval(t); }}if(n >= 60){clearInterval(t);}}, 250);};
/* Definimos la primera variable que es la version de la libreria */
Jxs = {ver:'0.2 Beta'};

/* Funcion que inicia una vez cargado el dom , se manda adentro la funciones que uno desees
_DL(function(){
});
*/

/* funcion detener
Detiene ciertos eventos del teclado y a la vez modifica el tamaño de lo elementos (input-text)

Jxs.D("ID","Tipo","Datos","Permitir no no permitir",["Numero maximo de caracteres que permitira"])
ID=id
Tipo =
      R=rango
      A=Array
      U=unico
Datos=  Los datos dependeran de lo que se va a validar son caracteres asccii
"a,c,d,r,t"  Serian los datos que se  van a validar, en este caso de un array.
"a,d"  datos de un rango a validar, en este caso de un rango desde un caracter hasta otro, el orden del rango depende del codigo ascii.
"x" un unico caracter.
"Permitir o no permitir" = toma valores true o false, dependiendo de lo que queramos hacer
si los caracteres que pusimos en el array son los unicos que se pemitiran, el valor es true
en cambio si se pemitiran todos los caracteres excepto lso de los datos, seria false
ejemplo

el ultimo parametro es opcional con el cual el idicamos si queremos establecer un tamaño predeterminado del campo.
si no lo ponemos, no importa
Ejemplos
Sin tamaño
Jxs._D("usuario","A","91,92,93,94",false);
Con tamaño
Jxs._D("usuario","A","10,55,64,97",false,8);
*/

/*
Jxs Core _D=Detener
_T modificar Tamaño de input
_V validar cualquier campo
*/
Jxs=
{
  _D: function (_i,_t,_d,_p,_ta)
    {
    if(typeof _ta!="undefined" || _ta!=0)Jxs._T(_i,_ta);
    var _id=_I(_i);
    _id.onkeydown=function(e)
    	{
    	var _tcl=(typeof e=="undefined")?window.event.keyCode:e.which;
    	switch(_t)
    	 {
    	  case "R":
    	  var _ind=_d.split(",");
    	  var _exp=(_p==true)?"_tcl<_ind[0] || _tcl>_ind[1]":"_tcl>_ind[0] && _tcl<_ind[1]";
          if(eval(_exp)){if(e)e.preventDefault(); return false;}
          else{return true;}
    	  break;

    	  case "A":
          var _ind=_d.split(",");
    	  var _ctrl=0;
    	  var _tam=_ind.length;
    	  var _exp=(_p==true)?"_ind[i]==_tcl":"_ind[i]==_tcl";
          var _ret=(_p==true)?"!_ctrl":"_ctrl";
    	  for(i = 0 ; i<_tam; i++)
          {_ctrl+=(_ind[i]==_tcl)?1:0;}
          if(eval(_ret)){if(e)e.preventDefault(); return false;}else{return true;}
    	  break;

    	  case "U":
          var _exp=(_p==true)?"_tcl!=_d":"_tcl==_d";
    	  if(eval(_exp))
    	  {if(e)e.preventDefault();return false;}
    	  else{return true;}
    	  break;

    	  default:
    	  var _exp=(_p==true)?"_tcl!=_d":"_tcl==_d";
    	  if(eval(_exp))
    	  {if(e)e.preventDefault(); return false;}
    	  else{return true;}
    	  break;
    	  }
    	}
    },
    _T: function(_i,_ta)
    {
    var _id=_I(_i);
        if(typeof _ta=="undefined" || _ta==0)
        {return true;}
        else
        {
        _id.maxLength=_ta;
        _id.setAttribute("size",_ta);
        return true;
        }
    },
    _V:function(_t,_i,_e,_m)
    {
     var _id=_I(_i);
     switch(_t)
    	 {    
           case "txt":
           var _v=_V(_i);
           var _l=(typeof _m != "undefined")?'_v=="" || _v.length<_m':'_v==""';
           if(eval(_l))
           {
           alert(_e);
           _F(_i);
           return false;
           }
           else
           {
           return true;
           }
           break;


	   case "mail":
      	   var emailStr=_V(_i);
           var emailPat=/^(.+)@(.+)$/
	   var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]";
	   var validChars="\[^\\s" + specialChars + "\]";
	   var quotedUser="(\"[^\"]*\")";
           var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
	   var atom=validChars + '+';
	   var word="(" + atom + "|" + quotedUser + ")";
	   var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
	   var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
      	   var matchArray=emailStr.match(emailPat)
      	   if (matchArray==null) {alert(_e);_F(_i);return false;}
      	   var user=matchArray[1];
      	   var domain=matchArray[2];
      	   if (user.match(userPat)==null){alert(_e);_F(_i);return false;}
      	   var atomPat=new RegExp(atom,"g");
      	   var domArr=domain.match(atomPat);
      	   var len=domArr.length;
      	   if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3) {alert(_e);_F(_i);return false;}
      	   if (len<2) {alert(_e);_F(_i);return false;}
           break;

	   default:
	   var _v=_V(_i);
           var _l=(typeof _m != "undefined")?'_v=="" || _v.length<_m':'_v==""';
           if(eval(_l))
           {
           alert(_e);
           _F(_i);
           return false;
           }
           else
           {
           return true;
           }
           break;	
         }

    }
}
/* Motor de ajax
para instanciar ajax de manera nativa con el objeto XMLHttpRequest
Metodo proporcionado por Jhon Resig(jquery)
*/
if(typeof XMLHttpRequest=="undefined")XMLHttpRequest = function(){return new ActiveXObject(navigator.userAgent.indexOf("MSIE 5") >= 0 ?"Microsoft.XMLHTTP" : "Msxml2.XMLHTTP");};
