// Comprueba que los campos esten rellenados y no sean espacios blancos
function haveWhites(cadena) {
	base = cadena.split(" ");
	base = base.join("");
	if (base.length == 0) return true;
	return false;
}

function checkEmail(emailStr) {
	if (emailStr.length == 0) return false;

	// Dividimos el email en tres partes basicas
	// Parte 1: Antes de la @
	// Parte 2: Entre la @ i el primer .
	// Parte 3: Desde el punto hasta el final

	var email = new Array();
	email = emailStr.split('@');
	var username = email[0];
	var domain = email[1];

	// Comprobamos que existe un posible dominio definido y un usuario
	if (email.length != 2 || domain.length < 3) return false;

	// Analizamos el dominio
	var firstPoint = domain.indexOf('.');
	var base = domain.substr(1,firstPoint);
	var extension = domain.substr(firstPoint+1,domain.length);

	// Comprobamos que la base del dominio y la extension tengan un minimo de caracteres
	if (base.length < 2 || extension.length < 2) return false;

	return true;
}


function validate_form(nameForm,aRequired,redirect,lang) {
	var myForm = document.getElementById(nameForm);
	var bHaveErrors = false;
	var aBadFields = new Array()
	var urlForm = redirect;
	if (lang == 'undefined') lang = 'es';

	/* Eliminamos posibles mensajes de advertencia, informacion o error */
  	removeMessage();

	/* Revisamos todos los elementos pasados por parametro */
	for (var i = 0; i < aRequired.length; i++) {
		var sNameField = aRequired[i];
		var oField = $(sNameField);
		if (oField) {
			if (haveWhites(oField.value)) {
				oField.style.border = '1px solid #f00';
				bHaveErrors = true;
				aBadFields.push(sNameField);
			} else {
				oField.style.border = '1px solid #7f9db9';
			}


			if (oField.type == 'textarea') {
				if (haveWhites(oField.value) || oField.value.length < 5 ) {
					oField.style.border = '1px solid #f00';
					bHaveErrors = true;
					aBadFields.push(sNameField);
				} else {
					oField.style.border = '1px solid #7f9db9';
				}
			}

			if (oField.type == 'select-one') {
			    var indice = oField.selectedIndex;
			    var valor = oField.options[indice].value;
				if (valor == '0') {
					oField.style.border = '1px solid #f00';
					bHaveErrors = true;
					aBadFields.push(sNameField);
				} else {
					oField.style.border = '1px solid #7f9db9';
				}
			}

			if (sNameField == 'email' || sNameField == 'correo') {
				if (!checkEmail(oField.value)) {
					oField.style.border = '1px solid #f00';
					bHaveErrors = true;
					aBadFields.push(sNameField);
				} else {
					oField.style.border = '1px solid #7f9db9';
				};
			}
		}
	}
	if (bHaveErrors) {
		$(aBadFields[0]).focus();
		replaceMessage('error',lang);
		return false;
	} else {
		replaceMessage('process',lang);
		myForm.action = urlForm;
		myForm.submit();
	}
	return;

}

function prepare_languages(sTag,sLanguages) {
	var languages = sLanguages.split(",");
	for (var i = 0; i < languages.length; i++) {
		languages[i] = sTag + languages[i];
	}
	return languages;
}