$j = jQuery.noConflict();

//Externally called functions
// PRINT the output
function printOutput() {
	var outPut = document.getElementById('output').innerHTML;
	var outStart = '<html><style type="text/css">body {font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; line-height: 1.35;} a {display: none;}</style><div><img src="~/media/905BDF6F7301489DB9F4E2AD459D08A9.ashx" style="margin-bottom: 20px;">></head><body>';
	var outEnd = '</div></body></html>';

	var printer = window.open('', '', 'width=300,height=300');
	printer.document.write(outStart + outPut + outEnd);
	printer.print();
	printer.document.close();
	printer.window.close();
	//
}

function showSection(el) {
	$j(el).children("li").hide()
	.end().fadeIn(400, function() {
		$j("li", el).eachAsync({ bulk: 0, delay: 50, loop: function() { $j(this).fadeIn(300) } });
	});
}


//DOM ready init
$j(document).ready(function() {

	//recalculate_layout();
	//$j(window).bind("resize",recalculate_layout)

	$j('#mentabel>li>ul>li').quicksearch({
		labelText: '',
		attached: '#mt-menu',
		position: 'prepend',
		inputText: 'Fritekstsøgning',
		loaderImg: '~/media/4DECC41C684744B5964BB15EDD879F69.ashx',
		loaderText: '...',
		delay: 500,
		onBefore: function() {
			$j("#introduction").hide();
		}
	});

	//show the corresponding sections on nav click:
	$j("#mt-nav ul.nav a, #generic a").click(function() {
		$j("#introduction").hide();
		var el = $j(this);
		$j("#mt-menu li a.selected").removeClass("selected");
		el.addClass("selected");
		$j("#mentabel ul li").hide(); //todo:optimize?
		var section = el.attr("href");
		$j("#mentabel li[id^=\'" + section.substring(1) + "\']").fadeIn(500);
		//Find parent headlines and show them too:
		$j(section.substring(0, 2) + ", " + section.substring(0, 3) + ", " + section.substring(0, 5)).show();
		return false;
	});

	$j("#mentabel span.pct").wrapInner('<a href="#" title="Klik her for beregning af godtgørelse"></a>').click(function() {

		var pos = $j(this).position(); //.offset() wrongly handles relative positioning...
		var pctData = $j(this).text();

		if (pctData == "<5%") {
			DisplaySimpleIllegalValue();
			$j('#menberegner-form .Mengrad').hide();
			$j('#menberegner-form .Skadedato').hide();
			$j('#menberegner-form .Foedselsdato').hide();
			$j('#menberegner-form #koen_div').hide();
			$j('#menberegner-form #calculateButton').hide();
			//			$j("#menberegner-result").hide();
			$j("#menberegner").css({ left: pos.left - $j("#menberegner").width(), top: pos.top - 20 }).fadeIn(400);
			$j('#menberegner').bgiframe();
			return false;
		}
		else {
			//clean the data:
			//			var pct = parseInt(pctData.replace(/[\D]|^[\D]/g, ''));
			var pct = 0;
			pctData = pctData.replace(/^\D+/,"");
			pct = parseInt(pctData);
			
			//if (pctData.indexOf('-') == -1)
			//	pct = parseInt(pctData.replace(/[\D]/, ''));
			//else
			//	pct = parseInt(pctData);
			
			var pos = $j(this).position(); //.offset() wrongly handles relative positioning...
			$j('#menberegner-form .Mengrad').show();
			$j('#menberegner-form .Skadedato').show();
			$j('#menberegner-form .Foedselsdato').show();
			$j('#menberegner-form #koen_div').show();
			$j('#menberegner-form #calculateButton').show();

			$j('#output').hide();
			$j('#progress').hide();
			$j('#error').hide();
			$j("#menberegner-result").hide();
			FieldHiderString();
			$j("#menberegner").css({ left: pos.left - $j("#menberegner").width(), top: pos.top - 20 }).fadeIn(400);
			$j("#mengrad option[value='"+pct+"']").attr({"selected":"selected"});
			//$j("#mengrad").val(pct).focus();
			
			return false;
		}
	})

	$j("#mt-nav li.zoom>a, #mt-nav li.flip>a").unbind("click").click(function() {
		$j(this).parents("ul").not("#nav-overview").fadeOut(600);
		return false;
	});

	$j("#mentabel ul li")
		.each(function() {
			// Fix id attibutes
			var id = $j('span.id:first', this).text().replace(/\./g, '_').toLowerCase();
			$j(this).attr("id", id);
		})
		.click(function(e) {
			if (e.target.nodeName == "A") {
				// if the target is an internal link, go to corresponding section:
				var section = $j(e.target).attr("href");
				$j("#mentabel li[id^=\'" + section.substring(1) + "\']").fadeIn(500, function() {
					$j(this).effect("highlight", { color: "#ffff99" }, 2000);
				});
				$j(section.substring(0, 2) + ", " + section.substring(0, 3) + ", " + section.substring(0, 5)).show();
			}
			else if (e.target.className.indexOf('id') != -1) {
				// clicking on the id reveals parent headlines (useful when coming from quicksearch)
				var section = "#" + this.id;
				$j(section.substring(0, 2) + ", " + section.substring(0, 3) + ", " + section.substring(0, 5)).show();
			}

		});


	//the dialog box	
	$j("#menberegner")
		.prepend(
			$j('<a href="#" class="closeBtn">X</a>').click(function() { $j('#menberegner').fadeOut(300); return false; })
		)
		.find("form").submit(function(e) {
			// ajax!
			var url = "mentabel-dummy-result.html"; //for using the same URL as the form, change to this.action
			$j("#menberegner-result").html('<p>Beregner...</p>').load(url, $j(this).serialize(), function() {
				$j("#menberegner-result").hide().fadeIn(500);
			});
			return false;
		});


	// HELP - tooltip
	$j(document).ready(function() {
		$j('p.help').before('<a class="help" href="#">?</a>');
		$j('a.help').click(function() {
			return false;
		}).focus(function() {
			$j(this).next('p.help').css($j(this).position()).show();
			return false;
		}).blur(function() {
			$j(this).next('p.help').hide();
			return false;
		}).hover(function() {
			$j('p.help:visible').hide();
			$j(this).next('p.help').css($j(this).position()).show();
		}, function() {
			$j(this).next('p.help').hide();
		});
	});
	// / HELP - tooltip
});

