window.aonerror = function(){
	var fn = window.onerror, t = [];
	while (fn.caller) {
		t.push(fn.caller);
		fn = fn.caller;
	}
	alert(t.join("\n----\n"));
}

$(function(){
  
  var tab = $("#mainTabs li.current a").get(0);
  if (tab) {
    var main = ($("#mainTabs li.current a").attr("href") +"").replace(/^.*\.lt\//, "");
  } else {
    return;
  };
	
	for (var i=0; i < Nordea.sitemap.length; i++) {
		if (main == Nordea.sitemap[i][1]) {
			main = Nordea.sitemap[i];
			break;
		}
	}

	var map = function parsemap(a, root, level){
		var obj = root[a[1]] = { title: a[0], href: a[1], level: level };
		if (a[2]) {
			obj.children = [];
			for (var i=0; i < a[2].length; i++) {
				parsemap(a[2][i], root, level + 1);
				root[a[2][i][1]].parent = a[1];
				obj.children.push(root[a[2][i][1]]);
			}
		}
		return root;
	}(main, {}, 0);

	var zIndex = 100;
	function showMenu(obj) {
		if (!obj.holder) return;
		if (obj.holder.css("visibility") == "visible") {
			window.clearTimeout(obj.timer);
			obj.timer = 0;
		} else {
			obj.holder
				//.fadeIn("fast")
				.css({"visibility": "visible", "z-index": zIndex++});
		}
	}

	function hideMenu(obj, timeout) {
		if (!obj.holder || obj.holder.css("visibility") == "hidden") return;
		window.clearTimeout(obj.timer);
		obj.timer = window.setTimeout(function(){
			obj.timer = 0;
			obj.holder
				.css("visibility", "hidden")
				.css("dislay", "none").find("ul").css("height", "auto").end();
			if (obj.target) obj.target.removeClass("hovered");
		}, timeout || 500);
	}

	function createHolder(obj) {
		var html = [];
		for (var i=0; i < obj.children.length; i++) {
			html.push('<li'+ (obj.children[i].children ? ' class="have-subs"' : '') +'><a href="'+ obj.children[i].href +'">'+ obj.children[i].title +'</a></li>');
		}
		return $('<div class="js-dropdown-holder level-'+ obj.level +'" style="visibility: hidden; display: none;"><ul>'+ html.join("") +'</ul></div>');
	}

	function mousePosition(e) {
		var o = {
			targetX: e.layerX != undefined ? e.layerX : !window.opera && e.x != undefined ? e.x : e.offsetX || 0,
			targetY: e.layerY != undefined ? e.layerY : !window.opera && e.y != undefined ? e.y : e.offsetY || 0
		};

		if (e.pageX == null && e.clientX != null) {
			var d = document.documentElement, b = document.body;
			o.pageX = e.clientX + (d && d.scrollLeft || b.scrollLeft || 0);
			o.pageY = e.clientY + (d && d.scrollTop || b.scrollTop || 0);
		} else {
			o.pageX = e.pageX;
			o.pageY = e.pageY;
		}

		return o;
	}

	var d = document.documentElement, b = document.body;
	function setPosition(obj, e) {
		obj.holder.css("display", "block").find("ul").css("height", "auto").end();
		var m = mousePosition(e);
		var
			hLeft = m.pageX - m.targetX + e.target.offsetWidth - $("#wrapper")[0].offsetLeft,
			hTop = m.pageY - m.targetY - 6,
			hHeight = obj.holder[0].offsetHeight,
			wTop = window.pageYOffset || d && d.scrollTop  || b.scrollTop  || 0,
			wHeight = (d && d.clientHeight  || b.clientHeight  || 0) - 6;

		obj.holder.css("left", hLeft +"px");
		if (wHeight < hHeight) {
			obj.holder
				.css("top", wTop +"px")
				.find("ul").css("height", wHeight +"px").end();
		} else if (hTop + hHeight > wTop + wHeight) {
			obj.holder
				.css("top", (wTop + wHeight - hHeight) +"px");
		} else {
			obj.holder
				.css("top", hTop +"px");
		}
	}
	var last = null;
	function mouseover(e){
		var $target = $(e.target), obj;
		if ($target.is("a")) {
		  if ($target.is(".active")) return false;
			var t = last;
			while (t) {
				hideMenu(t, 5);
				t = map[t.parent];
			}
		} else return;

		var href = ($target.attr("href") +"").replace(/^.*\.lt\//, "");
		if ($target.is("a") && (obj = map[href]) && obj.children) {
			obj.target = $target.parent().addClass("hovered");

			if (!obj.holder)
				obj.holder = createHolder(obj)
					.appendTo("#wrapper")
					.mouseover(mouseover)
					.mouseout(mouseout);

			setPosition(obj, e);
			last = obj;
		} else if (!$target.is("a")) obj = last;
		else if (this.id == "pageNavigation") last = null;

		if (obj && this.id == "pageNavigation") {
			showMenu(obj);
		} else {
			while (obj) {
				showMenu(obj);
				if ($(obj.target).parents("#pageNavigation").size())
					break;
				obj = map[obj.parent];
			}
		}
	}
	function mouseout(e){
		var href = ($(e.target).attr("href") +"").replace(/^.*\.lt\//, "");
		var obj = map[href];
		if (!obj) obj = last;
		while (obj) {
			hideMenu(obj);
			obj = map[obj.parent];
		}
	}
	$("#pageNavigation")
		.mouseover(mouseover)
		.mouseout(mouseout);
});