function validar(args){
	for(var i=0;i<args.length/2;i++)
	{
		obj=args[i*2];
		val=args[i*2].val();
		validate = args[(i*2)+1];
		$(obj).removeClass("validar");
		var re = re= new RegExp();
			switch(validate)
			{
				case "requerido":
						if(val.length<2) { alert("This field is required."); setFocus(obj); return false; }
				break;
				case "ci":
					if(val=="") { alert("This field is required."); setFocus(obj); return false; }
					else {
						re=/^[0-9]{5,7}\s[A-Za-z]{2,3}$/;
						if(re.test(val)==false) { alert("El Carnet de Identidad debe seguir el siguiente formato 0000000 AA."); setFocus(obj); return false; }
					}
				break;
				case "oci":
					if(val=="") {}
					else {
						re=/^[0-9]{5,7}\s[A-Za-z]{2,3}$/;
						if(re.test(val)==false) { alert("El Carnet de Identidad debe seguir el siguiente formato 0000000 AA."); setFocus(obj); return false; }
					}
				break;
				case "apellido":
					if(val=="") { alert("This field is required."); setFocus(obj); return false; }
					else {
						re=/^[A-Z|\xD1|a-z|\xF1]{1,25}(\s[A-Z|\xD1|a-z|\xF1]{1,25}){0,1}(\s){0,2}$/;
						if(re.test(val)==false) { alert("Un apellido debe constar máximo de 2 palabras."); setFocus(obj); return false; }
					}
				break;
				case "oapellido":
					if(val=="") {}
					else {
						re=/^[A-Z|\xD1|a-z|\xF1]{1,25}(\s[A-Z|\xD1|a-z|\xF1]{1,25}){0,1}(\s){0,2}$/;
						if(re.test(val)==false) { alert("Un apellido debe constar máximo de 2 palabras."); setFocus(obj); return false; }
					}
				break;
				case "apellidos":
					if(val=="") { alert("This field is required."); setFocus(obj); return false; }
					else {
						re=/^[A-Z|\xD1|a-z|\xF1]{1,25}(\s[A-Z|\xD1|a-z|\xF1]{1,25}){0,1}(\s){0,4}$/;
						if(re.test(val)==false) { alert("Los apellidos deben ser mínimo 1 y máximo 6."); setFocus(obj); return false; }
					}
				break;
				case "oapellidos":
					if(val=="") {}
					else {
						re=/^[A-Z|\xD1|a-z|\xF1]{1,25}(\s[A-Z|\xD1|a-z|\xF1]{1,25}){0,1}(\s){0,4}$/;
						if(re.test(val)==false) { alert("Los apellidos deben ser mínimo 1 y máximo 6."); setFocus(obj); return false; }
					}
				break;				
				case "nombre":
					if(val=="") { alert("This field is required."); setFocus(obj); return false; }
					else {
						re=/^[A-Z|\xD1|a-z|\xF1]{2,20}(\s[A-Z|\xD1|a-z|\xF1]{2,20}){0,2}(\s){0,4}$/;
						if(re.test(val)==false) { alert("The name must be have at less 2 letters."); setFocus(obj); return false; }
					}
				break;
				case "onombre":
					if(val=="") {}
					else {
						re=/^[A-Z|\xD1|a-z|\xF1]{2,20}(\s[A-Z|\xD1|a-z|\xF1]{2,20}){0,2}(\s){0,4}$/;
						if(re.test(val)==false) { alert("The name must be have at less 2 letters."); setFocus(obj); return false; }
					}
				break;				
				case "alfa":
					if(val=="") { alert("This field is required."); setFocus(obj); return false; }
					else {
						re=/^[A-Z|\xD1|a-z|\xF1]{2,20}(\s[A-Z|\xD1|a-z|\xF1]{2,20}){0,5}(\s){0,4}$/;
						if(re.test(val)==false) { alert("This is a alfa field."); setFocus(obj); return false; }
					}
				break;
				case "oalfa":
					if(val=="") {}
					else {
						re=/^[A-Z|\xD1|a-z|\xF1]{2,20}(\s[A-Z|\xD1|a-z|\xF1]{2,20}){0,5}(\s){0,4}$/;
						if(re.test(val)==false) { alert("This is a alfa field."); setFocus(obj); return false; }
					}
				case "nombre-completo":
					if(val=="") { alert("This field is required."); setFocus(obj); return false; }
					else {
						re=/^[A-Z|\xD1|a-z|\xF1]{2,20}(\s[A-Z|\xD1|a-z|\xF1]{2,20}){0,5}(\s){0,4}$/;
						if(re.test(val)==false) { alert("The complete name must be have at less 2 letters."); setFocus(obj); return false; }
					}
				break;
				case "onombre-completo":
					if(val=="") {}
					else {
						re=/^[A-Z|\xD1|a-z|\xF1]{2,20}(\s[A-Z|\xD1|a-z|\xF1]{2,20}){0,5}(\s){0,4}$/;
						if(re.test(val)==false) { alert("El nombre completo debe tener mínimo dos letras."); setFocus(obj); return false; }
					}
				break;			
				case "telefono":
					if(val=="") { alert("This field is required."); setFocus(obj); return false; }
					else {
						re=/^[0-9]{1,15}(\s[0-9]{1,15}){0,3}$/;
						if(re.test(val)==false) { alert("Your phone must be only numbers and spaces."); setFocus(obj); return false; }
					}
				break;
				case "otelefono":
					if(val=="") {}
					else {
						re=/^[0-9]{1,15}(\s[0-9]{1,15}){0,3}$/;
						if(re.test(val)==false) { alert("Your phone must be only numbers and spaces."); setFocus(obj); return false; }
					}
				break;
				case "busqueda-alpha":
					if(val=="") { alert("This field is required."); setFocus(obj); return false; }
					else {
						re=/^[A-Z|\xD1|a-z|\xF1]{2,25}$/;
						if(re.test(val)==false) { alert("La información a buscar debe tener al menos 2 caracteres y deben ser solo letras."); setFocus(obj); return false; }
					}
				break;
				case "entero":
					if(val=="") { alert("This field is required."); setFocus(obj); return false; }
					else {
						re=/^[0-9]{1,5}$/;
						if(re.test(val)==false) { alert("Este campo requiere un número entero."); setFocus(obj); return false; }
					}
				break;
				case "oentero":
					if(val=="") {}
					else {
						re=/^[0-9]{1,5}$/;
						if(re.test(val)==false) { alert("Este campo requiere un número entero."); setFocus(obj); return false; }
					}
				break;							
				case "decimal":
					if(val=="") { alert("This field is required."); setFocus(obj); return false; }
					else {
						re=/^[0-9]{1,6}(\x2E|\x2C){0,1}[0-9]{0,2}$/;
						if(re.test(val)==false) { alert("Este campo requiere un decimal con una precisión máxima de 2 dígitos."); setFocus(obj); return false; }
					}
				break;
				case "odecimal":
					if(val=="") {}
					else {
						re=/^[0-9]{1,6}(\x2E|\x2C){0,1}[0-9]{0,2}$/;
						if(re.test(val)==false) { alert("Este campo requiere un decimal con una precisión máxima de 2 dígitos."); setFocus(obj); return false; }
					}
				break;							
				case "fecha":
					if(val=="") { alert("This field is required."); setFocus(obj); return false; }
					else {
						re=/^(\d{4})(\x2d)(0[1-9]|1[012])(\x2d)([012][1-9]|3[01]|10|20)$/;
						if(re.test(val)==false) { alert("La fecha debe seguir el siguiente formato aaaa-mm-dd"); setFocus(obj); return false; }
					}
				break;
				case "ofecha":
					if(val=="") {}
					else {
						re=/^(\d{4})(\x2d)(0[1-9]|1[012])(\x2d)([012][1-9]|3[01]|10|20)$/;
						if(re.test(val)==false) { alert("La fecha debe seguir el siguiente formato aaaa-mm-dd"); setFocus(obj); return false; }
					}
				break;							
				case "usuario":
					if(val=="") { alert("This field is required."); setFocus(obj); return false; }
					else {
						re=/^\b.{1,15}\b$/;
						if(re.test(val)==false) { alert("El nombre de usuario debe tener mínimo 3 dígitos."); setFocus(obj); return false; }
					}
				break;
				case "ousuario":
					if(val=="") {}
					else {
						re=/^\b.{1,15}\b$/;
						if(re.test(val)==false) { alert("El nombre de usuario debe tener mínimo 3 dígitos."); setFocus(obj); return false; }
					}
				break;
				case "opassword":
					if(val=="") {}
					else {
						re=/^\b.{1,15}\b$/;
						if(re.test(val)==false) { alert("La contraseña de usuario debe tener mínimo 3 dígitos."); setFocus(obj); return false; }
					}
				break;
				case "password":
					if(val=="") { alert("This field is required."); setFocus(obj); return false; }
					else {
						re=/^\b.{1,15}\b$/;
						if(re.test(val)==false) { alert("La contraseña de usuario debe tener mínimo 3 dígitos."); setFocus(obj); return false; }
					}
				break;
				case "si-no":
					if(val=="") { alert("This field is required."); setFocus(obj); return false; }
					else {
						re=/^\b(SI|NO|si|no)\b$/;
						if(re.test(val)==false) { alert("Este campo debe contener una respuesta del tipo SI o NO."); setFocus(obj); return false; }
					}
				break;
				case "osi-no":
					if(val=="") {}
					else {
						re=/^\b(SI|NO|si|no)\b$/;
						if(re.test(val)==false) { alert("Este campo debe contener una respuesta del tipo SI o NO."); setFocus(obj); return false; }
					}
				break;
				case "email":
					if(val=="") { alert("This field is required."); setFocus(obj); return false; }
					else {
						re=/[\w-\.]{3,}@([\w-]{2,}\.)*([\w-]{2,}\.)[\w-]{2,4}/;
						if(re.test(val)==false) { alert("The e-mail must have a correct format."); setFocus(obj); return false; }
					}
				break;
				case "oemail":
					if(val=="") {}
					else {
						re=/[\w-\.]{3,}@([\w-]{2,}\.)*([\w-]{2,}\.)[\w-]{2,4}/;
						if(re.test(val)==false) { alert("The e-mail must have a correct format."); setFocus(obj); return false; }
					}
				break;				
			}
	}
	return true;
}

function setFocus(obj){
	//alert($(obj));
	$(obj).addClass("validar");
	$(obj).seekAttention();
	obj.focus();
}