function recalculate_layout() {
	return false; //not in use at the moment. 
	//change value here according to the menu surroundings.
	var pos = ($j("#mt-menu").height() < $j(window).height()) ? "fixed" : "static";
	$j("#menu").css("position", pos);
}

/*

Plugins
///////////////////////////////////////////////////////////////// */

//jQuery UI 1.6RC2 for highlight effect and color animations
; (function($) {
	$.effects = $.effects || {}; $.extend($.effects, { save: function(el, set) { for (var i = 0; i < set.length; i++) { if (set[i] !== null) $.data(el[0], "ec.storage." + set[i], el[0].style[set[i]]); } }, restore: function(el, set) { for (var i = 0; i < set.length; i++) { if (set[i] !== null) el.css(set[i], $.data(el[0], "ec.storage." + set[i])); } }, setMode: function(el, mode) { if (mode == 'toggle') mode = el.is(':hidden') ? 'show' : 'hide'; return mode; }, getBaseline: function(origin, original) { var y, x; switch (origin[0]) { case 'top': y = 0; break; case 'middle': y = 0.5; break; case 'bottom': y = 1; break; default: y = origin[0] / original.height; }; switch (origin[1]) { case 'left': x = 0; break; case 'center': x = 0.5; break; case 'right': x = 1; break; default: x = origin[1] / original.width; }; return { x: x, y: y }; }, createWrapper: function(el) {
		if (el.parent().attr('id') == 'fxWrapper')
			return el; var props = { width: el.outerWidth({ margin: true }), height: el.outerHeight({ margin: true }), 'float': el.css('float') }; el.wrap('<div id="fxWrapper" style="font-size:100%;background:transparent;border:none;margin:0;padding:0"></div>'); var wrapper = el.parent(); if (el.css('position') == 'static') { wrapper.css({ position: 'relative' }); el.css({ position: 'relative' }); } else { var top = el.css('top'); if (isNaN(parseInt(top))) top = 'auto'; var left = el.css('left'); if (isNaN(parseInt(left))) left = 'auto'; wrapper.css({ position: el.css('position'), top: top, left: left, zIndex: el.css('z-index') }).show(); el.css({ position: 'relative', top: 0, left: 0 }); }
		wrapper.css(props); return wrapper;
	}, removeWrapper: function(el) {
		if (el.parent().attr('id') == 'fxWrapper')
			return el.parent().replaceWith(el); return el;
	}, setTransition: function(el, list, factor, val) { val = val || {}; $.each(list, function(i, x) { unit = el.cssUnit(x); if (unit[0] > 0) val[x] = unit[0] * factor + unit[1]; }); return val; }, animateClass: function(value, duration, easing, callback) {
		var cb = (typeof easing == "function" ? easing : (callback ? callback : null)); var ea = (typeof easing == "object" ? easing : null); return this.each(function() {
			var offset = {}; var that = $j(this); var oldStyleAttr = that.attr("style") || ''; if (typeof oldStyleAttr == 'object') oldStyleAttr = oldStyleAttr["cssText"]; if (value.toggle) { that.hasClass(value.toggle) ? value.remove = value.toggle : value.add = value.toggle; }
			var oldStyle = $.extend({}, (document.defaultView ? document.defaultView.getComputedStyle(this, null) : this.currentStyle)); if (value.add) that.addClass(value.add); if (value.remove) that.removeClass(value.remove); var newStyle = $.extend({}, (document.defaultView ? document.defaultView.getComputedStyle(this, null) : this.currentStyle)); if (value.add) that.removeClass(value.add); if (value.remove) that.addClass(value.remove); for (var n in newStyle) { if (typeof newStyle[n] != "function" && newStyle[n] && n.indexOf("Moz") == -1 && n.indexOf("length") == -1 && newStyle[n] != oldStyle[n] && (n.match(/color/i) || (!n.match(/color/i) && !isNaN(parseInt(newStyle[n], 10)))) && (oldStyle.position != "static" || (oldStyle.position == "static" && !n.match(/left|top|bottom|right/)))) offset[n] = newStyle[n]; }
			that.animate(offset, duration, ea, function() { if (typeof $j(this).attr("style") == 'object') { $j(this).attr("style")["cssText"] = ""; $j(this).attr("style")["cssText"] = oldStyleAttr; } else $j(this).attr("style", oldStyleAttr); if (value.add) $j(this).addClass(value.add); if (value.remove) $j(this).removeClass(value.remove); if (cb) cb.apply(this, arguments); });
		});
	}
	}); $.fn.extend({ _show: $.fn.show, _hide: $.fn.hide, __toggle: $.fn.toggle, _addClass: $.fn.addClass, _removeClass: $.fn.removeClass, _toggleClass: $.fn.toggleClass, effect: function(fx, o, speed, callback) { return $.effects[fx] ? $.effects[fx].call(this, { method: fx, options: o || {}, duration: speed, callback: callback }) : null; }, show: function() {
		if (!arguments[0] || (arguments[0].constructor == Number || /(slow|normal|fast)/.test(arguments[0])))
			return this._show.apply(this, arguments); else { var o = arguments[1] || {}; o['mode'] = 'show'; return this.effect.apply(this, [arguments[0], o, arguments[2] || o.duration, arguments[3] || o.callback]); }
	}, hide: function() {
		if (!arguments[0] || (arguments[0].constructor == Number || /(slow|normal|fast)/.test(arguments[0])))
			return this._hide.apply(this, arguments); else { var o = arguments[1] || {}; o['mode'] = 'hide'; return this.effect.apply(this, [arguments[0], o, arguments[2] || o.duration, arguments[3] || o.callback]); }
	}, toggle: function() {
		if (!arguments[0] || (arguments[0].constructor == Number || /(slow|normal|fast)/.test(arguments[0])) || (arguments[0].constructor == Function))
			return this.__toggle.apply(this, arguments); else { var o = arguments[1] || {}; o['mode'] = 'toggle'; return this.effect.apply(this, [arguments[0], o, arguments[2] || o.duration, arguments[3] || o.callback]); }
	}, addClass: function(classNames, speed, easing, callback) { return speed ? $.effects.animateClass.apply(this, [{ add: classNames }, speed, easing, callback]) : this._addClass(classNames); }, removeClass: function(classNames, speed, easing, callback) { return speed ? $.effects.animateClass.apply(this, [{ remove: classNames }, speed, easing, callback]) : this._removeClass(classNames); }, toggleClass: function(classNames, speed, easing, callback) { return speed ? $.effects.animateClass.apply(this, [{ toggle: classNames }, speed, easing, callback]) : this._toggleClass(classNames); }, morph: function(remove, add, speed, easing, callback) { return $.effects.animateClass.apply(this, [{ add: add, remove: remove }, speed, easing, callback]); }, switchClass: function() { return this.morph.apply(this, arguments); }, cssUnit: function(key) {
		var style = this.css(key), val = []; $.each(['em', 'px', '%', 'pt'], function(i, unit) {
			if (style.indexOf(unit) > 0)
				val = [parseFloat(style), unit];
		}); return val;
	}
	}); jQuery.each(['backgroundColor', 'borderBottomColor', 'borderLeftColor', 'borderRightColor', 'borderTopColor', 'color', 'outlineColor'], function(i, attr) {
		jQuery.fx.step[attr] = function(fx) {
			if (fx.state == 0) { fx.start = getColor(fx.elem, attr); fx.end = getRGB(fx.end); }
			fx.elem.style[attr] = "rgb(" + [Math.max(Math.min(parseInt((fx.pos * (fx.end[0] - fx.start[0])) + fx.start[0]), 255), 0), Math.max(Math.min(parseInt((fx.pos * (fx.end[1] - fx.start[1])) + fx.start[1]), 255), 0), Math.max(Math.min(parseInt((fx.pos * (fx.end[2] - fx.start[2])) + fx.start[2]), 255), 0)].join(",") + ")";
		}
	}); function getRGB(color) {
		var result; if (color && color.constructor == Array && color.length == 3)
			return color; if (result = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(color))
			return [parseInt(result[1]), parseInt(result[2]), parseInt(result[3])]; if (result = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(color))
			return [parseFloat(result[1]) * 2.55, parseFloat(result[2]) * 2.55, parseFloat(result[3]) * 2.55]; if (result = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(color))
			return [parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)]; if (result = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(color))
			return [parseInt(result[1] + result[1], 16), parseInt(result[2] + result[2], 16), parseInt(result[3] + result[3], 16)]; if (result = /rgba\(0, 0, 0, 0\)/.exec(color))
			return colors['transparent']
		return colors[jQuery.trim(color).toLowerCase()];
	}
	function getColor(elem, attr) {
		var color; do {
			color = jQuery.curCSS(elem, attr); if (color != '' && color != 'transparent' || jQuery.nodeName(elem, "body"))
				break; attr = "backgroundColor";
		} while (elem = elem.parentNode); return getRGB(color);
	}; var colors = { aqua: [0, 255, 255], azure: [240, 255, 255], beige: [245, 245, 220], black: [0, 0, 0], blue: [0, 0, 255], brown: [165, 42, 42], cyan: [0, 255, 255], darkblue: [0, 0, 139], darkcyan: [0, 139, 139], darkgrey: [169, 169, 169], darkgreen: [0, 100, 0], darkkhaki: [189, 183, 107], darkmagenta: [139, 0, 139], darkolivegreen: [85, 107, 47], darkorange: [255, 140, 0], darkorchid: [153, 50, 204], darkred: [139, 0, 0], darksalmon: [233, 150, 122], darkviolet: [148, 0, 211], fuchsia: [255, 0, 255], gold: [255, 215, 0], green: [0, 128, 0], indigo: [75, 0, 130], khaki: [240, 230, 140], lightblue: [173, 216, 230], lightcyan: [224, 255, 255], lightgreen: [144, 238, 144], lightgrey: [211, 211, 211], lightpink: [255, 182, 193], lightyellow: [255, 255, 224], lime: [0, 255, 0], magenta: [255, 0, 255], maroon: [128, 0, 0], navy: [0, 0, 128], olive: [128, 128, 0], orange: [255, 165, 0], pink: [255, 192, 203], purple: [128, 0, 128], violet: [128, 0, 128], red: [255, 0, 0], silver: [192, 192, 192], white: [255, 255, 255], yellow: [255, 255, 0], transparent: [255, 255, 255] }; jQuery.easing['jswing'] = jQuery.easing['swing']; jQuery.extend(jQuery.easing, { def: 'easeOutQuad', swing: function(x, t, b, c, d) { return jQuery.easing[jQuery.easing.def](x, t, b, c, d); }, easeInQuad: function(x, t, b, c, d) { return c * (t /= d) * t + b; }, easeOutQuad: function(x, t, b, c, d) { return -c * (t /= d) * (t - 2) + b; }, easeInOutQuad: function(x, t, b, c, d) { if ((t /= d / 2) < 1) return c / 2 * t * t + b; return -c / 2 * ((--t) * (t - 2) - 1) + b; }, easeInCubic: function(x, t, b, c, d) { return c * (t /= d) * t * t + b; }, easeOutCubic: function(x, t, b, c, d) { return c * ((t = t / d - 1) * t * t + 1) + b; }, easeInOutCubic: function(x, t, b, c, d) { if ((t /= d / 2) < 1) return c / 2 * t * t * t + b; return c / 2 * ((t -= 2) * t * t + 2) + b; }, easeInQuart: function(x, t, b, c, d) { return c * (t /= d) * t * t * t + b; }, easeOutQuart: function(x, t, b, c, d) { return -c * ((t = t / d - 1) * t * t * t - 1) + b; }, easeInOutQuart: function(x, t, b, c, d) { if ((t /= d / 2) < 1) return c / 2 * t * t * t * t + b; return -c / 2 * ((t -= 2) * t * t * t - 2) + b; }, easeInQuint: function(x, t, b, c, d) { return c * (t /= d) * t * t * t * t + b; }, easeOutQuint: function(x, t, b, c, d) { return c * ((t = t / d - 1) * t * t * t * t + 1) + b; }, easeInOutQuint: function(x, t, b, c, d) { if ((t /= d / 2) < 1) return c / 2 * t * t * t * t * t + b; return c / 2 * ((t -= 2) * t * t * t * t + 2) + b; }, easeInSine: function(x, t, b, c, d) { return -c * Math.cos(t / d * (Math.PI / 2)) + c + b; }, easeOutSine: function(x, t, b, c, d) { return c * Math.sin(t / d * (Math.PI / 2)) + b; }, easeInOutSine: function(x, t, b, c, d) { return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b; }, easeInExpo: function(x, t, b, c, d) { return (t == 0) ? b : c * Math.pow(2, 10 * (t / d - 1)) + b; }, easeOutExpo: function(x, t, b, c, d) { return (t == d) ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b; }, easeInOutExpo: function(x, t, b, c, d) { if (t == 0) return b; if (t == d) return b + c; if ((t /= d / 2) < 1) return c / 2 * Math.pow(2, 10 * (t - 1)) + b; return c / 2 * (-Math.pow(2, -10 * --t) + 2) + b; }, easeInCirc: function(x, t, b, c, d) { return -c * (Math.sqrt(1 - (t /= d) * t) - 1) + b; }, easeOutCirc: function(x, t, b, c, d) { return c * Math.sqrt(1 - (t = t / d - 1) * t) + b; }, easeInOutCirc: function(x, t, b, c, d) { if ((t /= d / 2) < 1) return -c / 2 * (Math.sqrt(1 - t * t) - 1) + b; return c / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1) + b; }, easeInElastic: function(x, t, b, c, d) {
		var s = 1.70158; var p = 0; var a = c; if (t == 0) return b; if ((t /= d) == 1) return b + c; if (!p) p = d * .3; if (a < Math.abs(c)) { a = c; var s = p / 4; }
		else var s = p / (2 * Math.PI) * Math.asin(c / a); return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b;
	}, easeOutElastic: function(x, t, b, c, d) {
		var s = 1.70158; var p = 0; var a = c; if (t == 0) return b; if ((t /= d) == 1) return b + c; if (!p) p = d * .3; if (a < Math.abs(c)) { a = c; var s = p / 4; }
		else var s = p / (2 * Math.PI) * Math.asin(c / a); return a * Math.pow(2, -10 * t) * Math.sin((t * d - s) * (2 * Math.PI) / p) + c + b;
	}, easeInOutElastic: function(x, t, b, c, d) {
		var s = 1.70158; var p = 0; var a = c; if (t == 0) return b; if ((t /= d / 2) == 2) return b + c; if (!p) p = d * (.3 * 1.5); if (a < Math.abs(c)) { a = c; var s = p / 4; }
		else var s = p / (2 * Math.PI) * Math.asin(c / a); if (t < 1) return -.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b; return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p) * .5 + c + b;
	}, easeInBack: function(x, t, b, c, d, s) { if (s == undefined) s = 1.70158; return c * (t /= d) * t * ((s + 1) * t - s) + b; }, easeOutBack: function(x, t, b, c, d, s) { if (s == undefined) s = 1.70158; return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b; }, easeInOutBack: function(x, t, b, c, d, s) { if (s == undefined) s = 1.70158; if ((t /= d / 2) < 1) return c / 2 * (t * t * (((s *= (1.525)) + 1) * t - s)) + b; return c / 2 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2) + b; }, easeInBounce: function(x, t, b, c, d) { return c - jQuery.easing.easeOutBounce(x, d - t, 0, c, d) + b; }, easeOutBounce: function(x, t, b, c, d) { if ((t /= d) < (1 / 2.75)) { return c * (7.5625 * t * t) + b; } else if (t < (2 / 2.75)) { return c * (7.5625 * (t -= (1.5 / 2.75)) * t + .75) + b; } else if (t < (2.5 / 2.75)) { return c * (7.5625 * (t -= (2.25 / 2.75)) * t + .9375) + b; } else { return c * (7.5625 * (t -= (2.625 / 2.75)) * t + .984375) + b; } }, easeInOutBounce: function(x, t, b, c, d) { if (t < d / 2) return jQuery.easing.easeInBounce(x, t * 2, 0, c, d) * .5 + b; return jQuery.easing.easeOutBounce(x, t * 2 - d, 0, c, d) * .5 + c * .5 + b; }
	});
})(jQuery); ; (function($) { $.effects.highlight = function(o) { return this.queue(function() { var el = $j(this), props = ['backgroundImage', 'backgroundColor', 'opacity']; var mode = $.effects.setMode(el, o.options.mode || 'show'); var color = o.options.color || "#ffff99"; var oldColor = el.css("backgroundColor"); $.effects.save(el, props); el.show(); el.css({ backgroundImage: 'none', backgroundColor: color }); var animation = { backgroundColor: oldColor }; if (mode == "hide") animation['opacity'] = 0; el.animate(animation, { queue: false, duration: o.duration, easing: o.options.easing, complete: function() { if (mode == "hide") el.hide(); $.effects.restore(el, props); if (mode == "show" && jQuery.browser.msie) this.style.removeAttribute('filter'); if (o.callback) o.callback.apply(this, arguments); el.dequeue(); } }); }); }; })(jQuery);

