﻿
/*-----------------------------------------------------------------------------------------------------*/
/* Filename : jquery.cookie.js                                                                         */
/* Description : library om cookies af te handelen                                                     */
/*-----------------------------------------------------------------------------------------------------*/
/**
* Cookie plugin
*
* Copyright (c) 2006 Klaus Hartl (stilbuero.de)
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
*/

/**
* Create a cookie with the given name and value and other optional parameters.
*
* @example $.cookie('the_cookie', 'the_value');
* @desc Set the value of a cookie.
* @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });
* @desc Create a cookie with all available options.
* @example $.cookie('the_cookie', 'the_value');
* @desc Create a session cookie.
* @example $.cookie('the_cookie', null);
* @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain
*       used when the cookie was set.
*
* @param String name The name of the cookie.
* @param String value The value of the cookie.
* @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
* @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
*                             If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
*                             If set to null or omitted, the cookie will be a session cookie and will not be retained
*                             when the the browser exits.
* @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
* @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
* @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
*                        require a secure protocol (like HTTPS).
* @type undefined
*
* @name $.cookie
* @cat Plugins/Cookie
* @author Klaus Hartl/klaus.hartl@stilbuero.de
*/

/**
* Get the value of a cookie with the given name.
*
* @example $.cookie('the_cookie');
* @desc Get the value of a cookie.
*
* @param String name The name of the cookie.
* @return The value of the cookie.
* @type String
*
* @name $.cookie
* @cat Plugins/Cookie
* @author Klaus Hartl/klaus.hartl@stilbuero.de
*/
jQuery.cookie = function (name, value, options) {
	if (typeof value != 'undefined') { // name and value given, set cookie
		options = options || {};
		if (value === null) {
			value = '';
			options.expires = -1;
		}
		var expires = '';
		if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
			var date;
			if (typeof options.expires == 'number') {
				date = new Date();
				date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
			} else {
				date = options.expires;
			}
			expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
		}
		// CAUTION: Needed to parenthesize options.path and options.domain
		// in the following expressions, otherwise they evaluate to undefined
		// in the packed version for some reason...
		var path = options.path ? '; path=' + (options.path) : '';
		var domain = options.domain ? '; domain=' + (options.domain) : '';
		var secure = options.secure ? '; secure' : '';
		document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
	} else { // only name given, get cookie
		var cookieValue = null;
		if (document.cookie && document.cookie != '') {
			var cookies = document.cookie.split(';');
			for (var i = 0; i < cookies.length; i++) {
				var cookie = jQuery.trim(cookies[i]);
				// Does this cookie string begin with the name we want?
				if (cookie.substring(0, name.length + 1) == (name + '=')) {
					cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
					break;
				}
			}
		}
		return cookieValue;
	}
};

/*-----------------------------------------------------------------------------------------------------*/
/* Filename : jquery.jsoncookie.js -                                                                   */
/* Description : Sets and retreives native JavaScript objects as cookies.                              */
/*-----------------------------------------------------------------------------------------------------*/

/** 
* JSON Cookie - jquery.jsoncookie.js
*
* Sets and retreives native JavaScript objects as cookies.
* Depends on the object serialization framework provided by JSON2.
*
* Dependencies: jQuery, jQuery Cookie, JSON2
* 
* @project JSON Cookie
* @author Randall Morey
* @version 0.9
*/
(function ($) {
	var isObject = function (x) {
		return (typeof x === 'object') && !(x instanceof Array) && (x !== null);
	};

	$.extend({
		getJSONCookie: function (cookieName) {
			var cookieData = $.cookie(cookieName);
			return cookieData ? JSON.parse(cookieData) : {};
		},
		setJSONCookie: function (cookieName, data, options) {
			var cookieData = '';

			options = $.extend({
				expires: 90,
				path: '/'
			}, options);

			if (!isObject(data)) {	// data must be a true object to be serialized
				throw new Error('JSONCookie data must be an object');
			}

			cookieData = JSON.stringify(data);

			return $.cookie(cookieName, cookieData, options);
		},
		removeJSONCookie: function (cookieName) {
			return $.cookie(cookieName, null);
		},
		JSONCookie: function (cookieName, data, options) {
			if (data) {
				$.setJSONCookie(cookieName, data, options);
			}
			return $.getJSONCookie(cookieName);
		}
	});
})(jQuery);



/*-----------------------------------------------------------------------------------------------------*/
/* Filename : jquery-ellipsis.js - http://pastebin.com/2DLJae8H                                        */
/* Description : plugin voor een ontbrekende css feature in firefox                                    */
/*-----------------------------------------------------------------------------------------------------*/

(function ($) {
	$.fn.ellipsis = function (enableUpdating) {
		var s = document.documentElement.style;
		if (!('textOverflow' in s || 'OTextOverflow' in s)) {
			return this.each(function () {
				var el = $(this);
				if (el.css("overflow") == "hidden") {
					var originalText = el.html();
					var w = el.width();

					var t = $(this.cloneNode(true)).hide().css({
						'position': 'absolute',
						'width': 'auto',
						'overflow': 'visible',
						'max-width': 'inherit'
					});
					el.after(t);

					var text = originalText;
					while (text.length > 0 && t.width() > el.width()) {
						text = text.substr(0, text.length - 1);
						t.html(text + "…");
					}
					el.html(t.html());

					t.remove();

					if (enableUpdating == true) {
						var oldW = el.width();
						setInterval(function () {
							if (el.width() != oldW) {
								oldW = el.width();
								el.html(originalText);
								el.ellipsis();
							}
						}, 200);
					}
				}
			});
		} else return this;
	};
})(jQuery);

/*-------------------------------------------------------------------------------------------------------*/
/* Filename    : jquery.event.hover.min.js                                                               */
/* Description : vertraagde hover, die werkt met delegate() en live()                                    */
/*-------------------------------------------------------------------------------------------------------*/

(function () {
	var d = jQuery.event, k = function (a, e, f) { for (var g = 0; g < e.length; g++) { var c = e[g], b, h = c.indexOf(".") < 0, j; if (!h) { b = c.split("."); c = b.shift(); j = new RegExp("(^|\\.)" + b.slice(0).sort().join("\\.(?:.*\\.)?") + "(\\.|$)") } b = (a[c] || []).slice(0); for (var m = 0; m < b.length; m++) { var i = b[m]; if (!i.selector && (h || j.test(i.namespace))) f(c, i.origHandler || i.handler) } } }; d.find = function (a, e, f) {
		a = $.data(a, "events"); var g = []; if (!a) return g; if (f) {
			if (!a.live) return []; a = a.live; for (var c = 0; c < a.length; c++) {
				var b = a[c]; if (b.selector ===
f && $.inArray(b.origType, e) !== -1) g.push(b.origHandler || b.handler)
			} 
		} else k(a, e, function (h, j) { g.push(j) }); return g
	}; d.findBySelector = function (a, e) { a = $.data(a, "events"); var f = {}, g = function (c, b, h) { c = f[c] || (f[c] = {}); (c[b] || (c[b] = [])).push(h) }; if (!a) return f; $.each(a.live || [], function (c, b) { if ($.inArray(b.origType, e) !== -1) g(b.selector, b.origType, b.origHandler || b.handler) }); k(a, e, function (c, b) { g("", c, b) }); return f }; $.fn.respondsTo = function (a) {
		return this.length ? d.find(this[0], $.isArray(a) ? a : [a]).length > 0 :
false
	}; $.fn.triggerHandled = function (a, e) { a = typeof a == "string" ? $.Event(a) : a; this.trigger(a, e); return a.handled }; d.setupHelper = function (a, e, f) {
		if (!f) { f = e; e = null } var g = function (b) { if (b = b.selector || "") d.find(this, a, b).length || $(this).delegate(b, e, f); else d.find(this, a, b).length || d.add(this, e, f, { selector: b, delegate: this }) }, c = function (b) { if (b = b.selector || "") d.find(this, a, b).length || $(this).undelegate(b, e, f); else d.find(this, a, b).length || d.remove(this, e, f, { selector: b, delegate: this }) }; $.each(a, function () {
			d.special[this] =
{ add: g, remove: c, setup: function () { }, teardown: function () { } }
		})
	} 
})(jQuery);
(function (d) {
	jQuery.Hover = function () { this._delay = jQuery.Hover.delay; this._distance = jQuery.Hover.distance }; d.extend(jQuery.Hover, { delay: 100, distance: 10 }); d.extend(jQuery.Hover.prototype, { delay: function (a) { this._delay = a }, distance: function (a) { this._distance = a } }); d = jQuery; var k = jQuery.event; k.setupHelper(["hoverinit", "hoverenter", "hoverleave", "hovermove"], "mouseenter", function (a) {
		var e = a.liveFired || a.currentTarget, f = a.handleObj.selector, g = { pageX: a.pageX, pageY: a.pageY }, c = 0, b, h = this, j = false, m = a, i = new jQuery.Hover;
		d(h).bind("mousemove.specialMouseEnter", {}, function (l) { c += Math.pow(l.pageX - g.pageX, 2) + Math.pow(l.pageY - g.pageY, 2); g = { pageX: l.pageX, pageY: l.pageY }; m = l }).bind("mouseleave.specialMouseLeave", {}, function (l) { clearTimeout(b); j && d.each(k.find(e, ["hoverleave"], f), function () { this.call(h, l) }); d(h).unbind("mouseleave.specialMouseLeave") }); d.each(k.find(e, ["hoverinit"], f), function () { this.call(h, a, i) }); b = setTimeout(function () {
			if (c < i._distance && d(h).queue().length == 0) {
				d.each(k.find(e, ["hoverenter"], f), function () {
					this.call(h,
m, i)
				}); j = true; d(h).unbind("mousemove.specialMouseEnter")
			} else { c = 0; b = setTimeout(arguments.callee, i._delay) } 
		}, i._delay)
	})
})(jQuery);

/*--------------------------------------------------------------------------------------------------------*/
/* Filename    : jquery.fancyInput.js                                                                     */
/* Description : input styling plugin (moodboard)                                                         */
/*--------------------------------------------------------------------------------------------------------*/

;(function ($) {
	$.fn.fancyInput = function (options) {
		var options = $.extend({}, $.fn.fancyInput.defaults, options);

		return this.each(function () {
			var $this = $(this);

			if ($this.is(':checkbox')) {
				fancyInputCheckbox($this, options);
			}
		});
	}

	function fancyInputCheckbox(element, options) {
		element.css({ 'opacity': '0' });

		var divTag = $('<div />');

		element.wrap(divTag);

		divTag = element.parent();

		divTag.css({
			'background-image': 'url(' + options.sprite + ')',
			'background-position': '0 -23px',
			'background-repeat': 'no-repeat',
			'float': 'left'
		});

		if (element.is(':checked')) {
			divTag.css({
				'background-position': '0 3px'
			});
		}

		element.change(function () {
			if (element.is(':checked')) {
				divTag.css({ 'background-position': '0 3px' });
			} else {
				divTag.css({ 'background-position': '0 -23px' });
			}
		});
	}


	$.fn.fancyInput.defaults = {
		sprite: "/img/checkbox.png"
	};
})(jQuery);

