(function () {
	var StatUI = {
		init:				function () {
								var btn, fs;
								if (fs = $("fs-urval")) {
									StatUI.addSelectButtons(fs);
								} else if (fs = $("fs-kommuner")) {
									StatUI.addCheckboxes(fs);
								} else if (fs = $("fs-regfam")) {
									StatUI.addRegFamLinks(fs);
								}
							},

		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) {StatUI.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) {StatUI.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", StatUI.selectLan);
								}
							},

		addRegFamLinks:		function (fs) {
								Core.Element.setStyle(fs, {position: "relative"});
								var cb = fs.getElementsByTagName("input");
								for (var i =0, l = cb.length; i < l; ++i) {
									if (cb[i].type.toLowerCase() == "checkbox") {
										for (var node = cb[i].nextSibling; node; node = node.nextSibling) {
											if (node.nodeName && node.nodeName.toLowerCase() == "label") {
												var a = $a({href: "#"}, "visa");
												node.appendChild(a);
												Core.Events.addListener(a, "click", (function (code) {
														return function (e) {
															StatUI.showRegion(code);
															Core.Events.stop(e);
														}
													})(cb[i].value));
												break;
											}
										}
									}
								}
							},

		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) {StatUI.selectAll(e, "fs-urval", true)});
								btn = fs.appendChild($input({type: "button", value: "Avmarkera alla", id: "avmarkera-alla"}));
								Core.Events.addListener(btn, "click", function (e) {StatUI.selectAll(e, "fs-urval", false)});
							},
				
		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;
										}
									}
								}
							},

		showKommuner:		function (request) {
								var fs = $("fs-regfam");
								var div = $div({id: "popup"});
								div.innerHTML = request.responseText;
								var a = $a({href: "#"}, "Stäng");
								div.insertBefore($p(a), div.firstChild);
								Core.Events.addListener(a, "click", function (e) {
										Core.Element.remove("popup");
										Core.Events.stop(e);
									});
								fs.appendChild(div);
							},

		showRegion:			function (code) {
								var url = window.location.href.replace(/[^\/]+$/, "regfam.asp?code=" + code);
								var request = new Core.Ajax(url, {method: "get", onComplete: StatUI.showKommuner});
							}
	};
	
	Core.run(StatUI);
})();