var campos_validar = "|";
var campos_validar_array = new Array();

function validar(obj) {

	var textoError = "Llene los siguientes campos correctamente:\n\n";
	var f = obj;
	var campo;
	var opciones = new Array();
	var inputs = "|text|textarea|radio|checkbox|select-one|file|";

	var tipoValidacion = "";
	
	var temp,i,q;
	
	var nombre_clase;

	campos_validar = "|";
	campos_validar_array = new Array();

	for(i=0; i < f.elements.length; i++){
		
		campo = f.elements[i];

		if(inputs.indexOf('|'+campo.type+'|') != -1){
			
			nombre_clase = campo.className.split(" ");
			
			if(nombre_clase[0] == "required"){
				
				if(nombre_clase.length > 1){
					tipoValidacion = nombre_clase[1];
				}else{
					tipoValidacion = "";
				}
				
				switch(campo.type){
					
					case "text":
					
						if(!validarCampo(campo,tipoValidacion)){
							return false;
						}
						break;
						
					case "textarea":
					
						if(!validarCampo(campo,tipoValidacion)){
							return false;
						}
						break;

					case "radio":
					
						validarCampoCheck(campo,tipoValidacion);
						break;
						
					case "checkbox":
					
						validarCampoCheck(campo,tipoValidacion);
						break;
						
					case "select-one":
					
						if(!validarCampoSelect(campo,tipoValidacion)){
							return false;
						}
						break;
					
					case "file":
					
						if(!validarCampo(campo,tipoValidacion)){
							return false;
						}
						break;
				}
			}
		}
	}

	if(campos_validar != "|"){

		temp = campos_validar.split('|');
		
		for(i = 0; i < temp.length; i++){
			if(temp[i] != ""){
				if(campos_validar_array[temp[i]]['valido'] < 1){
					alert("Campo requerido.\n");
					q = document.getElementById(campos_validar_array[temp[i]]['id']);
					q.parentNode.parentNode.style.background = "#E9D7D6";
					q.focus();
					return false;
				}
			}
		}
	}

    return true;
}

function validarCampo(campo,tipo){
	
	switch(tipo){
		
		case "mail":
		
			if((campo.value.indexOf(".") == -1) || (campo.value.indexOf("@") == -1)) {
				alert("Campo requerido. (e-mail)\n");
				campo.style.background = "#E9D7D6";
				campo.focus();
				return false;
			}
			
			break;
			
		case "numeric":
		
			var error = false;
			var strChars = "0123456789.- ";
			
			for(j = 0; j < campo.value.length; j++) {
				strChar = campo.value.charAt(j);
				if (strChars.indexOf(strChar) == -1) {
					error = true;
				}
			}
			
			if(error || campo.value.length == 0){
				alert("Campo requerido. (numérico)\n");
				campo.style.background = "#E9D7D6";
				campo.focus();
				return false;
			}
			
			break;
			
		default:
		
			if(campo.value == "") {
				alert("Campo requerido.\n");
				campo.style.background = "#E9D7D6";
				campo.focus();
				return false;
			}
			
			break;
	}
	
	return true;
}

function validarCampoSelect(campo,tipo){
	
	if(campo.value == "") {
		alert("Campo requerido.\n");
		campo.style.background = "#E9D7D6";
		campo.focus();
		return false;
	}
	
	return true;
}

function validarCampoCheck(campo,tipo){

	if(campos_validar.indexOf('|'+campo.name+'|') == -1){
		campos_validar += campo.name+'|';
		campos_validar_array[campo.name] = new Array();
		campos_validar_array[campo.name]['valido'] = 0;
		campos_validar_array[campo.name]['id'] = campo.id;
	}
	
	if(campo.checked){
		campos_validar_array[campo.name]['valido'] = 1;
	}
}