/*-------------------------------------------------------------------------------------------------------*/
/* Filename    : jquery.jscrollpane.min.js                                                               */
/* Description : scrollable divs (samen shoppen)                                                         */
/*-------------------------------------------------------------------------------------------------------*/
/*
* jScrollPane - v2.0.0beta5 - 2010-10-18
* http://jscrollpane.kelvinluck.com/
*
* Copyright (c) 2010 Kelvin Luck
* Dual licensed under the MIT and GPL licenses.
*/
(function (b, a, c) {
	b.fn.jScrollPane = function (f) {
		function d(C, L) {
			var au, N = this, V, ah, v, aj, Q, W, y, q, av, aB, ap, i, H, h, j, X, R, al, U, t, A, am, ac, ak, F, l, ao, at, x, aq, aE, g, aA, ag = true, M = true, aD = false, k = false, Z = b.fn.mwheelIntent ? "mwheelIntent.jsp" : "mousewheel.jsp"; aE = C.css("paddingTop") + " " + C.css("paddingRight") + " " + C.css("paddingBottom") + " " + C.css("paddingLeft"); g = (parseInt(C.css("paddingLeft")) || 0) + (parseInt(C.css("paddingRight")) || 0); an(L); function an(aH) { var aL, aK, aJ, aG, aF, aI; au = aH; if (V == c) { C.css({ overflow: "hidden", padding: 0 }); ah = C.innerWidth() + g; v = C.innerHeight(); C.width(ah); V = b('<div class="jspPane" />').wrap(b('<div class="jspContainer" />').css({ width: ah + "px", height: v + "px" })); C.wrapInner(V.parent()); aj = C.find(">.jspContainer"); V = aj.find(">.jspPane"); V.css("padding", aE) } else { C.css("width", ""); aI = C.outerWidth() + g != ah || C.outerHeight() != v; if (aI) { ah = C.innerWidth() + g; v = C.innerHeight(); aj.css({ width: ah + "px", height: v + "px" }) } aA = V.innerWidth(); if (!aI && V.outerWidth() == Q && V.outerHeight() == W) { if (aB || av) { V.css("width", aA + "px"); C.css("width", (aA + g) + "px") } return } V.css("width", ""); C.css("width", (ah) + "px"); aj.find(">.jspVerticalBar,>.jspHorizontalBar").remove().end() } aL = V.clone().css("position", "absolute"); aK = b('<div style="width:1px; position: relative;" />').append(aL); b("body").append(aK); Q = Math.max(V.outerWidth(), aL.outerWidth()); aK.remove(); W = V.outerHeight(); y = Q / ah; q = W / v; av = q > 1; aB = y > 1; if (!(aB || av)) { C.removeClass("jspScrollable"); V.css({ top: 0, width: aj.width() - g }); n(); D(); O(); w(); af() } else { C.addClass("jspScrollable"); aJ = au.maintainPosition && (H || X); if (aJ) { aG = ay(); aF = aw() } aC(); z(); E(); if (aJ) { K(aG); J(aF) } I(); ad(); if (au.enableKeyboardNavigation) { P() } if (au.clickOnTrack) { p() } B(); if (au.hijackInternalLinks) { m() } } if (au.autoReinitialise && !aq) { aq = setInterval(function () { an(au) }, au.autoReinitialiseDelay) } else { if (!au.autoReinitialise && aq) { clearInterval(aq) } } C.trigger("jsp-initialised", [aB || av]) } function aC() { if (av) { aj.append(b('<div class="jspVerticalBar" />').append(b('<div class="jspCap jspCapTop" />'), b('<div class="jspTrack" />').append(b('<div class="jspDrag" />').append(b('<div class="jspDragTop" />'), b('<div class="jspDragBottom" />'))), b('<div class="jspCap jspCapBottom" />'))); R = aj.find(">.jspVerticalBar"); al = R.find(">.jspTrack"); ap = al.find(">.jspDrag"); if (au.showArrows) { am = b('<a class="jspArrow jspArrowUp" />').bind("mousedown.jsp", az(0, -1)).bind("click.jsp", ax); ac = b('<a class="jspArrow jspArrowDown" />').bind("mousedown.jsp", az(0, 1)).bind("click.jsp", ax); if (au.arrowScrollOnHover) { am.bind("mouseover.jsp", az(0, -1, am)); ac.bind("mouseover.jsp", az(0, 1, ac)) } ai(al, au.verticalArrowPositions, am, ac) } t = v; aj.find(">.jspVerticalBar>.jspCap:visible,>.jspVerticalBar>.jspArrow").each(function () { t -= b(this).outerHeight() }); ap.hover(function () { ap.addClass("jspHover") }, function () { ap.removeClass("jspHover") }).bind("mousedown.jsp", function (aF) { b("html").bind("dragstart.jsp selectstart.jsp", function () { return false }); ap.addClass("jspActive"); var s = aF.pageY - ap.position().top; b("html").bind("mousemove.jsp", function (aG) { S(aG.pageY - s, false) }).bind("mouseup.jsp mouseleave.jsp", ar); return false }); o() } } function o() { al.height(t + "px"); H = 0; U = au.verticalGutter + al.outerWidth(); V.width(ah - U - g); if (R.position().left == 0) { V.css("margin-left", U + "px") } } function z() {
				if (aB) {
					aj.append(b('<div class="jspHorizontalBar" />').append(b('<div class="jspCap jspCapLeft" />'), b('<div class="jspTrack" />').append(b('<div class="jspDrag" />').append(b('<div class="jspDragLeft" />'), b('<div class="jspDragRight" />'))), b('<div class="jspCap jspCapRight" />'))); ak = aj.find(">.jspHorizontalBar"); F = ak.find(">.jspTrack"); h = F.find(">.jspDrag"); if (au.showArrows) {
						at = b('<a class="jspArrow jspArrowLeft" />').bind("mousedown.jsp", az(-1, 0)).bind("click.jsp", ax); x = b('<a class="jspArrow jspArrowRight" />').bind("mousedown.jsp", az(1, 0)).bind("click.jsp", ax); if (au.arrowScrollOnHover) {
							at.bind("mouseover.jsp", az(-1, 0, at));
							x.bind("mouseover.jsp", az(1, 0, x))
						} ai(F, au.horizontalArrowPositions, at, x)
					} h.hover(function () { h.addClass("jspHover") }, function () { h.removeClass("jspHover") }).bind("mousedown.jsp", function (aF) { b("html").bind("dragstart.jsp selectstart.jsp", function () { return false }); h.addClass("jspActive"); var s = aF.pageX - h.position().left; b("html").bind("mousemove.jsp", function (aG) { T(aG.pageX - s, false) }).bind("mouseup.jsp mouseleave.jsp", ar); return false }); l = aj.innerWidth(); ae()
				} else { } 
			} function ae() { aj.find(">.jspHorizontalBar>.jspCap:visible,>.jspHorizontalBar>.jspArrow").each(function () { l -= b(this).outerWidth() }); F.width(l + "px"); X = 0 } function E() { if (aB && av) { var aF = F.outerHeight(), s = al.outerWidth(); t -= aF; b(ak).find(">.jspCap:visible,>.jspArrow").each(function () { l += b(this).outerWidth() }); l -= s; v -= s; ah -= aF; F.parent().append(b('<div class="jspCorner" />').css("width", aF + "px")); o(); ae() } if (aB) { V.width((aj.outerWidth() - g) + "px") } W = V.outerHeight(); q = W / v; if (aB) { ao = 1 / y * l; if (ao > au.horizontalDragMaxWidth) { ao = au.horizontalDragMaxWidth } else { if (ao < au.horizontalDragMinWidth) { ao = au.horizontalDragMinWidth } } h.width(ao + "px"); j = l - ao; ab(X) } if (av) { A = 1 / q * t; if (A > au.verticalDragMaxHeight) { A = au.verticalDragMaxHeight } else { if (A < au.verticalDragMinHeight) { A = au.verticalDragMinHeight } } ap.height(A + "px"); i = t - A; aa(H) } } function ai(aG, aI, aF, s) { var aK = "before", aH = "after", aJ; if (aI == "os") { aI = /Mac/.test(navigator.platform) ? "after" : "split" } if (aI == aK) { aH = aI } else { if (aI == aH) { aK = aI; aJ = aF; aF = s; s = aJ } } aG[aK](aF)[aH](s) } function az(aF, s, aG) { return function () { G(aF, s, this, aG); this.blur(); return false } } function G(aH, aF, aK, aJ) { aK = b(aK).addClass("jspActive"); var aI, s = function () { if (aH != 0) { T(X + aH * au.arrowButtonSpeed, false) } if (aF != 0) { S(H + aF * au.arrowButtonSpeed, false) } }, aG = setInterval(s, au.arrowRepeatFreq); s(); aI = aJ == c ? "mouseup.jsp" : "mouseout.jsp"; aJ = aJ || b("html"); aJ.bind(aI, function () { aK.removeClass("jspActive"); clearInterval(aG); aJ.unbind(aI) }) } function p() { w(); if (av) { al.bind("mousedown.jsp", function (aH) { if (aH.originalTarget == c || aH.originalTarget == aH.currentTarget) { var aG = b(this), s = setInterval(function () { var aI = aG.offset(), aJ = aH.pageY - aI.top; if (H + A < aJ) { S(H + au.trackClickSpeed) } else { if (aJ < H) { S(H - au.trackClickSpeed) } else { aF() } } }, au.trackClickRepeatFreq), aF = function () { s && clearInterval(s); s = null; b(document).unbind("mouseup.jsp", aF) }; b(document).bind("mouseup.jsp", aF); return false } }) } if (aB) { F.bind("mousedown.jsp", function (aH) { if (aH.originalTarget == c || aH.originalTarget == aH.currentTarget) { var aG = b(this), s = setInterval(function () { var aI = aG.offset(), aJ = aH.pageX - aI.left; if (X + ao < aJ) { T(X + au.trackClickSpeed) } else { if (aJ < X) { T(X - au.trackClickSpeed) } else { aF() } } }, au.trackClickRepeatFreq), aF = function () { s && clearInterval(s); s = null; b(document).unbind("mouseup.jsp", aF) }; b(document).bind("mouseup.jsp", aF); return false } }) } } function w() { F && F.unbind("mousedown.jsp"); al && al.unbind("mousedown.jsp") } function ar() { b("html").unbind("dragstart.jsp selectstart.jsp mousemove.jsp mouseup.jsp mouseleave.jsp"); ap && ap.removeClass("jspActive"); h && h.removeClass("jspActive") } function S(s, aF) { if (!av) { return } if (s < 0) { s = 0 } else { if (s > i) { s = i } } if (aF == c) { aF = au.animateScroll } if (aF) { N.animate(ap, "top", s, aa) } else { ap.css("top", s); aa(s) } } function aa(aF) { if (aF == c) { aF = ap.position().top } aj.scrollTop(0); H = aF; var aI = H == 0, aG = H == i, aH = aF / i, s = -aH * (W - v); if (ag != aI || aD != aG) { ag = aI; aD = aG; C.trigger("jsp-arrow-change", [ag, aD, M, k]) } u(aI, aG); V.css("top", s); C.trigger("jsp-scroll-y", [-s, aI, aG]) } function T(aF, s) { if (!aB) { return } if (aF < 0) { aF = 0 } else { if (aF > j) { aF = j } } if (s == c) { s = au.animateScroll } if (s) { N.animate(h, "left", aF, ab) } else { h.css("left", aF); ab(aF) } } function ab(aF) { if (aF == c) { aF = h.position().left } aj.scrollTop(0); X = aF; var aI = X == 0, aH = X == j, aG = aF / j, s = -aG * (Q - ah); if (M != aI || k != aH) { M = aI; k = aH; C.trigger("jsp-arrow-change", [ag, aD, M, k]) } r(aI, aH); V.css("left", s); C.trigger("jsp-scroll-x", [-s, aI, aH]) } function u(aF, s) { if (au.showArrows) { am[aF ? "addClass" : "removeClass"]("jspDisabled"); ac[s ? "addClass" : "removeClass"]("jspDisabled") } } function r(aF, s) {
				if (au.showArrows) {
					at[aF ? "addClass" : "removeClass"]("jspDisabled");
					x[s ? "addClass" : "removeClass"]("jspDisabled")
				} 
			} function J(s, aF) { var aG = s / (W - v); S(aG * i, aF) } function K(aF, s) { var aG = aF / (Q - ah); T(aG * j, s) } function Y(aN, aL, aF) { var aJ, aH, s = 0, aG, aK, aM; try { aJ = b(aN) } catch (aI) { return } aH = aJ.outerHeight(); aj.scrollTop(0); while (!aJ.is(".jspPane")) { s += aJ.position().top; aJ = aJ.offsetParent(); if (/^body|html$/i.test(aJ[0].nodeName)) { return } } aG = aw(); aK = aG + v; if (s < aG || aL) { aM = s - au.verticalGutter } else { if (s + aH > aK) { aM = s - v + aH + au.verticalGutter } } if (aM) { J(aM, aF) } } function ay() { return -V.position().left } function aw() { return -V.position().top } function ad() { aj.unbind(Z).bind(Z, function (aI, aJ, aH, aF) { var aG = X, s = H; T(X + aH * au.mouseWheelSpeed, false); S(H - aF * au.mouseWheelSpeed, false); return aG == X && s == H }) } function n() { aj.unbind(Z) } function ax() { return false } function I() { V.unbind("focusin.jsp").bind("focusin.jsp", function (s) { if (s.target === V[0]) { return } Y(s.target, false) }) } function D() { V.unbind("focusin.jsp") } function P() { var aF, s; C.attr("tabindex", 0).unbind("keydown.jsp").bind("keydown.jsp", function (aJ) { if (aJ.target !== C[0]) { return } var aH = X, aG = H, aI = aF ? 2 : 16; switch (aJ.keyCode) { case 40: S(H + aI, false); break; case 38: S(H - aI, false); break; case 34: case 32: J(aw() + Math.max(32, v) - 16); break; case 33: J(aw() - v + 16); break; case 35: J(W - v); break; case 36: J(0); break; case 39: T(X + aI, false); break; case 37: T(X - aI, false); break } if (!(aH == X && aG == H)) { aF = true; clearTimeout(s); s = setTimeout(function () { aF = false }, 260); return false } }); if (au.hideFocus) { C.css("outline", "none"); if ("hideFocus" in aj[0]) { C.attr("hideFocus", true) } } else { C.css("outline", ""); if ("hideFocus" in aj[0]) { C.attr("hideFocus", false) } } } function O() { C.attr("tabindex", "-1").removeAttr("tabindex").unbind("keydown.jsp") } function B() { if (location.hash && location.hash.length > 1) { var aG, aF; try { aG = b(location.hash) } catch (s) { return } if (aG.length && V.find(aG)) { if (aj.scrollTop() == 0) { aF = setInterval(function () { if (aj.scrollTop() > 0) { Y(location.hash, true); b(document).scrollTop(aj.position().top); clearInterval(aF) } }, 50) } else { Y(location.hash, true); b(document).scrollTop(aj.position().top) } } } } function af() { b("a.jspHijack").unbind("click.jsp-hijack").removeClass("jspHijack") } function m() { af(); b("a[href^=#]").addClass("jspHijack").bind("click.jsp-hijack", function () { var s = this.href.split("#"), aF; if (s.length > 1) { aF = s[1]; if (aF.length > 0 && V.find("#" + aF).length > 0) { Y("#" + aF, true); return false } } }) } b.extend(N, { reinitialise: function (aF) { aF = b.extend({}, aF, au); an(aF) }, scrollToElement: function (aG, aF, s) { Y(aG, aF, s) }, scrollTo: function (aG, s, aF) { K(aG, aF); J(s, aF) }, scrollToX: function (aF, s) { K(aF, s) }, scrollToY: function (s, aF) { J(s, aF) }, scrollBy: function (aF, s, aG) { N.scrollByX(aF, aG); N.scrollByY(s, aG) }, scrollByX: function (s, aG) { var aF = ay() + s, aH = aF / (Q - ah); T(aH * j, aG) }, scrollByY: function (s, aG) { var aF = aw() + s, aH = aF / (W - v); S(aH * i, aG) }, animate: function (aF, aI, s, aH) { var aG = {}; aG[aI] = s; aF.animate(aG, { duration: au.animateDuration, ease: au.animateEase, queue: false, step: aH }) }, getContentPositionX: function () { return ay() }, getContentPositionY: function () { return aw() }, getIsScrollableH: function () { return aB }, getIsScrollableV: function () { return av }, getContentPane: function () { return V }, scrollToBottom: function (s) { S(i, s) }, hijackInternalLinks: function () { m() } })
		} f = b.extend({}, b.fn.jScrollPane.defaults, f); var e; this.each(function () { var g = b(this), h = g.data("jsp"); if (h) { h.reinitialise(f) } else { h = new d(g, f); g.data("jsp", h) } e = e ? e.add(g) : g }); return e
	}; b.fn.jScrollPane.defaults = { showArrows: false, maintainPosition: true, clickOnTrack: true, autoReinitialise: false, autoReinitialiseDelay: 500, verticalDragMinHeight: 0, verticalDragMaxHeight: 99999, horizontalDragMinWidth: 0, horizontalDragMaxWidth: 99999, animateScroll: false, animateDuration: 300, animateEase: "linear", hijackInternalLinks: false, verticalGutter: 4, horizontalGutter: 4, mouseWheelSpeed: 10, arrowButtonSpeed: 10, arrowRepeatFreq: 100, arrowScrollOnHover: false, trackClickSpeed: 30, trackClickRepeatFreq: 100, verticalArrowPositions: "split", horizontalArrowPositions: "split", enableKeyboardNavigation: true, hideFocus: false}
})(jQuery, this);

