﻿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};
		}
	}
};

boerner = {
	init: function() {
		boerner.thumbs.init();
	},
	thumbs: {
		init: function() {
			var tDivs = DDH.Element.filter(document,"a","thumb");
			for (var i=0;i<tDivs.length;i++) {
				DDH.Event.add(tDivs[i],"click",boerner.thumbs.click);
			}
		},
		click: function(e) {
			DDH.Event.cancel(e);

			var thumbLink = DDH.Event.getTarget(e);
			while(thumbLink.nodeName.toUpperCase() != "A") { thumbLink = thumbLink.parentNode; }

			var newEl = document.createElement("div");
			newEl.id = "thumbview-shade";
			DDH.Event.add(newEl,"click",boerner.thumbs.remove);
			document.body.appendChild(newEl);

			newEl = document.createElement("div");
			newEl.id = "thumbview";
			DDH.Event.add(newEl,"click",boerner.thumbs.remove);
			document.body.appendChild(newEl);

			var vpos = 0; if (document.body.scrollTop) { vpos = document.body.scrollTop;
			} else if (document.documentElement) { vpos = document.documentElement.scrollTop; }
			document.getElementById("thumbview").style.top = vpos + "px";

			newEl = document.createElement("div");
			newEl.id = "thumbview-pad";
			document.getElementById("thumbview").appendChild(newEl);
			
			newEl = document.createElement("div");
			newEl.id = "thumbview-container";
			document.getElementById("thumbview").appendChild(newEl);
			
			newEl = document.createElement("img");
			newEl.id = "thumbview-image";
			newEl.src = thumbLink.href;
			document.getElementById("thumbview-container").appendChild(newEl);
			if( thumbLink.hasChildNodes() ){
				for (var childs = 0; childs < thumbLink.childNodes.length; childs++){
				var thumbLinkLastChild = thumbLink.childNodes[childs];
					if( thumbLinkLastChild.nodeName == "P"){
						newEl = document.createElement("p");
						newEl.id = "thumbview-text";
						for( var textChilds = 0; textChilds < thumbLinkLastChild.childNodes.length; textChilds++ ){
							var thumbText = thumbLinkLastChild.childNodes[textChilds].cloneNode(true);
							newEl.appendChild(thumbText);
						}
						document.getElementById("thumbview-container").appendChild(newEl);
						var testX = document.getElementById("thumbview").lastChild;
					}
				}
			}
		},
		remove: function(e) {
			document.body.removeChild(document.getElementById("thumbview-shade"));
			document.body.removeChild(document.getElementById("thumbview"));
		}
	}
};


/* 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(boerner.init);
