/* funciones para la validación por AJAX */

function validateField(field) {
	var form = field.form;
	if (form.id == "articleWriterForm" || form.id == "updateArticleForm") {
		validateArticleWriterField(field);
	} else if (form.id == "commentForm") {
		validateCommentField(field);
	} else if (form.id == "emailShareForm") {
		validateEmailShareField(field);
	} else if (form.id == "feedbackForm") {
		validateFeedbackField(field);
	} else if (form.id == "forgottenPasswordForm") {
		validateForgottenPasswordField(field);
	} else if (form.id == "invitationForm") {
		validateInvitationField(field);
	} else if (form.id == "loginForm") {
		validateLoginField(field);
	} else if (form.id == "createPollForm" || form.id == "updatePollForm") {
		validatePollField(field);
	} else if (form.id == "rssBlogForm") {
		validateRssBlogField(field);
	} else if (form.id == "taglineForm") {
		validateTaglineField(field);
	} else if (form.id == "updateDataForm") {
		validateUpdateDataField(field);
	} else if (form.id == "updateForgottenPasswordForm") {
		validateUpdateForgottenPasswordField(field);
	} else if (form.id == "updatePasswordForm") {
		validateUpdatePasswordField(field);
	} else if (form.id == "urlUploadForm") {
		validateUrlUploadField(field);
	} else if (form.id == "userRegisterForm") {
		validateUserRegisterField(field);
	}		
}

function validateArticleWriterField(field) {
	var form = field.form;
	var container = form.parentNode;
	ArticleWriterValidator.getMessage(field.name, field.value, {
    	callback:function(error) {
        	setFieldError(container.id, field.id, error);
      	}
	});
}

function validateCommentField(field) {
	var form = field.form;
	var container = form.parentNode;
	CommentValidator.getMessage(field.name, field.value, {
    	callback:function(error) {
        	setFieldError(container.id, field.id, error);
      	}
	});
}

function validateEmailShareField(field) {
	var form = field.form;
	var container = form.parentNode;
	EmailShareValidator.getMessage(field.name, field.value, {
    	callback:function(error) {
        	setFieldError(container.id, field.id, error);
      	}
	});
}

function validateFeedbackField(field) {
	var form = field.form;
	var container = form.parentNode;
	FeedbackValidator.getMessage(field.name, field.value, {
    	callback:function(error) {
        	setFieldError(container.id, field.id, error);
      	}
	});
}

function validateForgottenPasswordField(field) {
	var form = field.form;
	var container = form.parentNode;
	ForgottenPasswordValidator.getMessage(field.name, field.value, {
    	callback:function(error) {
        	setFieldError(container.id, field.id, error);
      	}
	});
}

function validateInvitationField(field) {
	var form = field.form;
	var container = form.parentNode;
	InvitationValidator.getMessage(field.name, field.value, {
    	callback:function(error) {
        	setFieldError(container.id, field.id, error);
      	}
	});
}

function validateLoginField(field) {
	var form = field.form;
	var container = form.parentNode;
	LoginValidator.getMessage(field.name, field.value, {
    	callback:function(error) {
        	setFieldError(container.id, field.id, error);
      	}
	});
}

function validatePollField(field) {
	var form = field.form;
	var container = form.parentNode;
	PollValidator.getMessage(field.name, field.value, {
    	callback:function(error) {
        	setFieldError(container.id, field.id, error);
      	}
	});
}

function validateRssBlogField(field) {
	var form = field.form;
	var container = form.parentNode;
	RssBlogValidator.getMessage(field.name, field.value, {
    	callback:function(error) {
        	setFieldError(container.id, field.id, error);
      	}
	});
}

function validateTaglineField(field) {
	var form = field.form;
	var container = form.parentNode;
	TaglineValidator.getMessage(field.name, field.value, {
    	callback:function(error) {
        	setFieldError(container.id, field.id, error);
      	}
	});
}

function validateUpdateDataField(field) {
	var form = field.form;
	var container = form.parentNode;
	UpdateDataValidator.getMessage(field.name, field.value, {
    	callback:function(error) {
        	setFieldError(container.id, field.id, error);
      	}
	});
}

function validateUpdateForgottenPasswordField(field) {
	var form = field.form;
	var container = form.parentNode;
	UpdateForgottenPasswordValidator.getMessage(field.name, field.value, {
    	callback:function(error) {
        	setFieldError(container.id, field.id, error);
      	}
	});
}

function validateUpdatePasswordField(field) {
	var form = field.form;
	var container = form.parentNode;
	UpdatePasswordValidator.getMessage(field.name, field.value, {
    	callback:function(error) {
        	setFieldError(container.id, field.id, error);
      	}
	});
}

function validateUrlUploadField(field) {
	var form = field.form;
	var container = form.parentNode;
	UrlUploadValidator.getMessage(field.name, field.value, {
    	callback:function(error) {
        	setFieldError(container.id, field.id, error);
      	}
	});
}

function validateUserRegisterField(field) {
	var form = field.form;
	var container = form.parentNode;
	UserRegisterValidator.getMessage(field.name, field.value, {
    	callback:function(error) {
        	setFieldError(container.id, field.id, error);
      	}
	});
}

/* otras funciones para la validación por AJAX */

function validatePassword(confirmPassword) {
	var form = confirmPassword.form;
	var container = form.parentNode;
	var password = form["password"];
	if (password.value != "") {
		if (confirmPassword.value != password.value) {
			setFieldError(container.id, "confirmPassword", translate('Las contraseñas especificadas no coinciden'));
		} else {
			setFieldError(container.id, "confirmPassword", "");
		}
	} else {
		validateField(confirmPassword);
	}
}

function validateOption(option) {
	var form = option.form;
	var container = form.parentNode;
	var duplicated = false;
	$("#" + container.id).find("input[name^='option']").each(function() {
		var id_i = $(this).attr("id");
		var option_i = $(this).val();
		$("#" + container.id).find("input[name^='option']").each(function() {
			var id_j = $(this).attr("id");
			var option_j = $(this).val();
			if (id_i != id_j && option_i.toLowerCase() == option_j.toLowerCase()) {
				setFieldError(container.id, "optionsErrors", translate("Las opciones no pueden ser iguales"));
				duplicated = true;
				return false;
			}
		});
		if (duplicated) {
			return false;
		}
	});
	if (!duplicated) {
		setFieldError(container.id, "optionsErrors", "");
	}
}