/*-----------------------------------------------------------------------------------------------------*/
/* Filename : jquery.mousewheel.js                                                                     */
/* Description : voegt muisondersteuning toe aan fancybox en jscrollpane                               */
/*-----------------------------------------------------------------------------------------------------*/

/*! Copyright (c) 2010 Brandon Aaron (http://brandonaaron.net)
 * Licensed under the MIT License (LICENSE.txt).
 *
 * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
 * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
 * Thanks to: Seamus Leahy for adding deltaX and deltaY
 *
 * Version: 3.0.4
 * 
 * Requires: 1.2.2+
 */

(function($) {

var types = ['DOMMouseScroll', 'mousewheel'];

$.event.special.mousewheel = {
    setup: function() {
        if ( this.addEventListener ) {
            for ( var i=types.length; i; ) {
                this.addEventListener( types[--i], handler, false );
            }
        } else {
            this.onmousewheel = handler;
        }
    },
    
    teardown: function() {
        if ( this.removeEventListener ) {
            for ( var i=types.length; i; ) {
                this.removeEventListener( types[--i], handler, false );
            }
        } else {
            this.onmousewheel = null;
        }
    }
};

$.fn.extend({
    mousewheel: function(fn) {
        return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel");
    },
    
    unmousewheel: function(fn) {
        return this.unbind("mousewheel", fn);
    }
});


function handler(event) {
    var orgEvent = event || window.event, args = [].slice.call( arguments, 1 ), delta = 0, returnValue = true, deltaX = 0, deltaY = 0;
    event = $.event.fix(orgEvent);
    event.type = "mousewheel";
    
    // Old school scrollwheel delta
    if ( event.wheelDelta ) { delta = event.wheelDelta/120; }
    if ( event.detail     ) { delta = -event.detail/3; }
    
    // New school multidimensional scroll (touchpads) deltas
    deltaY = delta;
    
    // Gecko
    if ( orgEvent.axis !== undefined && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) {
        deltaY = 0;
        deltaX = -1*delta;
    }
    
    // Webkit
    if ( orgEvent.wheelDeltaY !== undefined ) { deltaY = orgEvent.wheelDeltaY/120; }
    if ( orgEvent.wheelDeltaX !== undefined ) { deltaX = -1*orgEvent.wheelDeltaX/120; }
    
    // Add event and delta to the front of the arguments
    args.unshift(event, delta, deltaX, deltaY);
    
    return $.event.handle.apply(this, args);
}

})(jQuery);

/*-----------------------------------------------------------------------------------------------------*/
/* Filename : jquery.placehold.js                                                                      */
/* Description : ondersteuning voor HTML5 placeholders in oude browsers. aangepast voor textarea's     */
/*-----------------------------------------------------------------------------------------------------*/

/************************************************************************************
** jQuery Placehold version 0.1
** (cc) Jason Garber (http://sixtwothree.org and http://www.viget.com)
** Licensed under the CC-GNU GPL (http://creativecommons.org/licenses/GPL/2.0/)
*************************************************************************************/
;(function($) {
	$.fn.placehold = function( options ) {
		var opts = $.extend( {}, $.fn.placehold.defaults, options );
		
		return this.each( function() {
			if ( !( "placeholder" in document.createElement( "input" ) ) ) {
				var placeholder_attr = $( this ).attr( "placeholder" );
				
				if ( placeholder_attr ) {
					var elem = $( this )
					
					if(elem.is('textarea')) {
						if(elem.html() == '' || elem.html() == placeholder_attr) {
							elem.addClass( opts.placeholderClassName ).html( placeholder_attr );
						}

						elem.focus( function() {
							if ( elem.html() == placeholder_attr ) {
								elem.removeClass( opts.placeholderClassName ).html( "" );
							}
						});
					
						elem.blur( function() {
							if ( elem.html() == '' ) {
								elem.addClass( opts.placeholderClassName ).html( placeholder_attr );
							}
						});

						elem.closest( "form" ).submit( function() {
							if ( elem.html() == placeholder_attr ) {
								elem.html( "" );
							}
						
							return true;
						});

					} else {

						if ( !elem.val() || elem.val() == placeholder_attr ) {
							elem.addClass( opts.placeholderClassName ).val( placeholder_attr );
						}
					
						elem.focus( function() {
							if ( elem.val() == placeholder_attr ) {
								elem.removeClass( opts.placeholderClassName ).val( "" );
							}
						});
					
						elem.blur( function() {
							if ( !elem.val() ) {
								elem.addClass( opts.placeholderClassName ).val( placeholder_attr );
							}
						});
					
						elem.closest( "form" ).submit( function() {
							if ( elem.val() == placeholder_attr ) {
								elem.val( "" );
							}
						
							return true;
						});
					}
				}
			}
		});
	};
	
	$.fn.placehold.defaults = {
		placeholderClassName: "placeholder"
	};
})(jQuery);

/*-----------------------------------------------------------------------------------------------------*/
/* Filename : jquery.elastic.js                                                                        */
/* Description : extra effect for jQuery animaties (samen shoppen)                                     */
/*-----------------------------------------------------------------------------------------------------*/

(function(jQuery){jQuery.fn.extend({elastic:function(){var mimics=['paddingTop','paddingRight','paddingBottom','paddingLeft','fontSize','lineHeight','fontFamily','width','fontWeight'];return this.each(function(){if(this.type!='textarea'){return false;}
var $textarea=jQuery(this),$twin=jQuery('<div />').css({'position':'absolute','display':'none','word-wrap':'break-word'}),lineHeight=parseInt($textarea.css('line-height'),10)||parseInt($textarea.css('font-size'),'10'),minheight=parseInt($textarea.css('height'),10)||lineHeight*3,maxheight=parseInt($textarea.css('max-height'),10)||Number.MAX_VALUE,goalheight=0,i=0;if(maxheight<0){maxheight=Number.MAX_VALUE;}
$twin.appendTo($textarea.parent());var i=mimics.length;while(i--){$twin.css(mimics[i].toString(),$textarea.css(mimics[i].toString()));}
function setHeightAndOverflow(height,overflow){curratedHeight=Math.floor(parseInt(height,10));if($textarea.height()!=curratedHeight){$textarea.css({'height':curratedHeight+'px','overflow':overflow});}}
function update(){var textareaContent=$textarea.val().replace(/&/g,'&amp;').replace(/  /g,'&nbsp;').replace(/<|>/g,'&gt;').replace(/\n/g,'<br />');var twinContent=$twin.html();if(textareaContent+'&nbsp;'!=twinContent){$twin.html(textareaContent+'&nbsp;');if(Math.abs($twin.height()+lineHeight-$textarea.height())>3){var goalheight=$twin.height()+lineHeight;if(goalheight>=maxheight){setHeightAndOverflow(maxheight,'auto');}else if(goalheight<=minheight){setHeightAndOverflow(minheight,'hidden');}else{setHeightAndOverflow(goalheight,'hidden');}}}}
$textarea.css({'overflow':'hidden'});$textarea.keyup(function(){update();});$textarea.live('input paste',function(e){setTimeout(update,250);});update();});}});})(jQuery);

/*--------------------------------------------------------------------------------------------------*/
/* Filename    : jquery.toTop.js                                                                    */
/* Description : jQuery dropin plugin om een 'scroll To Top' knop in te voegen                      */
/*--------------------------------------------------------------------------------------------------*/

/** 
Gebruik: 

<script>
$(document).ready(function() {
	$.toTop();
	
	// OF //

	var toTopOptions = {
		anchorName: '',					// Ankernaam, zonder hashmark
		alt: '',						// Alt tekst bij afbeeldingen
		appentTo: '',					// jQuery selector waar de link aan toe wordt gevoegd
		css: {},						// CSS van de placeholder div
		id: '',							// ID van de link
		image: ''						// Afbeelding waar opgeklikt wordt
		scrollSpeed: 200				// 'fast', 'slow' of het aantal miliseconden dat de scroll animatie duurd
	}
	$.toTop( toTopOptions );
}

</script>

*/

(function( $ ) {
	jQuery.toTop = function( options ) {
	
		options = $.extend( {}, jQuery.toTop.defaults, options );
		options.css = $.extend( {}, jQuery.toTop.defaults.css, options.css );

		$anchor = $( '<a />', {
			name: options.anchorName
		}).prependTo( 'body' );
		
		var $divTag = $( '<div/>', {
				css: options.css,
				id: options.id
			}
		).appendTo( 'body' );
		
		$toTopLink = $( '<a />', {
			href: '#' + options.anchorName
		}).appendTo($divTag);
		
		$image = $( '<img />', {
			alt: options.alt,
			src: options.image
		})
		.appendTo( $toTopLink )
		.click ( function() {
			$( 'body' ).animate(
				{
					scrollTop : 0
				},
				options.scrollSpeed 
			);		
		}) ;
		
		

		$( window ).scroll( function( event ) {
			if ( $( document ).scrollTop() == 0 ) {
				$divTag.slideUp();
			} else {
				$divTag.slideDown();
			}
		});
		
	}
	
	jQuery.toTop.defaults = {
		anchorName: 'top',
		alt: 'Terug naar boven',
		appentTo: 'body',
		css: {
			background: '#FFF',
			border: '1px solid #CCC',
			bottom: '30px',
			display: 'none',
			position: 'fixed',
			zIndex: 900
		},
		id: 'toTop',
		image: '/img/top.gif',
		scrollSpeed: 200
	};	
	
})(jQuery);

/*-----------------------------------------------------------------------------------------------------*/
/* Filename : jquery.weh.pSlider.js - NB start en eindig commentregel met commentaarteken              */
/* Description : plugin voor productcaroussellen. werkt op basis van jquery-tools                      */
/*-----------------------------------------------------------------------------------------------------*/

;(function($) {
	$.fn.pSlider = function(options) {
		var opts = $.extend({}, $.fn.pSlider.defaults, options);

		return this.each(function() {
			var $elm = $(this), $elmSlider = $(this).find('.pSlider'), $item = $(this).find('.pSliderItem');
			var itemCount = $item.length,
				itemWidth = $item.outerWidth(true),
				itemsWidth = (itemWidth * itemCount),
				size = Math.floor($elmSlider.width() / $item.outerWidth());
			opts.itemCount = size;

			$elm.find('.pSliderItems').css({ width: '9999em' });
			if (itemsWidth > $elmSlider.width()) {
				$elm.prepend('<a class="pSliderPrev disabled">&lt;</a>').append('<a class="pSliderNext">&lt;</a>');
				$elmSlider.scrollable(opts);			
			}
		});
	};

	$.fn.pSlider.defaults = {
		disabledClass: 'disabled',
		items: '.pSliderItem',
		next: '.pSliderNext',
		prev: '.pSliderPrev'
	};

})(jQuery);

