(function () {
	var UrvalUI = {
		init:				function () {
								var fs, rb;
								if (fs = $("fs-urval")) {
									UrvalUI.addSelectButtons(fs);
								} else if (fs = $("fs-kommuner")) {
									UrvalUI.addCheckboxes(fs);
								} else if (fs = $("fs-period")) {
									UrvalUI.applyPeriodButtons(fs);
								} else if ($("fmtEpost")) {
									$("fmtEpost").onclick = UrvalUI.toggleFormat;
									UrvalUI.toggleFormat();
								}
							},

		addCheckboxes:		function (fs) {
								var btn;
								var h3 = fs.getElementsByTagName("h3");
								btn = $input({type: "button", value: "Markera alla", id: "markera-alla"});
								fs.insertBefore(btn, h3[0]);
								Core.Events.addListener(btn, "click", function (e) {UrvalUI.selectAll(e, "fs-kommuner", true)});
								btn = $input({type: "button", value: "Avmarkera alla", id: "avmarkera-alla"});
								fs.insertBefore(btn, h3[0]);
								Core.Events.addListener(btn, "click", function (e) {UrvalUI.selectAll(e, "fs-kommuner", false)});
								for (var i = 0, l = h3.length; i < l; ++i) {
									var cb = $input({type: "checkbox", id: "cbl"+i});
									var lbl = $label({htmlFor: "cbl"+i}, h3[i].firstChild);
									h3[i].appendChild(cb);
									h3[i].appendChild(lbl);
									Core.Events.addListener(cb, "click", UrvalUI.selectLan);
								}
							},

		addSelectButtons:	function (fs) {
								var btn;
								fs.appendChild($br());
								btn = fs.appendChild($input({type: "button", value: "Markera alla", id: "markera-alla"}));
								Core.Events.addListener(btn, "click", function (e) {UrvalUI.selectAll(e, "fs-urval", true)});
								btn = fs.appendChild($input({type: "button", value: "Avmarkera alla", id: "avmarkera-alla"}));
								Core.Events.addListener(btn, "click", function (e) {UrvalUI.selectAll(e, "fs-urval", false)});
							},

		applyPeriodButtons:	function (fs) {
								Core.Events.addListener("p-samtliga", "click", UrvalUI.togglePeriod);
								Core.Events.addListener("p-urval", "click", UrvalUI.togglePeriod);
								UrvalUI.togglePeriod();
							},

		selectAll:			function (e, fs, flag) {
								var inp = $(fs).getElementsByTagName("input");
								for (var i = 0, l = inp.length; i < l; ++i) {
									if (inp[i].type.toLowerCase() == "checkbox") inp[i].checked = flag;
								}
							},

		selectLan:			function (e) {
								var chk  = this.checked;
								for (var node = this.parentNode.nextSibling; node; node = node.nextSibling) {
									if (node.nodeType == 1) {
										if (node.nodeName.toLowerCase() == "input") {
											node.checked = chk;
										} else if (node.nodeName.toLowerCase() == "h3") {
											break;
										}
									}
								}
							},

		toggleFormat:		function () {
								var flag = !$("fmtEpost").checked;
								$("fmtEpostformat-excel").disabled = flag;
								$("fmtEpostformat-text").disabled  = flag;
							},

		togglePeriod:		function () {
								var noPeriod = $("p-samtliga").checked;
								$("p-from").disabled = noPeriod;
								$("p-tom").disabled  = noPeriod;
							}
	};
	
	Core.run(UrvalUI);
})();