$(function() {

	$("input.switchButton").click(function() {
		var fieldset = $(this).next("fieldset");
		if (fieldset.hasClass("hidden")) {
			fieldset.removeClass("hidden");
			$(this).attr("value", "[klap in]");
			$(this).removeClass("collapsed");
		} else {
			fieldset.addClass("hidden");
			$(this).attr("value", "[klap uit]");
			$(this).addClass("collapsed");
		}
	});

	$("input.switchListItemButton, input.switchListButton").click(function(e, state) {
		var li = $(this).parent("li");

		/* swap hidden items */
		li.find("> p, > ul, > dl, > div").each(function() {
			switch(state) {
				case "show": $(this).removeClass("hidden"); break;
				case "hide": $(this).addClass("hidden"); break;
				default    : $(this).toggleClass("hidden")
			}
		});

		/* change button text */
		$(this).attr("value", function() {
			switch(state) {
				case "show": return "[klap in]"; break;
				case "hide": return "[klap uit]"; break;
				default    : return (li.find("ul, div, dl").hasClass("hidden")) ? "[klap uit]" : "[klap in]";
			}
		});

		/* change button appearance */
		$(this).attr("class", function() {
			switch(state) {
				case "show": $(this).removeClass("collapsed"); break;
				case "hide": $(this).addClass("collapsed"); break;
				default    : $(this).toggleClass("collapsed");
			}
		});

		var divs = $("div.zv_selection_list_categorized, div.zv_adres, div.zv_collectiviteiten, div.zv_collectiviteiten-uitgebreid, div.zv_waarkuntuterecht, div.zv_machtigingen-onderwerp");

	});


	$("input.hideallitems, input.hideallcoll, input.hideallcollext").click(function() {
		$(this).parents("div:first()").find("input.switchListItemButton, input.switchListButton").trigger("click",["hide"]);
	});

	$("input.showallitems, input.showallcoll, input.showallcollext").click(function() {
		$(this).parents("div:first()").find("input.switchListItemButton, input.switchListButton").trigger("click",["show"]);
	});

	var initialState = ($("div.wizard.emailservice.dekking input.selectall").length > 0) ? $("div.wizard.emailservice.dekking input.selectall").get(0).checked : false;

	$("div.keywords input:checkbox").each(function() {
		this.disabled = initialState;
	});

	$("div.wizard.emailservice.dekking input.selectall").click(function() {
		var state = this.checked;
		$("div.keywords input:checkbox").each(function() {
			this.disabled = state;
		});
	});


	var oldCanvasHeight = $("div#canvas").height();

	function showCheckedInput(context) {
		if ($(context).find("input:checked").length > 0) {
			var checkedInput = $(context).find("input:checked");
			var extraPadding = ($.isIE6) ? 10 : 5;

			checkedInput.parents("div:first").addClass("selected");
			context.scrollTop = checkedInput.offset().top - $(context).offset().top - extraPadding;
		}
	}

	$("dd.polis_container, dd.verzekeraar_container").each(function() {
		if ($(this).find("input").length > 0) {
			var h = ($.isIE6) ? 4 : 15;
			$(this).find("div:lt(6)").each(function() {
				h += parseInt($(this).height());
			});
			$(this).height(h).attr("h", h);
			showCheckedInput(this);
		} else {
			$(this).css("height","auto");
		}
	});

	$("dd.polis_container:has(input), dd.verzekeraar_container:has(input)").parent("dl").each(function() {
		$(this).after($("<button class='showall'>Toon alles</button>").toggle(function() {
			$(this).text("Toon minder").css("background-image","url('/frontend/assets/img/pijltje_dubbel_omhoog.gif')").prev("dl").find("dd.polis_container, dd.verzekeraar_container").animate({
				height: $(this).prev("dl").find("fieldset").height() + 20
			}, "slow");
		}, function() {
			$(this).text("Toon alles").css("background-image","url('/frontend/assets/img/pijltje_dubbel_neer.gif')").prev("dl").find("dd.polis_container, dd.verzekeraar_container").animate({
				height: $(this).prev("dl").find("dd.polis_container, dd.verzekeraar_container").attr("h")
			}, "slow", "", function() {
				showCheckedInput(this);
			});
		}));
	});

	$("dd.polis_container div").click(function() {
		$(this).parent().find("div.selected").removeClass("selected");
		$(this).addClass("selected");
	});

	$("fieldset.specifiek.hidden").hide();

	$("fieldset.dekkinggegevens input:radio, fieldset.welkeverzekeraars input:radio").click(function() {
		($(this).val() == "specific") ? $(this).parents("form").find("fieldset.specifiek").slideDown() : $(this).parents("form").find("fieldset.specifiek").slideUp();
	});

	$("div.coverage_search input.autocomplete").each(function() {
		var input = $(this);
		var config = $.microFormat(input.attr("class"));
		var path = config.url || document.location.pathname.substring(0, document.location.pathname.lastIndexOf("/") + 1) + "autocomplete.aspx";

		$(this).autocomplete(path, {
			extraParams: config.params || {},
			lineSeparator: config.lineseparator || ",",
			matchContains: config.matchcontains || 0,
			maxItemsToShow: config.maxitemstoshow || "10",
			minChars: config.minchars || "1",
			selectFirst: true,
			onItemSelect: function() {
				input.next("input").click();
			},
			width: 300
		});
	});

	$("fieldset.verzekeraar, fieldset.organisatie").hide();

	$("fieldset.welkeverzekeraars input:radio").click(function() {
		var v = $(this).parents("form").find("fieldset.verzekeraar");
		var o = $(this).parents("form").find("fieldset.organisatie");
		switch($(this).val()) {
			case "verzekeraar":
				o.hide();
				v.fadeIn();
				break;
			case "organisatie":
				v.hide();
				o.fadeIn();
				break;
			default:
				o.hide();
				v.hide();
		}
	});

	$("fieldset.welkeverzekeraars input:radio:checked").trigger("click");

	if ($("table:visible.servicescores").length > 0) {
		$("table.servicescores").tablesorter({
			sortList: [[1,1]]
		}).bind("sortEnd", function() {
			$(this).find("input:checked").removeAttr("checked");
			$("tr.current").prevAll("tr").find("input:checkbox").attr("checked","checked");
		});
	}

	$("fieldset.kostensoorten > *:not(legend)").hide();

	$("fieldset.kostensoorten legend").wrapInner("<label for='costtypebutton' id='costtypelabel'></label>").append($("<button id='costtypebutton'>toon</button>").toggle(function() {
		$(this).parents("fieldset.kostensoorten").find("> *:not(legend)").show();
		$(this).text("verberg").css("background-image","url(/frontend/assets/img/pijltje_dubbel_omhoog.gif)");
	}, function() {
		$(this).parents("fieldset.kostensoorten").find("> *:not(legend)").hide();
		$(this).text("toon").css("background-image","url(/frontend/assets/img/pijltje_dubbel_neer.gif)");
	})).parent().wrap($("<div id='ks_container'></div>"));

	$("div.wizard_content select").click(function() {
		$(this).change(function() {
			$(this).next("input").trigger("click");
		});
	}).blur(function() {
		$(this).change(function() {
			return true;
		});
	}).keydown(function(e) {
		if(e.which == 13) {
			$(this).next("input").trigger("click");
		}
	});

	$("fieldset.sliders div.update").hide();
	$("fieldset.sliders").prepend($("<div id='scale'><ul><li id='base'>alleen basispakket</li><li id='low'>laagste dekking</li><li id='high'>hoogste dekking</li></ul></div>"));

	$("div.zvz_resultgrid input:checkbox, fieldset.vergelijkmet2009polis input:checkbox").click(function(e) {
		var c = $("div.zvz_resultgrid input:checked, fieldset.vergelijkmet2009polis input:checked").length;
		if (c > 2) {
			$("div.zvz_resultgrid input:checkbox:not(:checked), fieldset.vergelijkmet2009polis input:checkbox:not(:checked)").attr("disabled","disabled");
		} else {
			$("div.zvz_resultgrid input:checkbox:not(:checked), fieldset.vergelijkmet2009polis input:checkbox:not(:checked)").removeAttr("disabled");
		}
	});

	if (document.location.hash) {
		$("div.zv_servicescores-overzicht a[href='" + document.location.hash + "']").click();
	};


});

function updateScore(data) {
	setTimeout(function() {
		if (data.value == $(data.elem).val()) {
			var map = [];
			var ctrlid = data.elem.id.substring(data.elem.id.lastIndexOf("_") + 1);

			$("fieldset.sliders select").each(function(index, obj) {
				map.push('{"Key":' + obj.id.substring(obj.id.lastIndexOf("_") + 1) + ',"Value":' + $(obj).val() + '}');
			});

			var url = '/zorgverzekeringen/services/service.svc/CheapestPolis?categoryvalues=[' + map + ']';

			$.getJSON(url, function(data) {
				var d = $("div.score dd");
				var n = ("" + data.d).replace(/\./,",");
				if (n != 0) {
					if (d.html() != n) {
						d.html("&euro;" + n).seekAttention({
							color: "#e40308",
							container: d.parents("dl"),
							opacity: 0.2,
							paddingBottom: 2,
							paddingLeft: 4,
							paddingRight: 4,
							pulse: false
						});
					}
				} else {
					d.html("geen");
				}
			});
		}
	}, 100)

}