/*-----------------------------------------------------------------------------------------------------*/
/* Filename : jquery.flash.js - NB start en eindig commentregel met commentaarteken                    */
/* Description : Unobtrusive Flash embed met jQuery                                                    */
/*-----------------------------------------------------------------------------------------------------*/

/**
 * Flash (http://jquery.lukelutman.com/plugins/flash)
 * A jQuery plugin for embedding Flash movies.
 * 
 * Version 1.0
 * November 9th, 2006
 *
 * Copyright (c) 2006 Luke Lutman (http://www.lukelutman.com)
 * Dual licensed under the MIT and GPL licenses.
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.opensource.org/licenses/gpl-license.php
 * 
 * Inspired by:
 * SWFObject (http://blog.deconcept.com/swfobject/)
 * UFO (http://www.bobbyvandersluis.com/ufo/)
 * sIFR (http://www.mikeindustries.com/sifr/)
 * 
 * IMPORTANT: 
 * The packed version of jQuery breaks ActiveX control
 * activation in Internet Explorer. Use JSMin to minifiy
 * jQuery (see: http://jquery.lukelutman.com/plugins/flash#activex).
 *
 **/ 
;(function(){
	
var $$;

/**
 * 
 * @desc Replace matching elements with a flash movie.
 * @author Luke Lutman
 * @version 1.0.1
 *
 * @name flash
 * @param Hash htmlOptions Options for the embed/object tag.
 * @param Hash pluginOptions Options for detecting/updating the Flash plugin (optional).
 * @param Function replace Custom block called for each matched element if flash is installed (optional).
 * @param Function update Custom block called for each matched if flash isn't installed (optional).
 * @type jQuery
 *
 * @cat plugins/flash
 * 
 * @example $('#hello').flash({ src: 'hello.swf' });
 * @desc Embed a Flash movie.
 *
 * @example $('#hello').flash({ src: 'hello.swf' }, { version: 8 });
 * @desc Embed a Flash 8 movie.
 *
 * @example $('#hello').flash({ src: 'hello.swf' }, { expressInstall: true });
 * @desc Embed a Flash movie using Express Install if flash isn't installed.
 *
 * @example $('#hello').flash({ src: 'hello.swf' }, { update: false });
 * @desc Embed a Flash movie, don't show an update message if Flash isn't installed.
 *
**/
$$ = jQuery.fn.flash = function(htmlOptions, pluginOptions, replace, update) {
	
	// Set the default block.
	var block = replace || $$.replace;
	
	// Merge the default and passed plugin options.
	pluginOptions = $$.copy($$.pluginOptions, pluginOptions);
	
	// Detect Flash.
	if(!$$.hasFlash(pluginOptions.version)) {
		// Use Express Install (if specified and Flash plugin 6,0,65 or higher is installed).
		if(pluginOptions.expressInstall && $$.hasFlash(6,0,65)) {
			// Add the necessary flashvars (merged later).
			var expressInstallOptions = {
				flashvars: {  	
					MMredirectURL: location,
					MMplayerType: 'PlugIn',
					MMdoctitle: jQuery('title').text() 
				}					
			};
		} else {
			// The required version of flash isn't installed.
			// Express Install is turned off, or flash 6,0,65 isn't installed.
			// Update is turned off.
			// Return without doing anything.
			return this;
		}
	}
	
	// Merge the default, express install and passed html options.
	htmlOptions = $$.copy($$.htmlOptions, expressInstallOptions, htmlOptions);
	
	// Invoke $block (with a copy of the merged html options) for each element.
	return this.each(function(){
		block.call(this, $$.copy(htmlOptions));
	});
	
};
/**
 *
 * @name flash.copy
 * @desc Copy an arbitrary number of objects into a new object.
 * @type Object
 * 
 * @example $$.copy({ foo: 1 }, { bar: 2 });
 * @result { foo: 1, bar: 2 };
 *
**/
$$.copy = function() {
	var options = {}, flashvars = {};
	for(var i = 0; i < arguments.length; i++) {
		var arg = arguments[i];
		if(arg == undefined) continue;
		jQuery.extend(options, arg);
		// don't clobber one flash vars object with another
		// merge them instead
		if(arg.flashvars == undefined) continue;
		jQuery.extend(flashvars, arg.flashvars);
	}
	options.flashvars = flashvars;
	return options;
};
/*
 * @name flash.hasFlash
 * @desc Check if a specific version of the Flash plugin is installed
 * @type Boolean
 *
**/
$$.hasFlash = function() {
	// look for a flag in the query string to bypass flash detection
	if(/hasFlash\=true/.test(location)) return true;
	if(/hasFlash\=false/.test(location)) return false;
	var pv = $$.hasFlash.playerVersion().match(/\d+/g);
	var rv = String([arguments[0], arguments[1], arguments[2]]).match(/\d+/g) || String($$.pluginOptions.version).match(/\d+/g);
	for(var i = 0; i < 3; i++) {
		pv[i] = parseInt(pv[i] || 0);
		rv[i] = parseInt(rv[i] || 0);
		// player is less than required
		if(pv[i] < rv[i]) return false;
		// player is greater than required
		if(pv[i] > rv[i]) return true;
	}
	// major version, minor version and revision match exactly
	return true;
};
/**
 *
 * @name flash.hasFlash.playerVersion
 * @desc Get the version of the installed Flash plugin.
 * @type String
 *
**/
$$.hasFlash.playerVersion = function() {
	// ie
	try {
		try {
			// avoid fp6 minor version lookup issues
			// see: http://blog.deconcept.com/2006/01/11/getvariable-setvariable-crash-internet-explorer-flash-6/
			var axo = new ActiveXObject('ShockwaveFlash.ShockwaveFlash.6');
			try { axo.AllowScriptAccess = 'always';	} 
			catch(e) { return '6,0,0'; }				
		} catch(e) {}
		return new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version').replace(/\D+/g, ',').match(/^,?(.+),?$/)[1];
	// other browsers
	} catch(e) {
		try {
			if(navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin){
				return (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]).description.replace(/\D+/g, ",").match(/^,?(.+),?$/)[1];
			}
		} catch(e) {}		
	}
	return '0,0,0';
};
/**
 *
 * @name flash.htmlOptions
 * @desc The default set of options for the object or embed tag.
 *
**/
$$.htmlOptions = {
	height: 240,
	flashvars: {},
	pluginspage: 'http://www.adobe.com/go/getflashplayer',
	src: '#',
	type: 'application/x-shockwave-flash',
	width: 320		
};
/**
 *
 * @name flash.pluginOptions
 * @desc The default set of options for checking/updating the flash Plugin.
 *
**/
$$.pluginOptions = {
	expressInstall: false,
	update: true,
	version: '6.0.65'
};
/**
 *
 * @name flash.replace
 * @desc The default method for replacing an element with a Flash movie.
 *
**/
$$.replace = function(htmlOptions) {
	this.innerHTML = '<div class="alt">'+this.innerHTML+'</div>';
	jQuery(this)
		.addClass('flash-replaced')
		.prepend($$.transform(htmlOptions));
};
/**
 *
 * @desc Convert a hash of html options to a string of attributes, using Function.apply(). 
 * @example toAttributeString.apply(htmlOptions)
 * @result foo="bar" foo="bar"
 *
**/
function toAttributeString() {
	var s = '';
	for(var key in this)
		if(typeof this[key] != 'function')
			s += key+'="'+this[key]+'" ';
	return s;		
};
/**

 *
 * @desc Convert a hash of flashvars to a url-encoded string, using Function.apply(). 
 * @example toFlashvarsString.apply(flashvarsObject)
 * @result foo=bar&foo=bar
 *
**/
function toFlashvarsString() {
	var s = '';
	for(var key in this)
		if(typeof this[key] != 'function')
			s += key+'='+encodeURIComponent(this[key])+'&';
	return s.replace(/&$/, '');		
};
/**
 *
 * @name flash.transform
 * @desc Transform a set of html options into an embed tag.
 * @type String 
 *
 * @example $$.transform(htmlOptions)
 * @result <embed src="foo.swf" ... />
 *
 * Note: The embed tag is NOT standards-compliant, but it 
 * works in all current browsers. flash.transform can be
 * overwritten with a custom function to generate more 
 * standards-compliant markup.
 *
**/
$$.transform = function(htmlOptions) {
	htmlOptions.toString = toAttributeString;
	if(htmlOptions.flashvars) htmlOptions.flashvars.toString = toFlashvarsString;
	return '<embed ' + String(htmlOptions) + '/>';		
};

/**
 *
 * Flash Player 9 Fix (http://blog.deconcept.com/2006/07/28/swfobject-143-released/)
 *
**/
if (window.attachEvent) {
	window.attachEvent("onbeforeunload", function(){
		__flash_unloadHandler = function() {};
		__flash_savedUnloadHandler = function() {};
	});
}
	
})();

/*-----------------------------------------------------------------------------------------------------*/
/* Filename : jquery.LocalScroll.min.js                                                                */
/* Description : Animated scrolling navigation, using anchors.                                         */
/*-----------------------------------------------------------------------------------------------------*/ 
/* jQuery.LocalScroll - Animated scrolling navigation, using anchors.
 * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
 * Dual licensed under MIT and GPL.
 * Date: 3/11/2009
 * @author Ariel Flesler
 * @version 1.2.7
 */
;(function($){var l=location.href.replace(/#.*/,'');var g=$.localScroll=function(a){$('body').localScroll(a)};g.defaults={duration:1e3,axis:'y',event:'click',stop:true,target:window,reset:true};g.hash=function(a){if(location.hash){a=$.extend({},g.defaults,a);a.hash=false;if(a.reset){var e=a.duration;delete a.duration;$(a.target).scrollTo(0,a);a.duration=e}i(0,location,a)}};$.fn.localScroll=function(b){b=$.extend({},g.defaults,b);return b.lazy?this.bind(b.event,function(a){var e=$([a.target,a.target.parentNode]).filter(d)[0];if(e)i(a,e,b)}):this.find('a,area').filter(d).bind(b.event,function(a){i(a,this,b)}).end().end();function d(){return!!this.href&&!!this.hash&&this.href.replace(this.hash,'')==l&&(!b.filter||$(this).is(b.filter))}};function i(a,e,b){var d=e.hash.slice(1),f=document.getElementById(d)||document.getElementsByName(d)[0];if(!f)return;if(a)a.preventDefault();var h=$(b.target);if(b.lock&&h.is(':animated')||b.onBefore&&b.onBefore.call(b,a,f,h)===false)return;if(b.stop)h.stop(true);if(b.hash){var j=f.id==d?'id':'name',k=$('<a> </a>').attr(j,d).css({position:'absolute',top:$(window).scrollTop(),left:$(window).scrollLeft()});f[j]='';$('body').prepend(k);location=e.hash;k.remove();f[j]=d}h.scrollTo(f,b).trigger('notify.serialScroll',[f])}})(jQuery);

/*-----------------------------------------------------------------------------------------------------*/
/* Filename : jquery.ScrollTo-1.4.2.min.js                                                             */
/* Description : Easy element scrolling using jQuery                                                   */
/*-----------------------------------------------------------------------------------------------------*/
/*
 * jQuery.ScrollTo - Easy element scrolling using jQuery.
 * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
 * Dual licensed under MIT and GPL.
 * Date: 5/25/2009
 * @author Ariel Flesler
 * @version 1.4.2
 *
 * http://flesler.blogspot.com/2007/10/jqueryscrollto.html
 */
;(function(d){var k=d.scrollTo=function(a,i,e){d(window).scrollTo(a,i,e)};k.defaults={axis:'xy',duration:parseFloat(d.fn.jquery)>=1.3?0:1};k.window=function(a){return d(window)._scrollable()};d.fn._scrollable=function(){return this.map(function(){var a=this,i=!a.nodeName||d.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!i)return a;var e=(a.contentWindow||a).document||a.ownerDocument||a;return d.browser.safari||e.compatMode=='BackCompat'?e.body:e.documentElement})};d.fn.scrollTo=function(n,j,b){if(typeof j=='object'){b=j;j=0}if(typeof b=='function')b={onAfter:b};if(n=='max')n=9e9;b=d.extend({},k.defaults,b);j=j||b.speed||b.duration;b.queue=b.queue&&b.axis.length>1;if(b.queue)j/=2;b.offset=p(b.offset);b.over=p(b.over);return this._scrollable().each(function(){var q=this,r=d(q),f=n,s,g={},u=r.is('html,body');switch(typeof f){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)){f=p(f);break}f=d(f,this);case'object':if(f.is||f.style)s=(f=d(f)).offset()}d.each(b.axis.split(''),function(a,i){var e=i=='x'?'Left':'Top',h=e.toLowerCase(),c='scroll'+e,l=q[c],m=k.max(q,i);if(s){g[c]=s[h]+(u?0:l-r.offset()[h]);if(b.margin){g[c]-=parseInt(f.css('margin'+e))||0;g[c]-=parseInt(f.css('border'+e+'Width'))||0}g[c]+=b.offset[h]||0;if(b.over[h])g[c]+=f[i=='x'?'width':'height']()*b.over[h]}else{var o=f[h];g[c]=o.slice&&o.slice(-1)=='%'?parseFloat(o)/100*m:o}if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],m);if(!a&&b.queue){if(l!=g[c])t(b.onAfterFirst);delete g[c]}});t(b.onAfter);function t(a){r.animate(g,j,b.easing,a&&function(){a.call(this,n,b)})}}).end()};k.max=function(a,i){var e=i=='x'?'Width':'Height',h='scroll'+e;if(!d(a).is('html,body'))return a[h]-d(a)[e.toLowerCase()]();var c='client'+e,l=a.ownerDocument.documentElement,m=a.ownerDocument.body;return Math.max(l[h],m[h])-Math.min(l[c],m[c])};function p(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery);