/*
* jQuery Asynchronous Plugin 1.0 RC1
*
* Copyright (c) 2008 Vincent Robert (genezys.net)
* Dual licensed under the MIT (MIT-LICENSE.txt)
* and GPL (GPL-LICENSE.txt) licenses.
*
*/
(function($) {

	// opts.delay : (default 10) delay between async call in ms
	// opts.bulk : (default 500) delay during which the loop can continue synchronously without yielding the CPU
	// opts.test : (default true) function to test in the while test part
	// opts.loop : (default empty) function to call in the while loop part
	// opts.end : (default empty) function to call at the end of the while loop
	$.whileAsync = function(opts) {
		var delay = Math.abs(opts.delay) || 10,
		bulk = isNaN(opts.bulk) ? 500 : Math.abs(opts.bulk),
		test = opts.test || function() { return true; },
		loop = opts.loop || function() { },
		end = opts.end || function() { };

		(function() {

			var t = false,
			begin = new Date();

			while (t = test()) {
				loop();
				if (bulk === 0 || (new Date() - begin) > bulk) {
					break;
				}
			}
			if (t) {
				setTimeout(arguments.callee, delay);
			}
			else {
				end();
			}

		})();
	}

	// opts.delay : (default 10) delay between async call in ms
	// opts.bulk : (default 500) delay during which the loop can continue synchronously without yielding the CPU
	// opts.loop : (default empty) function to call in the each loop part, signature: function(index, value) this = value
	// opts.end : (default empty) function to call at the end of the each loop
	$.eachAsync = function(array, opts) {
		var i = 0,
		l = array.length,
		loop = opts.loop || function() { };

		$.whileAsync(
		$.extend(opts, {
			test: function() { return i < l; },
			loop: function() {
				var val = array[i];
				return loop.call(val, i++, val);
			}
		})
	);
	}

	$.fn.eachAsync = function(opts) {
		$.eachAsync(this, opts);
		return this;
	}

})(jQuery);

