var ie  = $.browser.msie;
var ie6 = $.browser.msie && ($.browser.version == "6.0");

$(function() {

	$.extend({

		/* converts classname consisting of equals sign-separated label value pairs and returns object */
		classToObject: function(classname) {
			var input = (classname) ? classname.split(" ") : [];
			var obj = {};

			$.each(input, function(i, val) {
				var label = val.substring(0, val.indexOf("="));
				var value = val.substring(val.indexOf("=") + 1);
				if (label == "params") {
					var params = eval(val);
					obj.params = {};
					for (p in params) {
						obj.params[p] = escape(params[p]);
					}
				} else {
					obj[label] = value;
				}
			});

			return obj;
		},

		/* converts supplied object to classname string */
		objectToClass: function(obj) {
			var input = (obj) ? obj : {};
			var str = "";

			$.each(obj, function(i, prop) {
				if (i == "params") {
					for (p in prop) {
						str += ((p == "") ? prop[p] : p + "=" + prop[p]) + " ";
					}
				} else {
					str += ((i == "") ? prop : i + "=" + prop) + " ";
				}
			});

			str = str.substring(0, str.length - 1);

			return str;
		},

		/* converts querystring parameters and returns object */
		queryToObject: function(qs) {
			var input = (qs) ? qs.split("&") : [];
			var obj = {};

			$.each(input, function(i, segment) {
				var p = segment.split("=");
				obj[p[0]] = p[1];
			});

			return obj;
		},

		/* converts object to querystring parameters and returns string */
		objectToQuery: function(obj) {
			var input = (obj) ? obj : {};
			var qs = "";

			$.each(obj, function(i, segment) {
				qs += i + "=" + segment + "&";
			});

			qs = qs.substring(0, qs.length - 1);

			return qs;
		},

		/* creates an inline popup */
		popup: function(text, event, options) {
			var popup;
			var config = {};
			$.extend(config, options);
			if ($("#popup").length == 0) {
				popup = $("<div id='popup'></div>").appendTo($("body"));
				popup.append($("<h4>Uitleg van begrip</h4><div id='popup_content'></div>"), $("<button id='closer'>sluiten</button>").click(function() {
					popup.fadeOut("slow");
				}));
			} else {
				popup = $("#popup");
			}
			//popup.find("h4").text(config.title || $(event.target).parent("a").attr("title"));

			popup.find("#popup_content").html(text);

			popup.css({
				left: ($(window).width() - popup.width()) / 2,
				top: event.pageY - popup.height() / 2,
				zIndex: 999
			}).fadeIn("slow", function() {
				if (popup.offset().top < 0) {
					popup.css("top", popup.offset().top + Math.abs(popup.offset().top) + 10);
				}
			});
		},

		/* equal heights for content, subnav and sidebar */
		equalHeights: function(forcedHeight) {
			//console.log($("#sidebar").height());
			$("#sidebar").height(forcedHeight || $("#aspnetForm").height() + 1);
			$("#subnav").height($("#sidebar").height() - $("#header").height() - 10);
			//console.log($("#sidebar").height());
		},

		/* scrollable tables */
		tableScroller: function(expr, initHeight) {

			$(expr).each(function(index, table) {

				if ($(expr).find("tr").length > 0) {

					var thead   = $(this).find("thead");
					var caption = $("<caption>Gefixeerde rijkoppen voor " + $(this).find("caption").text().toLowerCase() + "</caption>");
					var header  = $("<table class='wrap-header'></table>").addClass($(this).attr("class")).append(caption, thead.clone());
					var wheight = initHeight || 400;
					var wrapper = $("<div class='wrapper'></div>").css({
						height: wheight
					});

					thead.hide();
					$(this).wrap(wrapper);
					header.insertBefore($(this).parent("div.wrapper"));

				}

			});
		}
	});

	$.equalHeights();

	/* print */
	/*$("#pageoptions ul").prepend($("<li id='print'><input type='button' value='Printen' title='Print deze pagina'/></li>").click(function() {
		window.print();
	}));*/

	/* open review link in new window */
	$("#pageoptions #review a").click(function() {
		window.open($(this).attr("href"));
		return false;
	});

	/* open inline popup for mail-a-friend */
	$("#pageoptions #mailafriend a").click(function(e) {
		$("#mafdialog").remove();
		var dialog, url, input, errorlist;
		var url = $(this).attr("href");
		var error = $("<div id='maf-error'><h3>Foutmelding</h3><ul></ul></div>");

		dialog = $("<div id='mafdialog'></div>").css({
			left: $(window).width() / 2,
			top: e.clientY
		});
		dialog.load("/zorgverleners/mail-een-vriend/ #mail-a-friend", function() {
			$(this).prepend($("<h2>Stuur dit artikel naar:</h2>"), $("<button>sluiten</button>").click(function(e) {
				$("#mafdialog").slideUp();
				e.preventDefault();
			}));
			$(this).find("input[type='submit']").click(function(e) {
				input = $("#mafdialog").find("input, textarea");
				url = "url=" + window.location.href + "&sendername=" + input.filter(":eq(0)").val() + "&senderemail=" + input.filter(":eq(1)").val() + "&receiveremail=" + input.filter(":eq(2)").val() + "&message=" + input.filter(":eq(3)").val();
				$.getJSON("/KBServices/MailAFriendService.svc/js/SendMail?" + url, function(data) {
					if (data.d[0].Key == 1) {
						$("#mafdialog fieldset").empty().append("<p>Dank u wel. Uw bericht is verzonden.</p>");
					} else {
						errorlist = error.find("ul");
						errorlist.empty();
						$.each(data.d, function(i, obj) {
							errorlist.append("<li>" + obj.Value + "</li>");
						});
						$("#mail-a-friend").prepend(error);
					}
				});
			});
			$(this).appendTo($("body")).show();
		});

		e.preventDefault();
	});

	/* readspeaker button */
	var readSpeakerButton = $("<li id='readspeaker'><input type='button' value='Voorlezen' title='Lees (geselecteerde) tekst voor' lang='nl' xml:lang='nl'/></li>").click(function() {

		$("body").append("<form id='rs_form' name='dixerit_form' action='http://voice.dixerit.com/kiesbeterdix' method='post'></form>");

		$.each({
			a: { id: "rshtml", value: $("#content").html() },
			b: { id: "url", value: window.location.href },
			c: { id: "customerid", value: "kiesbeter" },
			d: { id: "lang", value: "nl" },
			e: { id: "type", value: "6" },
			f: { id: "speed", value: "40" }
		}, function(i, val) {
			return $("<input type='hidden'/>").attr({
				id: val.id,
				name: val.id,
				value: val.value
			}).appendTo("#rs_form");
		});

		var newAction = $("#rs_form").attr("action") + "?" + window.location.href;

		$("#rs_form").attr("action",newAction).trigger("submit");
	});

	$("#pageoptions ul").prepend(readSpeakerButton);

	/* buttons */
	$("button, input.button").live("mouseover", function() {
		$(this).addClass("highlight");
	}).live("mouseout", function() {
		$(this).removeClass("highlight");
	});

	/* begrippen popups */
	$("a.termpopup, a.popup, a.kb_bh_richtooltip").live("click", function(e) {

		var url = $(this).attr("href");
		var result = new RegExp("begrippen/([^/]*)/(default.aspx)?$").exec(url);

		if (result) {
			$.ajax({
				type: "POST",
				url: "/KBServices/TermService.svc/GetTerm",
				data: '{"friendlyName": "' + result[1] + '"}',
				dataType: "json",
				contentType: "application/json; charset=utf-8",
				success: function(response) {
					text = "<h5>" + response.d.Name + "</h5>" + response.d.Content;
					$.popup(text, e);
				},
				error: function(request, statusmsg, error) {
					text = "<h5>Tekst niet gevonden.</h5>";
					$.popup(text, e, { title: "Foutmelding" });
				}
			});

			e.preventDefault();
		}
	});

	/* faq */
	$("div.siteresult dd.hidden, div.kb_index_alpha_anchor_result dd.hidden").hide();

	$("div.siteresult input.kb_bh_swapdeflistbybutton, div.kb_index_alpha_anchor_result input.kb_bh_swapdeflistbybutton").click(function() {
		$(this).parent("dt").toggleClass("open").next("dd").toggle();
	});


});

/* sitestat */
function sitestat(ns_l) {
	ns_l += "&amp;ns__t=" + (new Date()).getTime();
	ns_pixelUrl = ns_l;
	ns_0 = document.referrer;
	ns_0 = (ns_0.lastIndexOf('/') == ns_0.length - 1) ? ns_0.substring(ns_0.lastIndexOf('/'),0) : ns_0;
	if (ns_0.length > 0) {
		ns_l += "&amp;ns_referrer=" + escape(ns_0);
	}
	if (document.images) {
		ns_1 = new Image();
		ns_1.src = ns_l;
	} else {
		document.write("<img src='" + ns_l + "' width='1' height='1' alt=''>");
	}
}