/*-----------------------------------------------------------------------------------------------------*/
/* Filename    : jquery.tipsy.js                                                                       */
/* Description : facebook style tooltips for jquery (toolbar, reviews)                                 */
/*-----------------------------------------------------------------------------------------------------*/
// tipsy, facebook style tooltips for jquery
// version 1.0.0a
// (c) 2008-2010 jason frame [jason@onehackoranother.com]
// released under the MIT license

(function ($) {

	function maybeCall(thing, ctx) {
		return (typeof thing == 'function') ? (thing.call(ctx)) : thing;
	};

	function Tipsy(element, options) {
		this.$element = $(element);
		this.options = options;
		this.enabled = true;
		this.fixTitle();
	};

	Tipsy.prototype = {
		show: function () {
			var title = this.getTitle();
			if (title && this.enabled) {
				var $tip = this.tip();

				$tip.find('.tipsy-inner')[this.options.html ? 'html' : 'text'](title);
				$tip[0].className = 'tipsy'; // reset classname in case of dynamic gravity
				$tip.remove().css({ top: 0, left: 0, visibility: 'hidden', display: 'block' }).prependTo(document.body);

				var pos = $.extend({}, this.$element.offset(), {
					width: this.$element[0].offsetWidth,
					height: this.$element[0].offsetHeight
				});

				var actualWidth = $tip[0].offsetWidth,
                    actualHeight = $tip[0].offsetHeight,
                    gravity = maybeCall(this.options.gravity, this.$element[0]);

				var tp;
				switch (gravity.charAt(0)) {
					case 'n':
						tp = { top: pos.top + pos.height + this.options.offset, left: pos.left + pos.width / 2 - actualWidth / 2 };
						break;
					case 's':
						tp = { top: pos.top - actualHeight - this.options.offset, left: pos.left + pos.width / 2 - actualWidth / 2 };
						break;
					case 'e':
						tp = { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth - this.options.offset };
						break;
					case 'w':
						tp = { top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width + this.options.offset };
						break;
				}

				if (gravity.length == 2) {
					if (gravity.charAt(1) == 'w') {
						tp.left = pos.left + pos.width / 2 - 15;
					} else {
						tp.left = pos.left + pos.width / 2 - actualWidth + 15;
					}
				}

				$tip.css(tp).addClass('tipsy-' + gravity);
				$tip.find('.tipsy-arrow')[0].className = 'tipsy-arrow tipsy-arrow-' + gravity.charAt(0);
				if (this.options.className) {
					$tip.addClass(maybeCall(this.options.className, this.$element[0]));
				}

				if (this.options.fade) {
					$tip.stop().css({ opacity: 0, display: 'block', visibility: 'visible' }).animate({ opacity: this.options.opacity });
				} else {
					$tip.css({ visibility: 'visible', opacity: this.options.opacity });
				}
			}
		},

		hide: function () {
			if (this.options.fade) {
				this.tip().stop().fadeOut(function () { $(this).remove(); });
			} else {
				this.tip().remove();
			}
		},

		fixTitle: function () {
			var $e = this.$element;
			if ($e.attr('title') || typeof ($e.attr('original-title')) != 'string') {
				$e.attr('original-title', $e.attr('title') || '').removeAttr('title');
			}
		},

		getTitle: function () {
			var title, $e = this.$element, o = this.options;
			this.fixTitle();
			var title, o = this.options;
			if (typeof o.title == 'string') {
				title = $e.attr(o.title == 'title' ? 'original-title' : o.title);
			} else if (typeof o.title == 'function') {
				title = o.title.call($e[0]);
			}
			title = ('' + title).replace(/(^\s*|\s*$)/, "");
			return title || o.fallback;
		},

		tip: function () {
			if (!this.$tip) {
				this.$tip = $('<div class="tipsy"></div>').html('<div class="tipsy-arrow"></div><div class="tipsy-inner"></div>');
			}
			return this.$tip;
		},

		validate: function () {
			if (!this.$element[0].parentNode) {
				this.hide();
				this.$element = null;
				this.options = null;
			}
		},

		enable: function () { this.enabled = true; },
		disable: function () { this.enabled = false; },
		toggleEnabled: function () { this.enabled = !this.enabled; }
	};

	$.fn.tipsy = function (options) {

		if (options === true) {
			return this.data('tipsy');
		} else if (typeof options == 'string') {
			var tipsy = this.data('tipsy');
			if (tipsy) tipsy[options]();
			return this;
		}

		options = $.extend({}, $.fn.tipsy.defaults, options);

		function get(ele) {
			var tipsy = $.data(ele, 'tipsy');
			if (!tipsy) {
				tipsy = new Tipsy(ele, $.fn.tipsy.elementOptions(ele, options));
				$.data(ele, 'tipsy', tipsy);
			}
			return tipsy;
		}

		function enter() {
			var tipsy = get(this);
			tipsy.hoverState = 'in';
			if (options.delayIn == 0) {
				tipsy.show();
			} else {
				tipsy.fixTitle();
				setTimeout(function () { if (tipsy.hoverState == 'in') tipsy.show(); }, options.delayIn);
			}
		};

		function leave() {
			var tipsy = get(this);
			tipsy.hoverState = 'out';
			if (options.delayOut == 0) {
				tipsy.hide();
			} else {
				setTimeout(function () { if (tipsy.hoverState == 'out') tipsy.hide(); }, options.delayOut);
			}
		};

		if (!options.live) this.each(function () { get(this); });

		if (options.trigger != 'manual') {
			var binder = options.live ? 'live' : 'bind',
                eventIn = options.trigger == 'hover' ? 'mouseenter' : 'focus',
                eventOut = options.trigger == 'hover' ? 'mouseleave' : 'blur';
			this[binder](eventIn, enter)[binder](eventOut, leave);
		}

		return this;

	};

	$.fn.tipsy.defaults = {
		className: null,
		delayIn: 0,
		delayOut: 0,
		fade: false,
		fallback: '',
		gravity: 'n',
		html: false,
		live: false,
		offset: 0,
		opacity: 0.8,
		title: 'title',
		trigger: 'hover'
	};

	// Overwrite this method to provide options on a per-element basis.
	// For example, you could store the gravity in a 'tipsy-gravity' attribute:
	// return $.extend({}, options, {gravity: $(ele).attr('tipsy-gravity') || 'n' });
	// (remember - do not modify 'options' in place!)
	$.fn.tipsy.elementOptions = function (ele, options) {
		return $.metadata ? $.extend({}, options, $(ele).metadata()) : options;
	};

	$.fn.tipsy.autoNS = function () {
		return $(this).offset().top > ($(document).scrollTop() + $(window).height() / 2) ? 's' : 'n';
	};

	$.fn.tipsy.autoWE = function () {
		return $(this).offset().left > ($(document).scrollLeft() + $(window).width() / 2) ? 'e' : 'w';
	};

	/**
	* yields a closure of the supplied parameters, producing a function that takes
	* no arguments and is suitable for use as an autogravity function like so:
	*
	* @param margin (int) - distance from the viewable region edge that an
	*        element should be before setting its tooltip's gravity to be away
	*        from that edge.
	* @param prefer (string, e.g. 'n', 'sw', 'w') - the direction to prefer
	*        if there are no viewable region edges effecting the tooltip's
	*        gravity. It will try to vary from this minimally, for example,
	*        if 'sw' is preferred and an element is near the right viewable 
	*        region edge, but not the top edge, it will set the gravity for
	*        that element's tooltip to be 'se', preserving the southern
	*        component.
	*/
	$.fn.tipsy.autoBounds = function (margin, prefer) {
		return function () {
			var dir = { ns: prefer[0], ew: (prefer.length > 1 ? prefer[1] : false) },
			    boundTop = $(document).scrollTop() + margin,
			    boundLeft = $(document).scrollLeft() + margin,
			    $this = $(this);

			if ($this.offset().top < boundTop) dir.ns = 'n';
			if ($this.offset().left < boundLeft) dir.ew = 'w';
			if ($(window).width() + $(document).scrollLeft() - $this.offset().left < margin) dir.ew = 'e';
			if ($(window).height() + $(document).scrollTop() - $this.offset().top < margin) dir.ns = 's';

			return dir.ns + (dir.ew ? dir.ew : '');
		}
	};

})(jQuery);



/*-----------------------------------------------------------------------------------------------------*/
/* Filename : jquery.periodicalupdater.js                                                              */
/* Description : jQuery plugin for timed, decaying ajax calls                                          */
/*-----------------------------------------------------------------------------------------------------*/ 
/**
 * PeriodicalUpdater - jQuery plugin for timed, decaying ajax calls
 *
 * http://www.360innovate.co.uk/blog/2009/03/periodicalupdater-for-jquery/
 * http://enfranchisedmind.com/blog/posts/jquery-periodicalupdater-ajax-polling/
 *
 * Copyright (c) 2009 by the following:
 *  Frank White (http://customcode.info)
 *  Robert Fischer (http://smokejumperit.com)
 *  360innovate (http://www.360innovate.co.uk)
 *
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 *
 * Version: 3.0
 *
 */

(function($) {
    var pu_log = function(msg) {
        try {
            //console.log(msg);
        } catch (err) { }
    }

    // Now back to our regularly scheduled work
    $.PeriodicalUpdater = function(url, options, callback) {
        var settings = jQuery.extend(true, {
            url: url, 				// URL of ajax request
            cache: false, 	  // By default, don't allow caching
            method: 'GET', 	// method; get or post
            data: '', 			  // array of values to be passed to the page - e.g. {name: "John", greeting: "hello"}
            minTimeout: 1000, // starting value for the timeout in milliseconds
            maxTimeout: 8000, // maximum length of time between requests
            multiplier: 2, 	// if set to 2, timerInterval will double each time the response hasn't changed (up to maxTimeout)
            maxCalls: 0,      // maximum number of calls. 0 = no limit.
            autoStop: 0       // automatically stop requests after this many returns of the same data. 0 = disabled
        }, options);

        // set some initial values, then begin
        var timer = null;
        var timerInterval = settings.minTimeout;
        var maxCalls = settings.maxCalls;
        var autoStop = settings.autoStop;
        var calls = 0;
        var noChange = 0;

        var reset_timer = function(interval) {
            if (timer != null) {
                clearTimeout(timer);
            }
            timerInterval = interval;
            pu_log('resetting timer to ' + timerInterval + '.');
            timer = setTimeout(getdata, timerInterval);
        }

        // Function to boost the timer
        var boostPeriod = function() {
            if (settings.multiplier > 1) {
                before = timerInterval;
                timerInterval = timerInterval * settings.multiplier;

                if (timerInterval > settings.maxTimeout) {
                    timerInterval = settings.maxTimeout;
                }
                after = timerInterval;
                pu_log('adjusting timer from ' + before + ' to ' + after + '.');
            }
            reset_timer(timerInterval);
        };

        // Construct the settings for $.ajax based on settings
        var ajaxSettings = jQuery.extend(true, {}, settings);
        if (settings.type && !ajaxSettings.dataType) ajaxSettings.dataType = settings.type;
        if (settings.sendData) ajaxSettings.data = settings.sendData;
        ajaxSettings.type = settings.method; // 'type' is used internally for jQuery.  Who knew?
        ajaxSettings.ifModified = true;

        // Create the function to get data
        // TODO It'd be nice to do the options.data check once (a la boostPeriod)
        function getdata() {
            var toSend = jQuery.extend(true, {}, ajaxSettings); // jQuery screws with what you pass in
            if (typeof (options.data) == 'function') {
                toSend.data = options.data();
                if (toSend.data) {
                    // Handle transformations (only strings and objects are understood)
                    if (typeof (toSend.data) == "number") {
                        toSend.data = toSend.data.toString();
                    }
                }
            }

            if (maxCalls == 0) {
                $.ajax(toSend);
            } else if (maxCalls > 0 && calls < maxCalls) {
                $.ajax(toSend);
                calls++;
            }
        }

        // Implement the tricky behind logic
        var remoteData = null;
        var prevData = null;

        ajaxSettings.success = function(data) {
            pu_log("Successful run! (In 'success')");
            remoteData = data;
            timerInterval = settings.minTimeout;
        };

        ajaxSettings.complete = function(xhr, success) {
            //pu_log("Status of call: " + success + " (In 'complete')");
            if (maxCalls == -1) return;
            if (success == "success" || success == "notmodified") {
                var rawData = $.trim(xhr.responseText);
                if (rawData == 'STOP_AJAX_CALLS') {
                    maxCalls = -1;
                    return;
                }
                if (prevData == rawData) {
                    if (autoStop > 0) {
                        noChange++;
                        if (noChange == autoStop) {
                            maxCalls = -1;
                            return;
                        }
                    }
                    boostPeriod();
                } else {
                    noChange = 0;
                    reset_timer(settings.minTimeout);
                    prevData = rawData;
                    if (remoteData == null) remoteData = rawData;
                    //if(ajaxSettings.dataType == 'json') {
                    //  remoteData = JSON.parse(remoteData);
                    //}
                    if (settings.success) { settings.success(remoteData, success, xhr); }
                    if (callback) callback(remoteData, success, xhr);
                }
            }
            remoteData = null;
        }


        ajaxSettings.error = function(xhr, textStatus) {
            //pu_log("Error message: " + textStatus + " (In 'error')");
            if (textStatus == "notmodified") {
                boostPeriod();
            } else {
                prevData = null;
                reset_timer(settings.minTimeout);
            }
            if (settings.error) { settings.error(xhr, textStatus); }
        };

        // Make the first call
        $(function() { reset_timer(timerInterval); });

        var handle = {
            stop: function() {
                maxCalls = -1;
                return;
            }
        };
        return handle;
    };
})(jQuery);


