String.prototype.trim = function()
{	
	string = this.replace(/^\s+/, '');
	for (var i = string.length; i > 0; i--) {
		if (/\S/.test(string.charAt(i))) {
			string = string.substring(0, i);
			break;
		}
	}
	return string;
};

function validar(args){
	for(var i=0;i<args.length/2;i++)
	{
		obj=args[i*2];
		validate = args[(i*2)+1];
		var re = re= new RegExp();
			switch(validate)
			{
				case "requerido":
						if(obj.value.length<2) { alert("Este campo es requerido."); obj.focus(); return false; }
				break;
				case "ci":
					if(obj.value=="") { alert("Este campo no puede quedar vacío."); obj.focus(); return false; }
					else {
						re=/^[0-9]{5,7}\s[A-Za-z]{2,3}$/;
						if(re.test(obj.value)==false) { alert("El Carnet de Identidad debe seguir el siguiente formato 0000000 AA."); obj.focus(); return false; }
					}
				break;
				case "oci":
					if(obj.value=="") {}
					else {
						re=/^[0-9]{5,7}\s[A-Za-z]{2,3}$/;
						if(re.test(obj.value)==false) { alert("El Carnet de Identidad debe seguir el siguiente formato 0000000 AA."); obj.focus(); return false; }
					}
				break;
				case "apellido":
					if(obj.value=="") { alert("Este campo no puede quedar vacío."); obj.focus(); 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(obj.value)==false) { alert("Un apellido debe constar máximo de 2 palabras."); obj.focus(); return false; }
					}
				break;
				case "oapellido":
					if(obj.value=="") {}
					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(obj.value)==false) { alert("Un apellido debe constar máximo de 2 palabras."); obj.focus(); return false; }
					}
				break;
				case "apellidos":
					if(obj.value=="") { alert("Este campo no puede quedar vacío."); obj.focus(); 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(obj.value)==false) { alert("Los apellidos deben ser mínimo 1 y máximo 6."); obj.focus(); return false; }
					}
				break;
				case "oapellidos":
					if(obj.value=="") {}
					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(obj.value)==false) { alert("Los apellidos deben ser mínimo 1 y máximo 6."); obj.focus(); return false; }
					}
				break;				
				case "nombre":
					if(obj.value=="") { alert("Este campo no puede quedar vacío."); obj.focus(); 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(obj.value)==false) { alert("El nombre debe tener mínimo dos letras."); obj.focus(); return false; }
					}
				break;
				case "onombre":
					if(obj.value=="") {}
					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(obj.value)==false) { alert("El nombre debe tener mínimo dos letras."); obj.focus(); return false; }
					}
				break;				
				case "nombre-completo":
					if(obj.value=="") { alert("Este campo no puede quedar vacío."); obj.focus(); 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(obj.value)==false) { alert("El nombre completo debe tener mínimo dos letras."); obj.focus(); return false; }
					}
				break;
				case "onombre-completo":
					if(obj.value=="") {}
					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(obj.value)==false) { alert("El nombre completo debe tener mínimo dos letras."); obj.focus(); return false; }
					}
				break;			
				case "telefono":
					if(obj.value=="") { alert("Este campo no puede quedar vacío."); obj.focus(); return false; }
					else {
						re=/^[0-9]{1,15}(\s[0-9]{1,15}){0,3}$/;
						if(re.test(obj.value)==false) { alert("El Teléfono debe contener solo dígitos y espacios."); obj.focus(); return false; }
					}
				break;
				case "otelefono":
					if(obj.value=="") {}
					else {
						re=/^[0-9]{1,15}(\s[0-9]{1,15}){0,3}$/;
						if(re.test(obj.value)==false) { alert("El Teléfono debe contener solo dígitos y espacios."); obj.focus(); return false; }
					}
				break;
				case "busqueda-alpha":
					if(obj.value=="") { alert("Este campo no puede quedar vacío."); obj.focus(); return false; }
					else {
						re=/^[A-Z|\xD1|a-z|\xF1]{2,25}$/;
						if(re.test(obj.value)==false) { alert("La información a buscar debe tener al menos 2 caracteres y deben ser solo letras."); obj.focus(); return false; }
					}
				break;
				case "entero":
					if(obj.value=="") { alert("Este campo no puede quedar vacío."); obj.focus(); return false; }
					else {
						re=/^[0-9]{1,5}$/;
						if(re.test(obj.value)==false) { alert("Este campo requiere un número entero."); obj.focus(); return false; }
					}
				break;
				case "oentero":
					if(obj.value=="") {}
					else {
						re=/^[0-9]{1,5}$/;
						if(re.test(obj.value)==false) { alert("Este campo requiere un número entero."); obj.focus(); return false; }
					}
				break;							
				case "decimal":
					if(obj.value=="") { alert("Este campo no puede quedar vacío."); obj.focus(); return false; }
					else {
						re=/^[0-9]{1,6}(\x2E|\x2C){0,1}[0-9]{0,2}$/;
						if(re.test(obj.value)==false) { alert("Este campo requiere un decimal con una precisión máxima de 2 dígitos."); obj.focus(); return false; }
					}
				break;
				case "odecimal":
					if(obj.value=="") {}
					else {
						re=/^[0-9]{1,6}(\x2E|\x2C){0,1}[0-9]{0,2}$/;
						if(re.test(obj.value)==false) { alert("Este campo requiere un decimal con una precisión máxima de 2 dígitos."); obj.focus(); return false; }
					}
				break;							
				case "fecha":
					if(obj.value=="") { alert("Este campo no puede quedar vacío."); obj.focus(); return false; }
					else {
						re=/^(\d{4})(\x2d)(0[1-9]|1[012])(\x2d)([012][1-9]|3[01]|10|20)$/;
						if(re.test(obj.value)==false) { alert("La fecha debe seguir el siguiente formato aaaa-mm-dd"); obj.focus(); return false; }
					}
				break;
				case "ofecha":
					if(obj.value=="") {}
					else {
						re=/^(\d{4})(\x2d)(0[1-9]|1[012])(\x2d)([012][1-9]|3[01]|10|20)$/;
						if(re.test(obj.value)==false) { alert("La fecha debe seguir el siguiente formato aaaa-mm-dd"); obj.focus(); return false; }
					}
				break;							
				case "usuario":
					if(obj.value=="") { alert("Este campo no puede quedar vacío."); obj.focus(); return false; }
					else {
						re=/^\b.{1,15}\b$/;
						if(re.test(obj.value)==false) { alert("El nombre de usuario debe tener mínimo 3 dígitos."); obj.focus(); return false; }
					}
				break;
				case "ousuario":
					if(obj.value=="") {}
					else {
						re=/^\b.{1,15}\b$/;
						if(re.test(obj.value)==false) { alert("El nombre de usuario debe tener mínimo 3 dígitos."); obj.focus(); return false; }
					}
				break;							
				case "si-no":
					if(obj.value=="") { alert("Este campo no puede quedar vacío."); obj.focus(); return false; }
					else {
						re=/^\b(SI|NO|si|no)\b$/;
						if(re.test(obj.value)==false) { alert("Este campo debe contener una respuesta del tipo SI o NO."); obj.focus(); return false; }
					}
				break;
				case "osi-no":
					if(obj.value=="") {}
					else {
						re=/^\b(SI|NO|si|no)\b$/;
						if(re.test(obj.value)==false) { alert("Este campo debe contener una respuesta del tipo SI o NO."); obj.focus(); return false; }
					}
				break;
				case "email":
					if(obj.value=="") { alert("Este campo no puede quedar vacío."); obj.focus(); return false; }
					else {
						re=/[\w-\.]{3,}@([\w-]{2,}\.)*([\w-]{2,}\.)[\w-]{2,4}/;
						if(re.test(obj.value)==false) { alert("El correo electrónico debe tener un formato adecuado."); obj.focus(); return false; }
					}
				break;
				case "oemail":
					if(obj.value=="") {}
					else {
						re=/[\w-\.]{3,}@([\w-]{2,}\.)*([\w-]{2,}\.)[\w-]{2,4}/;
						if(re.test(obj.value)==false) { alert("El correo electrónico debe tener un formato adecuado."); obj.focus(); return false; }
					}
				break;				
			}
	}
	return true;
}

function validarUnoLleno(args){
	alMenosUno=0;
	var objVacio;
	for(var i=0;i<args.length/2;i++)
	{
		obj=args[i*2];
		validate = args[(i*2)+1];
		var re = re= new RegExp();
			switch(validate)
			{
				case "contenidoAlternativo":
					if(obj.value=="") { if(objVacio==null){objVacio=obj;} }
					else {
						alMenosUno=1;
						//re=/^\b.{3,15}\b$/;
						//if(re.test(obj.value)==false) { alert("Este campo no puede contener símbolos especiales."); obj.focus(); return false; }
					}
				break;
			}
	}
	if(alMenosUno==1)
	{
		return true;
	}
	else
	{
		objVacio.focus();
		alert("Debe introducir al menos un campo.");
		return false
	}
}

function validarAlMenosUnChecked(args){
	checked=0;
	var objVacio;
	for(var i=0;i<args.length;i++)
	{
		obj=args[i];
		if(obj.checked==true) {
			checked=1; }
		else{
			if(objVacio==null){objVacio=obj;}
			}
	}
	if(checked>=1)
	{
		return true;
	}
	else
	{
		objVacio.focus();
		alert("Debe seleccionar al menos un criterio de filtrado.");
		return false;
	}
}