(function($) {
	//http://rikrikrik.com/jquery/quicksearch/
	$.fn.quicksearch = function(opt) {

		function is_empty(i) {
			return (i === null || i === undefined || i === false) ? true : false;
		}

		function strip_html(input) {
			var regexp = new RegExp(/\<[^\<]+\>/g);
			var output = input.replace(regexp, "");
			output = $.trim(output.toLowerCase().replace(/\n/, '').replace(/\s{2,}/, ' '));
			return output;
		}

		function get_key() {
			var input = strip_html($j('input[rel="' + options.randomElement + '"]').val());

			if (input.indexOf(' ') === -1) {
				return input;
			}
			else {
				return input.split(" ");
			}
		}

		function test_key(k, value, type) {
			if (type === "string") {
				return test_key_string(k, value);
			}
			else {
				return test_key_arr(k, value);
			}
		}

		function test_key_string(k, value) {
			return (value.indexOf(k) > -1);
		}

		function test_key_arr(k, value) {
			for (var i = 0; i < k.length; i++) {
				var test = value.indexOf(k[i]);
				if (test === -1) {
					return false;
				}
			}
			return true;
		}

		function select_element(el) {
			if (options.hideElement === "grandparent") {
				return $j(el).parent().parent();
			}
			else if (options.hideElement === "parent") {
				return $j(el).parent();
			}
			else {
				return $j(el);
			}
		}

		function stripe(el) {
			if (doStripe) {
				var i = 0;
				select_element(el).filter(':visible').each(function() {

					for (var j = 0; j < stripeRowLength; j++) {
						if (i === j) {
							$j(this).addClass(options.stripeRowClass[i]);

						}
						else {
							$j(this).removeClass(options.stripeRowClass[j]);
						}
					}
					i = (i + 1) % stripeRowLength;
				});
			}
		}

		function fix_widths(el) {
			$j(el).find('td').each(function() {
				$j(this).attr('width', parseInt($j(this).css('width')));
			});
		}

		function loader(o) {
			if (options.loaderId) {
				var l = $j('input[rel="' + options.randomElement + '"]').parent().find('.loader');
				if (o === 'hide') {
					l.hide();
				}
				else {
					l.show();
				}
			}
		}

		function place_form() {
			var formPosition = options.position;
			var formAttached = options.attached;

			if (formPosition === 'before') {
				$j(formAttached).before(make_form());
			} else if (formPosition === 'prepend') {
				$j(formAttached).prepend(make_form());
			} else if (formPosition === 'append') {
				$j(formAttached).append(make_form());
			} else {
				$j(formAttached).after(make_form());
			}
		}

		function make_form_label() {
			if (!is_empty(options.labelText)) {
				return '<label for="' + options.randomElement + '" ' +
							'class="' + options.labelClass + '">'
							+ options.labelText
							+ '</label> ';
			}
			return '';
		}

		function make_form_input() {
			var val = (!is_empty(options.inputText)) ? options.inputText : ""
			return '<input type="text" value="' + val + '" rel="' + options.randomElement + '" class="' + options.inputClass + '" id="' + options.randomElement + '" /> ';
		}

		function make_form_loader() {
			if (!is_empty(options.loaderImg)) {
				return '<img src="' + options.loaderImg + '" alt="Loading" id="' + options.loaderId + '" class="' + options.loaderClass + '" />';
			} else {
				return '<span id="' + options.loaderId + '" class="' + options.loaderClass + '">' + options.loaderText + '</span>';
			}
		}

		function make_form() {
			var f = (!options.isFieldset) ? 'form' : 'fieldset';
			return '<' + f + ' action="#" ' + 'id="' + options.formId + '" ' + 'class="quicksearch">' +
						make_form_label() + make_form_input() + make_form_loader() +
					'</' + f + '>';
		}

		function focus_on_load() {
			$j('input[rel="' + options.randomElement + '"]').get(0).focus();
		}

		function toggle_text() {
			$j('input[rel="' + options.randomElement + '"]').focus(function() {
				if ($j(this).val() === options.inputText) {
					$j(this).val('');
				}
			});
			$j('input[rel="' + options.randomElement + '"]').blur(function() {
				if ($j(this).val() === "") {
					$j(this).val(options.inputText);
				}
			});
		}

		function get_cache(el) {
			return $j(el).map(function() {
				return strip_html(this.innerHTML);
			});
		}

		function init() {
			place_form();
			if (options.fixWidths) fix_widths(el);
			if (options.focusOnLoad) focus_on_load();
			if (options.inputText != "" && options.inputText != null) toggle_text();

			cache = get_cache(el);

			stripe(el);
			loader('hide');
		}

		function qs() {
			clearTimeout(timeout);
			timeout = setTimeout(function() {

				loader('show');

				setTimeout(function() {
					options.onBefore();

					var k = get_key();
					var k_type = (typeof k);
					var i = 0;

					k = options.filter(k);

					if (k != "") {
						if (typeof score[k] === "undefined") {
							score[k] = new Array();
							cache.each(function(i) {
								if (test_key(k, cache[i], k_type)) {
									score[k][i] = true;
								}
							});
						}

						if (score[k].length === 0) {
							select_element(el).hide();
						}
						else {
							$j(el).each(function(i) {
								if (score[k][i]) {
									select_element(this).show();
								}
								else {
									select_element(this).hide();
								}
							});

						}
					}
					else {
						select_element(el).show();
					}

					stripe(el);
				}, options.delay / 2);

				setTimeout(function() {
					loader('hide');
				}, options.delay / 2);

				options.onAfter();

			}, options.delay / 2);
		}

		var options = $.extend({
			position: 'prepend',
			attached: 'body',
			formId: 'quicksearch',
			labelText: 'Quick Search',
			labelClass: 'qs_label',
			inputText: null,
			inputClass: 'qs_input',
			loaderId: 'loader',
			loaderClass: 'loader',
			loaderImg: null,
			loaderText: 'Loading...',
			stripeRowClass: null,
			hideElement: null,
			delay: 500,
			focusOnLoad: false,
			onBefore: function() { },
			onAfter: function() { },
			filter: function(i) {
				return i;
			},
			randomElement: 'qs' + Math.floor(Math.random() * 1000000),
			isFieldset: false,
			fixWidths: false
		}, opt);

		var timeout;
		var score = {};
		var stripeRowLength = (!is_empty(options.stripeRowClass)) ? options.stripeRowClass.length : 0;
		var doStripe = (stripeRowLength > 0) ? true : false;
		var el = this;
		var cache;
		var selector = $j(this).selector;

		$.fn.extend({
			reset_cache: function() {
				el = $j(selector);
				cache = get_cache(el);
			}
		});

		init();

		$j('input[rel="' + options.randomElement + '"]').keydown(function(e) {
			var keycode = e.keyCode;
			if (!(keycode === 9 || keycode === 13 || keycode === 16 || keycode === 17 || keycode === 18 || keycode === 38 || keycode === 40 || keycode === 224)) {
				qs();
			}
		});

		$j('form.quicksearch, fieldset.quicksearch').submit(function() { return false; });

		return this;
	};
})(jQuery);