/*-----------------------------------------------------------------------------------------------------*/
/* Filename : jquery.ba-hashchange.min.js                                                              */
/* Description : compatibility library voor hashchange (IE6, IE7)                                      */
/*-----------------------------------------------------------------------------------------------------*/
/*
* jQuery hashchange event - v1.3 - 7/21/2010
* http://benalman.com/projects/jquery-hashchange-plugin/
* 
* Copyright (c) 2010 "Cowboy" Ben Alman
* Dual licensed under the MIT and GPL licenses.
* http://benalman.com/about/license/
*/
(function ($, e, b) { var c = "hashchange", h = document, f, g = $.event.special, i = h.documentMode, d = "on" + c in e && (i === b || i > 7); function a(j) { j = j || location.href; return "#" + j.replace(/^[^#]*#?(.*)$/, "$1") } $.fn[c] = function (j) { return j ? this.bind(c, j) : this.trigger(c) }; $.fn[c].delay = 50; g[c] = $.extend(g[c], { setup: function () { if (d) { return false } $(f.start) }, teardown: function () { if (d) { return false } $(f.stop) } }); f = (function () { var j = {}, p, m = a(), k = function (q) { return q }, l = k, o = k; j.start = function () { p || n() }; j.stop = function () { p && clearTimeout(p); p = b }; function n() { var r = a(), q = o(m); if (r !== m) { l(m = r, q); $(e).trigger(c) } else { if (q !== m) { location.href = location.href.replace(/#.*/, "") + q } } p = setTimeout(n, $.fn[c].delay) } $.browser.msie && !d && (function () { var q, r; j.start = function () { if (!q) { r = $.fn[c].src; r = r && r + a(); q = $('<iframe tabindex="-1" title="empty"/>').hide().one("load", function () { r || l(a()); n() }).attr("src", r || "javascript:0").insertAfter("body")[0].contentWindow; h.onpropertychange = function () { try { if (event.propertyName === "title") { q.document.title = h.title } } catch (s) { } } } }; j.stop = k; o = function () { return a(q.location.href) }; l = function (v, s) { var u = q.document, t = $.fn[c].domain; if (v !== s) { u.title = h.title; u.open(); t && u.write('<script>document.domain="' + t + '"<\/script>'); u.close(); q.location.hash = v } } })(); return j })() })(jQuery, this);

/*-----------------------------------------------------------------------------------------------------*/
/* Filename : jquery.maphilight.js                                                                     */
/* Description : hotspots in blokken                                                                   */
/*-----------------------------------------------------------------------------------------------------*/
(function ($) {
var has_VML, create_canvas_for, add_shape_to, clear_canvas, shape_from_area,
canvas_style, fader, hex_to_decimal, css3color, is_image_loaded, options_from_area;

has_VML = document.namespaces;
has_canvas = !!document.createElement('canvas').getContext;

if (!(has_canvas || has_VML)) {
    $.fn.maphilight = function () { return this; };
    return;
}

if (has_canvas) {
    fader = function (element, opacity, interval) {
      	if (opacity <= 1) {
      		element.style.opacity = opacity;
      		window.setTimeout(fader, 10, element, opacity + 0.1, 10);
      	}
    };

    hex_to_decimal = function (hex) {
      	return Math.max(0, Math.min(parseInt(hex, 16), 255));
    };
    css3color = function (color, opacity) {
      	return 'rgba(' + hex_to_decimal(color.substr(0, 2)) + ',' + hex_to_decimal(color.substr(2, 2)) + ',' + hex_to_decimal(color.substr(4, 2)) + ',' + opacity + ')';
    };
    create_canvas_for = function (img) {
      	var c = $('<canvas style="width:' + img.width + 'px;height:' + img.height + 'px;"></canvas>').get(0);
      	c.getContext("2d").clearRect(0, 0, c.width, c.height);
      	return c;
    };
    add_shape_to = function (canvas, shape, coords, options, name) {
      	var i, context = canvas.getContext('2d');
      	context.beginPath();
      	if (shape == 'rect') {
      		context.rect(coords[0], coords[1], coords[2] - coords[0], coords[3] - coords[1]);
      	} else if (shape == 'poly') {
      		context.moveTo(coords[0], coords[1]);
      		for (i = 2; i < coords.length; i += 2) {
      			context.lineTo(coords[i], coords[i + 1]);
      		}
      	} else if (shape == 'circ') {
      		context.arc(coords[0], coords[1], coords[2], 0, Math.PI * 2, false);
      	}
      	context.closePath();
      	if (options.fill) {
      		context.fillStyle = css3color(options.fillColor, options.fillOpacity);
      		context.fill();
      	}
      	if (options.stroke) {
      		context.strokeStyle = css3color(options.strokeColor, options.strokeOpacity);
      		context.lineWidth = options.strokeWidth;
      		context.stroke();
      	}
      	if (options.fade) {
      		fader(canvas, 0);
      	}
    };
    clear_canvas = function (canvas, area) {
      	canvas.getContext('2d').clearRect(0, 0, canvas.width, canvas.height);
    };
} else {   // ie executes this code
    create_canvas_for = function (img) {
      	return $('<var style="zoom:1;overflow:hidden;display:block;width:' + img.width + 'px;height:' + img.height + 'px;"></var>').get(0);
    };
    add_shape_to = function (canvas, shape, coords, options, name) {
      	var fill, stroke, opacity, e;
      	fill = '<v:fill color="#' + options.fillColor + '" opacity="' + (options.fill ? options.fillOpacity : 0) + '" />';
      	stroke = (options.stroke ? 'strokeweight="' + options.strokeWidth + '" stroked="t" strokecolor="#' + options.strokeColor + '"' : 'stroked="f"');
      	opacity = '<v:stroke opacity="' + options.strokeOpacity + '"/>';
      	if (shape == 'rect') {
      		e = $('<v:rect name="' + name + '" filled="t" ' + stroke + ' style="zoom:1;margin:0;padding:0;display:block;position:absolute;left:' + coords[0] + 'px;top:' + coords[1] + 'px;width:' + (coords[2] - coords[0]) + 'px;height:' + (coords[3] - coords[1]) + 'px;"></v:rect>');
      	} else if (shape == 'poly') {
      		e = $('<v:shape name="' + name + '" filled="t" ' + stroke + ' coordorigin="0,0" coordsize="' + canvas.width + ',' + canvas.height + '" path="m ' + coords[0] + ',' + coords[1] + ' l ' + coords.join(',') + ' x e" style="zoom:1;margin:0;padding:0;display:block;position:absolute;top:0px;left:0px;width:' + canvas.width + 'px;height:' + canvas.height + 'px;"></v:shape>');
      	} else if (shape == 'circ') {
      		e = $('<v:oval name="' + name + '" filled="t" ' + stroke + ' style="zoom:1;margin:0;padding:0;display:block;position:absolute;left:' + (coords[0] - coords[2]) + 'px;top:' + (coords[1] - coords[2]) + 'px;width:' + (coords[2] * 2) + 'px;height:' + (coords[2] * 2) + 'px;"></v:oval>');
      	}
      	e.get(0).innerHTML = fill + opacity;
      	$(canvas).append(e);
    };
    clear_canvas = function (canvas) {
      	$(canvas).find('[name=highlighted]').remove();
    };
}

shape_from_area = function (area) {
    var i, coords = area.getAttribute('coords').split(',');
    for (i = 0; i < coords.length; i++) { coords[i] = parseFloat(coords[i]); }
    return [area.getAttribute('shape').toLowerCase().substr(0, 4), coords];
};

options_from_area = function (area, options) {
    var $area = $(area);
    return $.extend({}, options, $.metadata ? $area.metadata() : false, $area.data('maphilight'));
};

is_image_loaded = function (img) {
    if (!img.complete) { return false; } // IE
    if (typeof img.naturalWidth != "undefined" && img.naturalWidth == 0) { return false; } // Others
    return true;
};

canvas_style = {
    position: 'absolute',
    left: 0,
    top: 0,
    padding: 0,
    border: 0
};

var ie_hax_done = false;
$.fn.maphilight = function (opts) {
    opts = $.extend({}, $.fn.maphilight.defaults, opts);

    if ($.browser.msie && !ie_hax_done) {
      	document.namespaces.add("v", "urn:schemas-microsoft-com:vml");
      	var style = document.createStyleSheet();
      	var shapes = ['shape', 'rect', 'oval', 'circ', 'fill', 'stroke', 'imagedata', 'group', 'textbox'];
      	$.each(shapes,
		function () {
			style.addRule('v\\:' + this, "behavior: url(#default#VML); antialias:true");
		}
	);
      	ie_hax_done = true;
    }

    return this.each(function () {
      	var img, wrap, options, map, canvas, canvas_always, mouseover, highlighted_shape, usemap;
      	img = $(this);

      	if (!is_image_loaded(this)) {
      		// If the image isn't fully loaded, this won't work right.  Try again later.
      		return window.setTimeout(function () {
      			img.maphilight(opts);
      		}, 200);
      	}

      	options = $.extend({}, opts, $.metadata ? img.metadata() : false, img.data('maphilight'));

      	// jQuery bug with Opera, results in full-url#usemap being returned from jQuery's attr.
      	// So use raw getAttribute instead.
      	usemap = img.get(0).getAttribute('usemap');

      	map = $('map[name="' + usemap.substr(1) + '"]');

      	if (!(img.is('img') && usemap && map.size() > 0)) { return; }

      	if (img.hasClass('maphilighted')) {
      		// We're redrawing an old map, probably to pick up changes to the options.
      		// Just clear out all the old stuff.
      		var wrapper = img.parent();
      		img.insertBefore(wrapper);
      		wrapper.remove();
      	}

      	wrap = $('<div></div>').css({
      		display: 'block',
      		background: 'url(' + this.src + ')',
      		position: 'relative',
      		padding: 0,
      		width: this.width,
      		height: this.height
      	});
      	if (options.wrapClass) {
      		if (options.wrapClass === true) {
      			wrap.addClass($(this).attr('class'));
      		} else {
      			wrap.addClass(options.wrapClass);
      		}
      	}
      	img.before(wrap).css('opacity', 0).css(canvas_style).remove();
      	if ($.browser.msie) { img.css('filter', 'Alpha(opacity=0)'); }
      	wrap.append(img);

      	canvas = create_canvas_for(this);
      	$(canvas).css(canvas_style);
      	canvas.height = this.height;
      	canvas.width = this.width;

      	mouseover = function (e) {
      		var shape, area_options;
      		area_options = options_from_area(this, options);
      		if (
			!area_options.neverOn
			&&
			!area_options.alwaysOn
		) {
      			shape = shape_from_area(this);
      			add_shape_to(canvas, shape[0], shape[1], area_options, "highlighted");
      			if (area_options.groupBy && $(this).attr(area_options.groupBy)) {
      				var first = this;
      				map.find('area[' + area_options.groupBy + '=' + $(this).attr(area_options.groupBy) + ']').each(function () {
      					if (this != first) {
      						var subarea_options = options_from_area(this, options);
      						if (!subarea_options.neverOn && !subarea_options.alwaysOn) {
      							var shape = shape_from_area(this);
      							add_shape_to(canvas, shape[0], shape[1], subarea_options, "highlighted");
      						}
      					}
      				});
      			}
      		}
      	}

      	if (options.alwaysOn) {
      		$(map).find('area[coords]').each(mouseover);
      	} else {
      		// If the metadata plugin is present, there may be areas with alwaysOn set.
      		// We'll add these to a *second* canvas, which will get around flickering during fading.
      		$(map).find('area[coords]').each(function () {
      			var shape, area_options;
      			area_options = options_from_area(this, options);
      			if (area_options.alwaysOn) {
      				if (!canvas_always) {
      					canvas_always = create_canvas_for(img.get());
      					$(canvas_always).css(canvas_style);
      					canvas_always.width = img.width();
      					canvas_always.height = img.height();
      					img.before(canvas_always);
      				}
      				shape = shape_from_area(this);
      				if ($.browser.msie) {
      					add_shape_to(canvas, shape[0], shape[1], area_options, "");
      				} else {
      					add_shape_to(canvas_always, shape[0], shape[1], area_options, "");
      				}
      			}
      		});
      		$(map).find('area[coords]').mouseover(mouseover).mouseout(function (e) { clear_canvas(canvas); });
      	}

      	img.before(canvas); // if we put this after, the mouseover events wouldn't fire.

      	img.addClass('maphilighted');
    });
};
$.fn.maphilight.defaults = {
    fill: true,
    fillColor: '000000',
    fillOpacity: 0.2,
    stroke: true,
    strokeColor: 'ff0000',
    strokeOpacity: 1,
    strokeWidth: 1,
    fade: true,
    alwaysOn: false,
    neverOn: false,
    groupBy: false,
    wrapClass: true
};
})(jQuery);

/*-----------------------------------------------------------------------------------------------------*/
/* Filename : jquery.lwtCountdown.js                                                                   */
/* Description : jQuery Countdown plugin v1.0  (K4D homepage)                                          */
/*-----------------------------------------------------------------------------------------------------*/

/*!
* jQuery Countdown plugin v1.0
* http://www.littlewebthings.com/projects/countdown/
*
* Copyright 2010, Vassilis Dourdounis
* 
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
* 
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
* 
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
(function ($) {

$.fn.countDown = function (options) {

  	config = {};

  	$.extend(config, options);

  	diffSecs = this.setCountDown(config);

  	if (config.onComplete) {
  		$.data($(this)[0], 'callback', config.onComplete);
  	}
  	if (config.omitWeeks) {
  		$.data($(this)[0], 'omitWeeks', config.omitWeeks);
  	}

  	$('#' + $(this).attr('id') + ' .digit').html('<div class="top"></div><div class="bottom"></div>');
  	$(this).doCountDown($(this).attr('id'), diffSecs, 500);

  	return this;

};

$.fn.stopCountDown = function () {
  	clearTimeout($.data(this[0], 'timer'));
};

$.fn.startCountDown = function () {
  	this.doCountDown($(this).attr('id'), $.data(this[0], 'diffSecs'), 500);
};

$.fn.setCountDown = function (options) {
  	var targetTime = new Date();

  	if (options.targetDate) {
  		targetTime = new Date(options.targetDate.month + '/' + options.targetDate.day + '/' + options.targetDate.year + ' ' + options.targetDate.hour + ':' + options.targetDate.min + ':' + options.targetDate.sec + (options.targetDate.utc ? ' UTC' : ''));
  	}
  	else if (options.targetOffset) {
  		targetTime.setFullYear(options.targetOffset.year + targetTime.getFullYear());
  		targetTime.setMonth(options.targetOffset.month + targetTime.getMonth());
  		targetTime.setDate(options.targetOffset.day + targetTime.getDate());
  		targetTime.setHours(options.targetOffset.hour + targetTime.getHours());
  		targetTime.setMinutes(options.targetOffset.min + targetTime.getMinutes());
  		targetTime.setSeconds(options.targetOffset.sec + targetTime.getSeconds());
  	}

  	var nowTime = new Date();

  	diffSecs = Math.floor((targetTime.valueOf() - nowTime.valueOf()) / 1000);

  	$.data(this[0], 'diffSecs', diffSecs);

  	return diffSecs;
};

$.fn.doCountDown = function (id, diffSecs, duration) {
  	$this = $('#' + id);
  	if (diffSecs <= 0) {
  		diffSecs = 0;
  		if ($.data($this[0], 'timer')) {
  			clearTimeout($.data($this[0], 'timer'));
  		}
  	}

  	secs = diffSecs % 60;
  	mins = Math.floor(diffSecs / 60) % 60;
  	hours = Math.floor(diffSecs / 60 / 60) % 24;
  	if ($.data($this[0], 'omitWeeks') == true) {
  		days = Math.floor(diffSecs / 60 / 60 / 24);
  		weeks = Math.floor(diffSecs / 60 / 60 / 24 / 7);
  	}
  	else {
  		days = Math.floor(diffSecs / 60 / 60 / 24) % 7;
  		weeks = Math.floor(diffSecs / 60 / 60 / 24 / 7);
  	}

  	$this.dashChangeTo(id, 'seconds_dash', secs, duration ? duration : 800);
  	$this.dashChangeTo(id, 'minutes_dash', mins, duration ? duration : 1200);
  	$this.dashChangeTo(id, 'hours_dash', hours, duration ? duration : 1200);
  	$this.dashChangeTo(id, 'days_dash', days, duration ? duration : 1200);
  	$this.dashChangeTo(id, 'weeks_dash', weeks, duration ? duration : 1200);

  	$.data($this[0], 'diffSecs', diffSecs);
  	if (diffSecs > 0) {
  		e = $this;
  		t = setTimeout(function () { e.doCountDown(id, diffSecs - 1) }, 1000);
  		$.data(e[0], 'timer', t);
  	}
  	else if (cb = $.data($this[0], 'callback')) {
  		$.data($this[0], 'callback')();
  	}

};

$.fn.dashChangeTo = function (id, dash, n, duration) {
  	$this = $('#' + id);

  	for (var i = ($this.find('.' + dash + ' .digit').length - 1); i >= 0; i--) {
  		var d = n % 10;
  		n = (n - d) / 10;
  		$this.digitChangeTo('#' + $this.attr('id') + ' .' + dash + ' .digit:eq(' + i + ')', d, duration);
  	}
};

$.fn.digitChangeTo = function (digit, n, duration) {
  	if (!duration) {
  		duration = 800;
  	}
  	if ($(digit + ' div.top').html() != n + '') {

  		$(digit + ' div.top').css({ 'display': 'none' });
  		$(digit + ' div.top').html((n ? n : '0')).slideDown(duration);

  		$(digit + ' div.bottom').animate({ 'height': '' }, duration, function () {
  			$(digit + ' div.bottom').html($(digit + ' div.top').html());
  			$(digit + ' div.bottom').css({ 'display': 'block', 'height': '' });
  			$(digit + ' div.top').hide().slideUp(10);
  		});
  	}
};

})(jQuery);

/*-----------------------------------------------------------------------------------------------------*/
/* Filename : jquery.getParameterByName.js                                                             */
/* Description : get value of parameter 'name' from the querystring of 'url' or document.location.href */
/*-----------------------------------------------------------------------------------------------------*/
(function ($) {
	jQuery.getParameterByName = function (name, url) {
		var _url = (typeof url !== "undefined") ? url : document.location.href;
		name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
		var regexS = "[\\?&]" + name + "=([^&#]*)";
		var regex = new RegExp(regexS);
		var results = regex.exec(_url);
		if (results == null) {
			return "";
		} else {
			return decodeURIComponent(results[1].replace(/\+/g, " "));
		}
	};
})(jQuery);

/*-----------------------------------------------------------------------------------------------------*/
/* Filename : jquery-jtemplates.js                                                                     */
/*                                                                                                     */
/* Date:         Description:                                                                  Author: */
/* 21-apr-2011   31013 refactoring KA                                                          VVD     */
/*-----------------------------------------------------------------------------------------------------*/

/* jTemplates 0.7.8 (http://jtemplates.tpython.com) Copyright (c) 2009 Tomasz Gloc */
(function ($) {
	eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('a(37.b&&!37.b.38){(9(b){6 m=9(s,A,f){5.1M=[];5.1u={};5.2p=E;5.1N={};5.1c={};5.f=b.1m({1Z:1f,3a:1O,2q:1f,2r:1f,3b:1O,3c:1O},f);5.1v=(5.f.1v!==F)?(5.f.1v):(13.20);5.Y=(5.f.Y!==F)?(5.f.Y):(13.3d);5.3e(s,A);a(s){5.1w(5.1c[\'21\'],A,5.f)}5.1c=E};m.y.2s=\'0.7.8\';m.R=1O;m.y.3e=9(s,A){6 2t=/\\{#14 *(\\w*?)( .*)*\\}/g;6 22,1x,M;6 1y=E;6 2u=[];2v((22=2t.3N(s))!=E){1y=2t.1y;1x=22[1];M=s.2w(\'{#/14 \'+1x+\'}\',1y);a(M==-1){C j Z(\'15: m "\'+1x+\'" 2x 23 3O.\');}5.1c[1x]=s.2y(1y,M);2u[1x]=13.2z(22[2])}a(1y===E){5.1c[\'21\']=s;c}N(6 i 24 5.1c){a(i!=\'21\'){5.1N[i]=j m()}}N(6 i 24 5.1c){a(i!=\'21\'){5.1N[i].1w(5.1c[i],b.1m({},A||{},5.1N||{}),b.1m({},5.f,2u[i]));5.1c[i]=E}}};m.y.1w=9(s,A,f){a(s==F){5.1M.B(j 1g(\'\',1,5));c}s=s.U(/[\\n\\r]/g,\'\');s=s.U(/\\{\\*.*?\\*\\}/g,\'\');5.2p=b.1m({},5.1N||{},A||{});5.f=j 2A(f);6 p=5.1M;6 1P=s.1h(/\\{#.*?\\}/g);6 16=0,M=0;6 e;6 1i=0;6 25=0;N(6 i=0,l=(1P)?(1P.V):(0);i<l;++i){6 17=1P[i];a(1i){M=s.2w(\'{#/1z}\');a(M==-1){C j Z("15: 3P 1Q 3f 1z.");}a(M>16){p.B(j 1g(s.2y(16,M),1,5))}16=M+11;1i=0;i=b.3Q(\'{#/1z}\',1P);1R}M=s.2w(17,16);a(M>16){p.B(j 1g(s.2y(16,M),1i,5))}6 3R=17.1h(/\\{#([\\w\\/]+).*?\\}/);6 26=I.$1;2B(26){q\'3S\':++25;p.27();q\'a\':e=j 1A(17,p);p.B(e);p=e;D;q\'J\':p.27();D;q\'/a\':2v(25){p=p.28();--25}q\'/N\':q\'/29\':p=p.28();D;q\'29\':e=j 1n(17,p,5);p.B(e);p=e;D;q\'N\':e=2a(17,p,5);p.B(e);p=e;D;q\'1R\':q\'D\':p.B(j 18(26));D;q\'2C\':p.B(j 2D(17,5.2p));D;q\'h\':p.B(j 2E(17));D;q\'2F\':p.B(j 2G(17));D;q\'3T\':p.B(j 1g(\'{\',1,5));D;q\'3U\':p.B(j 1g(\'}\',1,5));D;q\'1z\':1i=1;D;q\'/1z\':a(m.R){C j Z("15: 3V 2H 3f 1z.");}D;2I:a(m.R){C j Z(\'15: 3W 3X: \'+26+\'.\');}}16=M+17.V}a(s.V>16){p.B(j 1g(s.3Y(16),1i,5))}};m.y.K=9(d,h,z,H){++H;6 $T=d,2b,2c;a(5.f.3b){$T=5.1v(d,{2d:(5.f.3a&&H==1),1S:5.f.1Z},5.Y)}a(!5.f.3c){2b=5.1u;2c=h}J{2b=5.1v(5.1u,{2d:(5.f.2q),1S:1f},5.Y);2c=5.1v(h,{2d:(5.f.2q&&H==1),1S:1f},5.Y)}6 $P=b.1m({},2b,2c);6 $Q=(z!=F)?(z):({});$Q.2s=5.2s;6 19=\'\';N(6 i=0,l=5.1M.V;i<l;++i){19+=5.1M[i].K($T,$P,$Q,H)}--H;c 19};m.y.2J=9(1T,1o){5.1u[1T]=1o};13=9(){};13.3d=9(3g){c 3g.U(/&/g,\'&3Z;\').U(/>/g,\'&3h;\').U(/</g,\'&3i;\').U(/"/g,\'&40;\').U(/\'/g,\'&#39;\')};13.20=9(d,1B,Y){a(d==E){c d}2B(d.2K){q 2A:6 o={};N(6 i 24 d){o[i]=13.20(d[i],1B,Y)}a(!1B.1S){a(d.41("2L"))o.2L=d.2L}c o;q 42:6 o=[];N(6 i=0,l=d.V;i<l;++i){o[i]=13.20(d[i],1B,Y)}c o;q 2M:c(1B.2d)?(Y(d)):(d);q 43:a(1B.1S){a(m.R)C j Z("15: 44 45 23 46.");J c F}2I:c d}};13.2z=9(2e){a(2e===E||2e===F){c{}}6 o=2e.47(/[= ]/);a(o[0]===\'\'){o.48()}6 2N={};N(6 i=0,l=o.V;i<l;i+=2){2N[o[i]]=o[i+1]}c 2N};6 1g=9(2O,1i,14){5.2f=2O;5.3j=1i;5.1d=14};1g.y.K=9(d,h,z,H){6 2g=5.2f;a(!5.3j){6 2P=5.1d;6 $T=d;6 $P=h;6 $Q=z;2g=2g.U(/\\{(.*?)\\}/g,9(49,3k){1C{6 1D=10(3k);a(1E 1D==\'9\'){a(2P.f.1Z||!2P.f.2r){c\'\'}J{1D=1D($T,$P,$Q)}}c(1D===F)?(""):(2M(1D))}1F(e){a(m.R){a(e 1G 18)e.1j="4a";C e;}c""}})}c 2g};6 1A=9(L,1H){5.2h=1H;L.1h(/\\{#(?:J)*a (.*?)\\}/);5.3l=I.$1;5.1p=[];5.1q=[];5.1I=5.1p};1A.y.B=9(e){5.1I.B(e)};1A.y.28=9(){c 5.2h};1A.y.27=9(){5.1I=5.1q};1A.y.K=9(d,h,z,H){6 $T=d;6 $P=h;6 $Q=z;6 19=\'\';1C{6 2Q=(10(5.3l))?(5.1p):(5.1q);N(6 i=0,l=2Q.V;i<l;++i){19+=2Q[i].K(d,h,z,H)}}1F(e){a(m.R||(e 1G 18))C e;}c 19};2a=9(L,1H,14){a(L.1h(/\\{#N (\\w+?) *= *(\\S+?) +4b +(\\S+?) *(?:12=(\\S+?))*\\}/)){L=\'{#29 2a.3m 3n \'+I.$1+\' 2H=\'+(I.$2||0)+\' 1Q=\'+(I.$3||-1)+\' 12=\'+(I.$4||1)+\' u=$T}\';c j 1n(L,1H,14)}J{C j Z(\'15: 4c 4d "3o": \'+L);}};2a.3m=9(i){c i};6 1n=9(L,1H,14){5.2h=1H;5.1d=14;L.1h(/\\{#29 (.+?) 3n (\\w+?)( .+)*\\}/);5.3p=I.$1;5.x=I.$2;5.W=I.$3||E;5.W=13.2z(5.W);5.1p=[];5.1q=[];5.1I=5.1p};1n.y.B=9(e){5.1I.B(e)};1n.y.28=9(){c 5.2h};1n.y.27=9(){5.1I=5.1q};1n.y.K=9(d,h,z,H){1C{6 $T=d;6 $P=h;6 $Q=z;6 1r=10(5.3p);6 1U=[];6 1J=1E 1r;a(1J==\'3q\'){6 2R=[];b.1e(1r,9(k,v){1U.B(k);2R.B(v)});1r=2R}6 u=(5.W.u!==F)?(10(5.W.u)):(($T!=E)?($T):({}));6 s=1V(10(5.W.2H)||0),e;6 12=1V(10(5.W.12)||1);a(1J!=\'9\'){e=1r.V}J{a(5.W.1Q===F||5.W.1Q===E){e=1V.4e}J{e=1V(10(5.W.1Q))+((12>0)?(1):(-1))}}6 19=\'\';6 i,l;a(5.W.1W){6 2S=s+1V(10(5.W.1W));e=(2S>e)?(e):(2S)}a((e>s&&12>0)||(e<s&&12<0)){6 1K=0;6 3r=(1J!=\'9\')?(4f.4g((e-s)/12)):F;6 1s,1k;N(;((12>0)?(s<e):(s>e));s+=12,++1K){1s=1U[s];a(1J!=\'9\'){1k=1r[s]}J{1k=1r(s);a(1k===F||1k===E){D}}a((1E 1k==\'9\')&&(5.1d.f.1Z||!5.1d.f.2r)){1R}a((1J==\'3q\')&&(1s 24 2A)){1R}6 3s=u[5.x];u[5.x]=1k;u[5.x+\'$3t\']=s;u[5.x+\'$1K\']=1K;u[5.x+\'$3u\']=(1K==0);u[5.x+\'$3v\']=(s+12>=e);u[5.x+\'$3w\']=3r;u[5.x+\'$1U\']=(1s!==F&&1s.2K==2M)?(5.1d.Y(1s)):(1s);u[5.x+\'$1E\']=1E 1k;N(i=0,l=5.1p.V;i<l;++i){1C{19+=5.1p[i].K(u,h,z,H)}1F(2T){a(2T 1G 18){2B(2T.1j){q\'1R\':i=l;D;q\'D\':i=l;s=e;D;2I:C e;}}J{C e;}}}1l u[5.x+\'$3t\'];1l u[5.x+\'$1K\'];1l u[5.x+\'$3u\'];1l u[5.x+\'$3v\'];1l u[5.x+\'$3w\'];1l u[5.x+\'$1U\'];1l u[5.x+\'$1E\'];1l u[5.x];u[5.x]=3s}}J{N(i=0,l=5.1q.V;i<l;++i){19+=5.1q[i].K($T,h,z,H)}}c 19}1F(e){a(m.R||(e 1G 18))C e;c""}};6 18=9(1j){5.1j=1j};18.y=Z;18.y.K=9(d){C 5;};6 2D=9(L,A){L.1h(/\\{#2C (.*?)(?: 4h=(.*?))?\\}/);5.1d=A[I.$1];a(5.1d==F){a(m.R)C j Z(\'15: 4i 3o 2C: \'+I.$1);}5.3x=I.$2};2D.y.K=9(d,h,z,H){6 $T=d;6 $P=h;1C{c 5.1d.K(10(5.3x),h,z,H)}1F(e){a(m.R||(e 1G 18))C e;}c\'\'};6 2E=9(L){L.1h(/\\{#h 1T=(\\w*?) 1o=(.*?)\\}/);5.x=I.$1;5.2f=I.$2};2E.y.K=9(d,h,z,H){6 $T=d;6 $P=h;6 $Q=z;1C{h[5.x]=10(5.2f)}1F(e){a(m.R||(e 1G 18))C e;h[5.x]=F}c\'\'};6 2G=9(L){L.1h(/\\{#2F 4j=(.*?)\\}/);5.2U=10(I.$1);5.2V=5.2U.V;a(5.2V<=0){C j Z(\'15: 2F 4k 4l 4m\');}5.2W=0;5.2X=-1};2G.y.K=9(d,h,z,H){6 2Y=b.O(z,\'1X\');a(2Y!=5.2X){5.2X=2Y;5.2W=0}6 i=5.2W++%5.2V;c 5.2U[i]};b.1a.1w=9(s,A,f){a(s.2K===m){c b(5).1e(9(){b.O(5,\'2i\',s);b.O(5,\'1X\',0)})}J{c b(5).1e(9(){b.O(5,\'2i\',j m(s,A,f));b.O(5,\'1X\',0)})}};b.1a.4n=9(1L,A,f){6 s=b.2Z({1t:1L,1Y:1f}).3y;c b(5).1w(s,A,f)};b.1a.4o=9(30,A,f){6 s=b(\'#\'+30).2O();a(s==E){s=b(\'#\'+30).3z();s=s.U(/&3i;/g,"<").U(/&3h;/g,">")}s=b.4p(s);s=s.U(/^<\\!\\[4q\\[([\\s\\S]*)\\]\\]>$/3A,\'$1\');s=s.U(/^<\\!--([\\s\\S]*)-->$/3A,\'$1\');c b(5).1w(s,A,f)};b.1a.4r=9(){6 1W=0;b(5).1e(9(){a(b.2j(5)){++1W}});c 1W};b.1a.4s=9(){b(5).3B();c b(5).1e(9(){b.3C(5,\'2i\')})};b.1a.2J=9(1T,1o){c b(5).1e(9(){6 t=b.2j(5);a(t===F){a(m.R)C j Z(\'15: m 2x 23 3D.\');J c}t.2J(1T,1o)})};b.1a.31=9(d,h){c b(5).1e(9(){6 t=b.2j(5);a(t===F){a(m.R)C j Z(\'15: m 2x 23 3D.\');J c}b.O(5,\'1X\',b.O(5,\'1X\')+1);b(5).3z(t.K(d,h,5,0))})};b.1a.4t=9(1L,h,G){6 X=5;G=b.1m({1j:\'4u\',1Y:1O,32:1f},G);b.2Z({1t:1L,1j:G.1j,O:G.O,3E:G.3E,1Y:G.1Y,32:G.32,3F:G.3F,4v:\'4w\',4x:9(d){6 r=b(X).31(d,h);a(G.2k){G.2k(r)}},4y:G.4z,4A:G.4B});c 5};6 2l=9(1t,h,2m,2n,1b,G){5.3G=1t;5.1u=h;5.3H=2m;5.3I=2n;5.1b=1b;5.3J=E;5.33=G||{};6 X=5;b(1b).1e(9(){b.O(5,\'34\',X)});5.35()};2l.y.35=9(){5.3K();a(5.1b.V==0){c}6 X=5;b.4C(5.3G,5.3I,9(d){6 r=b(X.1b).31(d,X.1u);a(X.33.2k){X.33.2k(r)}});5.3J=4D(9(){X.35()},5.3H)};2l.y.3K=9(){5.1b=b.3L(5.1b,9(o){a(b.4E.4F){6 n=o.36;2v(n&&n!=4G){n=n.36}c n!=E}J{c o.36!=E}})};b.1a.4H=9(1t,h,2m,2n,G){c j 2l(1t,h,2m,2n,5,G)};b.1a.3B=9(){c b(5).1e(9(){6 2o=b.O(5,\'34\');a(2o==E){c}6 X=5;2o.1b=b.3L(2o.1b,9(o){c o!=X});b.3C(5,\'34\')})};b.1m({38:9(s,A,f){c j m(s,A,f)},4I:9(1L,A,f){6 s=b.2Z({1t:1L,1Y:1f}).3y;c j m(s,A,f)},2j:9(z){c b.O(z,\'2i\')},4J:9(14,O,3M){c 14.K(O,3M,F,0)},4K:9(1o){m.R=1o}})})(b)}',62,295,'|||||this|var|||function|if|jQuery|return|||settings||param||new|||Template|||node|case||||extData|||_name|prototype|element|includes|push|throw|break|null|undefined|options|deep|RegExp|else|get|oper|se|for|data|||DEBUG_MODE|||replace|length|_option|that|f_escapeString|Error|eval||step|TemplateUtils|template|jTemplates|ss|this_op|JTException|ret|fn|objs|_templates_code|_template|each|false|TextNode|match|literalMode|type|cval|delete|extend|opFOREACH|value|_onTrue|_onFalse|fcount|ckey|url|_param|f_cloneData|setTemplate|tname|lastIndex|literal|opIF|filter|try|__tmp|typeof|catch|instanceof|par|_currentState|mode|iteration|url_|_tree|_templates|true|op|end|continue|noFunc|name|key|Number|count|jTemplateSID|async|disallow_functions|cloneData|MAIN|iter|not|in|elseif_level|op_|switchToElse|getParent|foreach|opFORFactory|_param1|_param2|escapeData|optionText|_value|__t|_parent|jTemplate|getTemplate|on_success|Updater|interval|args|updater|_includes|filter_params|runnable_functions|version|reg|_template_settings|while|indexOf|is|substring|optionToObject|Object|switch|include|Include|UserParam|cycle|Cycle|begin|default|setParam|constructor|toString|String|obj|val|__template|tab|arr|tmp|ex|_values|_length|_index|_lastSessionID|sid|ajax|elementName|processTemplate|cache|_options|jTemplateUpdater|run|parentNode|window|createTemplate||filter_data|clone_data|clone_params|escapeHTML|splitTemplates|of|txt|gt|lt|_literalMode|__1|_cond|funcIterator|as|find|_arg|object|_total|prevValue|index|first|last|total|_root|responseText|html|im|processTemplateStop|removeData|defined|dataFilter|timeout|_url|_interval|_args|timer|detectDeletedNodes|grep|parameter|exec|closed|No|inArray|ppp|elseif|ldelim|rdelim|Missing|unknown|tag|substr|amp|quot|hasOwnProperty|Array|Function|Functions|are|allowed|split|shift|__0|subtemplate|to|Operator|failed|MAX_VALUE|Math|ceil|root|Cannot|values|has|no|elements|setTemplateURL|setTemplateElement|trim|CDATA|hasTemplate|removeTemplate|processTemplateURL|GET|dataType|json|success|error|on_error|complete|on_complete|getJSON|setTimeout|browser|msie|document|processTemplateStart|createTemplateURL|processTemplateToText|jTemplatesDebugMode'.split('|'),0,{}))
})(jQuery);

