function init() {
	var postnr = document.getElementById('postnr');
	
	if (postnr) {
		postnr.vis_poststed = function() {
			if (this.search_request.readyState == 4 && this.search_request.status == 200) {
				var xml = this.search_request.responseXML;
				var poststed = document.getElementById('poststed');
				if (xml.getElementsByTagName('poststed').item(0).firstChild) {
					var verdi = xml.getElementsByTagName('poststed').item(0).firstChild.nodeValue;
				} else {
					var verdi = '';
				}

				poststed.innerHTML = verdi;
			}
		};
		
		postnr.onkeyup = function() {
			if (this.value.length == 4 && this.getAttribute('default') != this.value) {
				var request_data = 'hva=poststed&postnr='+escape(this.value);
				if (this.search_request) this.search_request.abort();
				this.search_request = null;
				if (window.XMLHttpRequest) {
					this.search_request = new XMLHttpRequest();
					this.search_request.onreadystatechange = this.vis_poststed.bind(this);
					this.search_request.open("GET", '/xmlrpc.php?'+request_data, true);
					if (this.search_request.setRequestHeader) { // Opera does not support this yet
						this.search_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
					}
					this.search_request.send(null);
				} else if (window.ActiveXObject) {
					this.search_request = new ActiveXObject("Microsoft.XMLHTTP");
					if (this.search_request) {
						this.search_request.onreadystatechange = this.vis_poststed.bind(this);
						this.search_request.open("GET", '/xmlrpc.php?'+request_data, true);
						if (this.search_request.setRequestHeader) { // Opera does not support this yet
							this.search_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
						}
						this.search_request.send();
					}
				}
			} else {
				document.getElementById('poststed').innerHTML = '';
			}
		};		
	}
	
	var velg_alle = document.getElementById('velg_alle');
	if (velg_alle) {
		velg_alle.onclick = function() {
			var table = zCore.DOM.getParentWithTagName(this, 'table');
			var tbodies = table.getElementsByTagName('tbody');
			
			for (var bi = 0; tbody = tbodies[bi]; bi++) {
				var rows = tbody.getElementsByTagName('tr');
				
				for (var ri = 0; row = rows[ri]; ri++) {
					var input = row.getElementsByTagName('input').item(0);
					
					if (row.style.display != 'none') {
						input.checked = this.checked;
					}
				}
			}
		};
	}
	
	var filter = document.getElementById('pmeldt_filter');
	if (filter) {
		filter.onchange = function() {
			var paameldinger = document.getElementById('pmeldinger').getElementsByTagName('tbody').item(0).getElementsByTagName('tr');

			for (var pi = 0; pi < paameldinger.length; pi++) {
				if (!paameldinger[pi]) continue;
				
				var betalt = paameldinger[pi].getElementsByTagName('td').item(0).getElementsByTagName('input').item(0);

				switch (this.options[this.selectedIndex].value) {
					case '0':
						paameldinger[pi].style.display = '';
						paameldinger[pi].disabled = false;
						break;
					case '1':
						if (betalt.checked) {
							paameldinger[pi].style.display = '';
							paameldinger[pi].disabled = false;
						} else {
							paameldinger[pi].style.display = 'none';
							paameldinger[pi].disabled = true;
						}
						break;
					case '2':
						if (betalt.checked) {
							paameldinger[pi].style.display = 'none';
							paameldinger[pi].disabled = true;
						} else {
							paameldinger[pi].style.display = '';
							paameldinger[pi].disabled = false;
						}
						break;
				}
			}

			if (document.getElementById('pmeldinger').className.indexOf('highlight') != -1) {
				zCore.Tables.Highlighter.draw(document.getElementById('pmeldinger'));
			}
		};
	}
	
	var adm_velg_seksjon = zCore.DOM.getElementsBySelector('select.velg-seksjon');
	if (adm_velg_seksjon.length > 0) {
		for (var vsi = 0; vsi < adm_velg_seksjon.length; vsi++) {
			adm_velg_seksjon[vsi].onchange = function() {
				if (this.options[this.selectedIndex].value != '-1') {
					document.location = this.options[this.selectedIndex].value;
				}
			};
		}
		
		if (adm_velg_seksjon.length == 1) {
			var seksjoner = adm_velg_seksjon[0].getElementsByTagName('option');
			for (var si = 0; si < seksjoner.length; si++) {
				var re = new RegExp('^'+seksjoner[si].value);
				if (re.exec(document.location)) {
					seksjoner[si].selected = true;
					break;
				}
			}
		}
	}
	
	var adm_velg_gruppe = document.getElementById('hovedgrupper');
	if (adm_velg_gruppe) {
		adm_velg_gruppe.onchange = function() {
			var valgt_gruppe = this.options[this.options.selectedIndex].value;

			var velg_undergruppe = document.getElementById('undergrupper');
			var viste_grupper = velg_undergruppe.getElementsByTagName('option');
			for (var ui = viste_grupper.length - 1; ui >= 0; ui--) {
				velg_undergruppe.removeChild(viste_grupper[ui]);
			}
			
			for (var ui = 0; ui < undergrupper[valgt_gruppe].length; ui++) {
				var g = document.createElement('option');
				g.value = undergrupper[valgt_gruppe][ui].id;
				g.appendChild(document.createTextNode(undergrupper[valgt_gruppe][ui].navn));
				
				velg_undergruppe.appendChild(g);
			}
		};
	}

	var startdato_kal = document.getElementById('startdato-kalender');
	if (startdato_kal) {
		var cal1 = new zCore.Calendar(startdato_kal, $('startdato'));
		cal1.setMinDate(new Date());
		cal1.render();
	}
	
	var sluttdato_kal = document.getElementById('sluttdato-kalender');
	if (sluttdato_kal) {
		var cal2 = new zCore.Calendar(sluttdato_kal, $('sluttdato'));
		cal2.setMinDate(new Date());
		cal2.render();
	}
	
	var frist_kal = document.getElementById('frist-kalender');
	if (frist_kal) {
		var cal3 = new zCore.Calendar(frist_kal, $('pmeldingsfrist'));
		cal3.setMinDate(new Date());
		cal3.render();
	}
	
	var velg_startdato = $('velg-startdato');
	if (velg_startdato) {
		velg_startdato.onclick = function() {
			if (startdato_kal.style.display == 'table') {
				startdato_kal.style.display = 'none';
			} else {
				startdato_kal.style.display = 'table';
			}
		};
	}

	var velg_sluttdato = $('velg-sluttdato');
	if (velg_sluttdato) {
		velg_sluttdato.onclick = function() {
			if (sluttdato_kal.style.display == 'table') {
				sluttdato_kal.style.display = 'none';
			} else {
				sluttdato_kal.style.display = 'table';
			}
		};
	}

	var velg_frist = $('velg-frist');
	if (velg_frist) {
		velg_frist.onclick = function() {
			if (frist_kal.style.display == 'table') {
				frist_kal.style.display = 'none';
			} else {
				frist_kal.style.display = 'table';
			}
		};
	}
	
	var avgift = $('pmeldingsavgift');
	if (avgift) {
		$('har_avgift').onclick = function() {
			avgift.disabled = !$('har_avgift').checked;
		}
		
		$('har_avgift').onclick();
	}
}