function TestMen() {
	var v = $j('#mengrad').val();

	//Tjecker om mengraden er et tal mellem 5-120.
	if (v.search(/\D/) > -1 || v < 5 || 120 < v) {
		DisplayIllegalValue();
		return false;
	}
	return true;
}

function DisplayIllegalValue() {
	DisplayError("<br>Du skal indsætte et tal imellem 5 og 120.<br/>Hvis ménprocenten er mindre end 5 procent (<5%), kan der ikke gives en godtgørelse efter arbejdsskadeloven.<br/>Der kan højst gives 120 procent.");
}
function DisplaySimpleIllegalValue() {
	DisplayError("<br>Hvis ménprocenten er mindre end 5 procent (<5%), kan der ikke gives en godtgørelse efter arbejdsskadeloven.");
}

function FieldHiderString() {
	var cutoffDate = "19930101";

	var Y = document.getElementById('skadedato_yyyy').value;
	var M = document.getElementById('skadedato_mm').value;
	var D = document.getElementById('skadedato_dd').value;

	var selectedDate = Y + M + D;

	var koen_div = document.getElementById("koen_div");
	var koen_1 = document.getElementById("koen_1");
	var koen_0 = document.getElementById("koen_0");
	var koen_result = document.getElementById("koen_result");

	if (selectedDate >= cutoffDate) {
		koen_1.checked = true;
		koen_0.checked = false;
		koen_div.style.display = "none";
		koen_result.style.display = "none";
	}
	else {
		koen_1.checked = false;
		koen_0.checked = true;
		koen_div.style.display = "";
		koen_result.style.display = "";
	}
}
