﻿DDH = {
	Event: {
		add: function(obj, evType, fn, useCapture) {
			if (obj.addEventListener){ obj.addEventListener(evType, fn, useCapture); return true; }
			else if (obj.attachEvent){ var r = obj.attachEvent("on"+evType, fn); return r; }
			else { return false; }
		},
		getTarget:function(e){
			var target = window.event ? window.event.srcElement : e ? e.target : null;
			if (!target) { return false; }
			return target;
		},
		cancel:function(e) {
			var e = e || window.event;
			e.cancelBubble = true;
			e.returnValue = false;
			if (e.stopPropagation) { e.stopPropagation(); }
			if (e.preventDefault) { e.preventDefault(); }
		}
	},

	Class: {
		check: function(el,cl) {
			var aCl = el.className.split(" ");
			for (var i=0; i<aCl.length; i++) {
				if (aCl[i] == cl) { return true; }
			}
			return false;
		},
		add: function(el,cl) {
			var aCl = el.className.split(" ");
			for (var i=0; i<aCl.length; i++) {
				if (aCl[i] == cl) { return false; }
			}
			aCl[aCl.length] = cl;
			el.className = aCl.join(" ");
			return true;
		},
		remove: function(el,cl) {
			var aCl = el.className.split(" ");
			for (var i=0; i<aCl.length; i++) {
				if (aCl[i] == cl) {
					aCl.splice(i,1);
					break;
				}
			}
			el.className = aCl.join(" ");
			return true;
		}
	},

	Element: {
		filter: function(elm, ename, eclass) {
			var ra = [];
			var ia = elm.getElementsByTagName(ename);
			if (ia) {
				for (var i=0; i<ia.length; i++) {
					if (DDH.Class.check(ia[i],eclass)) {
						ra[ra.length] = ia[i];
					}
				}
				return ra;
			} else {
				return false;
			}
		},
		position: function(obj) {
			var x = 0; var y = 0; do { x += obj.offsetLeft; y += obj.offsetTop; } while ((obj = obj.offsetParent)); return {x:x,y:y};
		}
	}
};

$c = DDH.Element.filter;

divswitch = {
	init: function() {
		var ElAr = $c(document, "ul", "divswitch");
		for (var i=0; i<ElAr.length; i++) {
			divswitch.clearList(ElAr[i]);
			DivAr = ElAr[i].getElementsByTagName("li");
			for (var j=0; j<DivAr.length; j++) {
				DDH.Event.add(DivAr[j].getElementsByTagName("a")[0],"click",divswitch.switchto);
			}
		}
	},
	clearList: function() {
		var ElAr = $c(document, "ul", "divswitch");
		for (var i=0; i<ElAr.length; i++) {
			DivAr = ElAr[i].getElementsByTagName("li");
			for (var j=0; j<DivAr.length; j++) {
				var divName = DivAr[j].getElementsByTagName("a")[0].hash.substring(1);
				DDH.Class.remove(DivAr[j].getElementsByTagName("a")[0], "active");
				DDH.Class.add(document.getElementById(divName), "divswitchtarget");
				DDH.Class.add(document.getElementById(divName), "hidden");
			}
		}
	},
	switchto: function(e) {
		if (document.getElementById("divswitchcomment")) {
				DDH.Class.add(document.getElementById("divswitchcomment"), "divswitchtarget");
				DDH.Class.add(document.getElementById("divswitchcomment"), "hidden");
		}
		var targetNode = DDH.Event.getTarget(e);
		while(targetNode.nodeName.toUpperCase() != "A") { targetNode = targetNode.parentNode; }
		switchList = targetNode;
		while(switchList.nodeName.toUpperCase() != "UL") { switchList = switchList.parentNode; }
		divswitch.clearList();
		DDH.Class.add(targetNode, "active");
		DDH.Class.remove(document.getElementById(targetNode.hash.substring(1)), "hidden");
	}
};

externallinks = {
	init: function() {
		// loop below tags all http-prefixed external URLs with target="_blank"
		// not exactly according to my usability perspective but the customer's wish and standard-compliant this way
		var links = document.getElementsByTagName("a");
		var myHost = document.location.protocol + "//" + document.location.host;
		for (var i=0; i<links.length; i++) {
			if (links[i].href.indexOf("http") == 0 && links[i].href.indexOf(myHost) != 0 || links[i].href.indexOf(".pdf") > -1) {
				links[i].target = "_blank";
			}
		}
	}
};


bvdsp = {
	init: function() {
		divswitch.init();
		externallinks.init();
	}
};


/* Credit where credit is due: (c)2006 Jesse Skinner/Dean Edwards/Matthias Miller/John Resig, see http://www.thefutureoftheweb.com/blog/adddomloadevent */
addDOMLoadEvent=(function(){var e=[],i,t,s,l='addEventListener',r='onreadystatechange',x=/loaded|complete/,y='readyState',d=document,n=function(){clearInterval(t);for(i=0;i<e.length;++i)e[i]();e=[];if(s)s[r]=''};return function(f){if(!e[0]){d[l]&&d[l]("DOMContentLoaded",n,false);/*@cc_on@*//*@if(@_win32)d.write("<script id=__ie_onload defer src=//0><\/scr"+"ipt>");s=d.getElementById("__ie_onload");s[r]=function(){x.test(s[y])&&n()};/*@end@*/if(/WebKit/i.test(navigator.userAgent))t=setInterval(function(){x.test(d[y])&&n()},10);window.onload=n}e.push(f)}})();

addDOMLoadEvent(bvdsp.init);