(function($) {
	$(document).bind("initTrule", function() {
		// Atalho para os validadores
		var _valid = $.fn.trule.validators;
		
		// Define configurações globais
		$().trule({
			messages: window.messages,
			firstErro: function(r) {
				r.oRef.focus();
			},
			error: function(r, msg) {
				$(r.oRef)
					.addClass("classeDeErroNoCampo")
                    .removeClass("classeDeSucessoNoCampo")
					
				$("#"+r.oRef.getAttribute("name")+"_BoxError")
					.show()
					.addClass("classeDeErroNaMensagem")
                    .removeClass("classeDeSucessoNaMensagem")
					.text(msg);
			},
			success: function(r, msg) {
				$(r.oRef)
					.addClass("classeDeSucessoNoCampo")
                    .removeClass("classeDeErroNoCampo")
					
				$("#"+r.oRef.getAttribute("name")+"_BoxError")
					.show()
                    .addClass("classeDeSucessoNaMensagem")
                    .removeClass("classeDeErroNaMensagem")
					.text("");
			}
		});
		
		if (location.href.indexOf("admin.pagina") !== -1 || location.href.indexOf("admin.paginarestrita") !== -1) {
			$("#form_texto").trule().addRule({
				name: "conteudoRequired",
				event: "submit",
				rule: function(r) {
					var formParent = $(this).parents().filter(function() { return $(this).is("form"); }),
						radio = formParent.find(":radio[@name=tipo]:checked");
					if (radio.val() == 1) {
						if (!_valid.required($(this).val()))
							return r.firesError("required", {fieldname: r.showAs});
					}
					return r.firesSuccess();
				}
			});
			
			$("#form_link").trule().addRule({
				name: "urlRequired",
				event: "submit",
				rule: function(r) {
					var formParent = $(this).parents().filter(function() { return $(this).is("form"); }),
						radio = formParent.find(":radio[@name=tipo]:checked");
					if (radio.val() == 3) {
						if (!_valid.required($(this).val()))
							return r.firesError("required", {fieldname: r.showAs});
					}
					return r.firesSuccess();
				}
			});
		}
		
		// Adiciona handles de evento ao submit dos formulários
		$("form").bind("submit", function(event) {
			if (!$(this).trule().validateAll())
				event.preventDefault();
		});
	});
})(jQuery);