function init_form () {
	var forms = document.getElementsByTagName('form');
	for (var fi = 0; fi < forms.length; fi++) {
		var labels = forms[fi].getElementsByTagName('label');
		for (var li = 0; li < labels.length; li++) {
			if (li % 2 != 0) labels[li].className += ' odd';
			
			zCore.Events.addEventListener(labels[li], 'click', function(e) {
				var t = zCore.Events.getEventTarget((e ? e : window.event));
				if (t.nodeName.match(/^a$/i) || t.nodeName.match(/input/i)) return;
				
				var inputs = this.getElementsByTagName('input');
				if (inputs && inputs.length > 0) inputs.item(0).focus();
				else {
					var textarea = this.getElementsByTagName('textarea');
					if (textarea && textarea.length > 0) textarea.item(0).focus();
				}
			}.bind(labels[li]), false);
		}
		
		var inputs = forms[fi].getElementsByTagName('input');
		for (var ii = 0; ii < inputs.length; ii++) {
			var input = inputs[ii];
			
			if (input.value == '' && input.getAttribute('default')) {
				input.style.color = '#bbb';
				input.value = input.getAttribute('default');
			} else if (input.getAttribute('default') && input.value == input.getAttribute('default')) {
				input._touched = true;
			}
			zCore.Events.addEventListener(input, 'focus', function() {
				if (this.value == this.getAttribute('default') && !this._touched) {
					this.value = '';
					this.style.color = '#000';
				}
				
				this.parentNode.className += ' focus';
				
				if (this.parentNode.className.match(/\binvalid\b/)) {
					var tips = this.nextSibling;
					if (tips && tips.nodeName.match(/span/i)) {
						if (tips.filters) {
							tips.filters.item("DXImageTransform.Microsoft.Alpha").opacity = 0;
						} else {
							tips.style.opacity = '0';
						}
						tips.style.display = 'block';
						tips.fadeTimer = setTimeout(fadeIn.bind(tips), 500);
					}
				}
			}.bind(input), false);
			zCore.Events.addEventListener(input, 'blur', function() {
				if (this.value == '' && input.getAttribute('default')) {
					this.value = this.getAttribute('default');
					this.style.color = '#bbb';
					this._touched = false;
				}
				
				this.parentNode.className = this.parentNode.className.replace(/ ?focus/, '');
				
				var tips = this.nextSibling;
				if (tips && tips.nodeName.match(/span/i)) {
					clearTimeout(tips.fadeTimer);
					if (tips.filters) {
						tips.filters.item("DXImageTransform.Microsoft.Alpha").opacity = 0;
					} else {
						tips.style.opacity = '0';
					}
					tips.style.display = 'none';
				}

				var form = zCore.DOM.getParentWithTagName(this, 'form');
				if (form.validator) toggleSubmit(form.validator.process(false));
			}.bind(input), false);
			zCore.Events.addEventListener(input, 'keyup', function(input) {
				if (input.getAttribute('default')) {
					input._touched = true;
				}
				
				if (this.validator) {
					toggleSubmit(this.validator.process(false));
				}
			}.bind(forms[fi], input), false);
		}
		
		var selects = forms[fi].getElementsByTagName('select');
		for (var si = 0; si < selects.length; si++) {
			var select = selects[si];
			
			zCore.Events.addEventListener(select, 'change', function (select) {
				if (this.validator) toggleSubmit(this.validator.process(false));
			}.bind(forms[fi], select), false);
		}
		
		var textareas = forms[fi].getElementsByTagName('textarea');
		for (var ti = 0; ti < textareas.length; ti++) {
			var textarea = textareas[ti];
			
			zCore.Events.addEventListener(textarea, 'focus', function() {
				this.parentNode.className += ' focus';
			}.bind(textarea), false);
			
			zCore.Events.addEventListener(textarea, 'blur', function() {
				this.parentNode.className = this.parentNode.className.replace(/ ?focus/, '');
			}.bind(textarea), false);
		}
		
		zCore.Events.addEventListener(forms[fi], 'submit', function() {
			var inputs = this.getElementsByTagName('input');
			for (var ii = 0; input = inputs[ii]; ii++) {
				if (input.getAttribute('default') && (input.value == input.getAttribute('default')) && !input._touched) {
					input.value = '';
				}
			}
		}, false);
		
		toggleSubmit(false);
	}
};

