if(typeof bequadrat=="undefined") var bequadrat={};

bequadrat.form={
	init: function() {
		$("#form :input").filter(":first").focus();
		$("#form .error:input").blur(function() {
			$(this).removeClass("error");
		});
		if($("#form .tab").length>0) {
			var tabs=$("<nav />").attr("id","form-tabs");
			tabsList=$("<ul />").appendTo(tabs);
			$("#form .tab").each(function(i,el) {
				$("<li />").attr("rel","tab-"+(i+1)).html($(el).children("legend:first").html()).appendTo(tabsList).addClass("disabled");
			}).filter(":first").addClass("active");
			tabs.prependTo($("#form-footer"));
			tabs.find("li:first").addClass("active").removeClass("disabled");
			$("#form").addClass("tabs");
			tabsList.find("li").each(function(i,el) {
				$(el).click(function() {
					if($(el).hasClass("disabled")) return;
					$("#form-tabs li").removeClass("active");
					$(el).addClass("active");
					$("#form-wrapper").animate({ 
						scrollLeft: $("#form fieldset.tab:first").width()*i
					}, {
						complete: function() {
							$("#form").animate({
								height: $("#form fieldset.tab:nth-child("+(i+1)+")").height()
							});
							$("#form fieldset.tab:nth-child("+(i+1)+") :input.error:first").focus();
							$("#form fieldset.tab").removeClass("active").filter(":nth-child("+(i+1)+")").addClass("active").find(":input:first").focus();
						}
					});
				}.bind(this));
			}.bind(this));
			$("#form .tab").each(function(x,el) {
				if($(el).attr("id")==$("#form :input.error").filter(":first").parents("fieldset").attr("id")) {
					$("#form-tabs li:nth-child("+(x+1)+")").click();
					$("#form :input.error").filter(":first").focus();
					this.autoTabSwitch=false;
				}
			}).bind(this);
			$("#form :input").change(function(e) {
				this.validateTab($(e.currentTarget).parents("fieldset.active").attr("id"));
			}.bind(this)).focus(function(e) {
				if(!$(e.currentTarget).parents("fieldset").hasClass("active")) {
					if($("#form-tabs li[rel=\""+$(e.currentTarget).parents("fieldset").attr("id")+"\"]").hasClass("disabled")) {
						$("#form-tabs li.active").click();
						return false;
					} else {
						$("#form-tabs li[rel=\""+$(e.currentTarget).parents("fieldset").attr("id")+"\"]").click();
					}
				}
			}.bind(this));
		}
	},
	validateTab: function(tab) {
		if(typeof tab=="undefined") return;
		var errors=0;
		$("#"+tab+" :input[required]").each(function() {
			if($(this).attr("type")=="checkbox") {
				if($(this).is(":not(:checked)")) errors++;
			} else {
				if($.trim($(this).val())=="") errors++;
			}
		});
		if(errors==0 && this.autoTabSwitch) {
			this.autoTabSwitch=false;
			if($("#form .tab:last").attr("id")>tab) $("#form-tabs li.active + li").removeClass("disabled").click();
		}
	},
	autoTabSwitch: true
}

$(document).ready(function() {
	bequadrat.form.init();
});