var active_illustration = undefined;
function init_bildevelger() {
	var bildevelgere = $('regdeg-bilder', 'arrang¿r-bilder');
	
	for (var bi = 0; bi < bildevelgere.length; bi++) {
		if (!bildevelgere[bi]) continue;
		var lis = bildevelgere[bi].getElementsByTagName('li');
		
		for (var lii = 0; lii < lis.length; lii++) {
			if (lis[lii].getElementsByTagName('input').length == 1) {
				lis[lii].onclick = function() {
					var radio = this.getElementsByTagName('input').item(0);
					
					if (radio && radio.type == 'radio') {
						radio.checked = true;
						this.className += 'valgt';
						
						if (active_illustration) {
							var prev_radio = active_illustration.getElementsByTagName('input').item(0);
							prev_radio.checked = false;
							active_illustration.className = active_illustration.className.replace(/ ?valgt/, '');
						}
						
						active_illustration = this;
						
						var img = this.getElementsByTagName('img').item(0);
						$('illustrasjon').src = img.src;
					}
				};
				
				lis[lii].onmouseover = function() {
					if (!this.className.match(/valgt/)) {
						this.className += ' hover';
					}
				};
				
				lis[lii].onmouseout = function() {
					this.className = this.className.replace(/ ?hover/, '');
				};
				
				if (lis[lii].className.match(/valgt/)) lis[lii].onclick.bind(lis[lii])();
			}
		}
	}
};

function toggleSubmit(enabled) {
	var knp_sendinn = document.getElementById('send_inn');
	
	if (knp_sendinn) {
		if (enabled) {
			knp_sendinn.disabled = false;
			knp_sendinn.className = knp_sendinn.className.replace('inactive', 'active');
		} else {
			knp_sendinn.disabled = true;
			knp_sendinn.classNamec = knp_sendinn.className.replace('active', 'inactive');
		}
	}
}

function fadeIn () {
	if (this.style.display == 'none') this.style.display = 'block';
	
	clearTimeout(this.fadeTimer);
	var op = 0;
	if (parseFloat(this.style.opacity) >= 0.9) {
		op = 0.9999; // work-around for Firefox 'flash on complete'
	} else {
		op = parseFloat(this.style.opacity) + 0.1;
	}
	if (this.filters) { // IE-way
		this.filters.item("DXImageTransform.Microsoft.Alpha").opacity = (op * 100);
	} else {
		this.style.opacity = op;
	}
	
	if (parseFloat(this.style.opacity) < 0.9999) {
		this.fadeTimer = setTimeout(fadeIn.bind(this), 50);
	}
}

zCore.Events.addEventListener(window, 'load', init_form, false);
zCore.Events.addEventListener(window, 'load', init_bildevelger, false);
zCore.Events.addEventListener(window, 'load', init, false);