// Link Building Pro ver 1.0
// Copyright Latent Motion, at seox.org

function init() {

	// Options:
	var useMetaKeyword = false; // Otherwise, page title
	var minLength = 40; // Min selection chars
	var useMetaAuthor = true; // Otherwise use domain
	var addLinks = false; // Otherwise, just cite at end
	var skip = new Array("home", "link", "click here"); // Don't link these (lowercase!)

	function D(b, a, c) {
		if (b.addEventListener) b.addEventListener(a, c, false);
		else b.attachEvent && b.attachEvent("on" + a, c)
	}
	function o(b, a) {
		if (typeof b == "undefined" || b == null || !RegExp) return false;
		a = new RegExp("(^|\\s)" + a + "(\\s|$)");
		if (typeof b == "string") return a.test(b);
		else if (typeof b == "object" && b.className) return a.test(b.className);
		return false
	}
	function E(b, a) {
		var c = false,
			j;
		for (j = b.parentNode; j != undefined;) {
			if (b.parentNode == e.body) break;
			else if (b.parentNode == a) {
				c = true;
				break
			}
			j = j.parentNode
		}
		return c
	}

	function F(b) {
		return b.replace(/^\s*/, "")
	}
	function G(b) {
		return b.replace(/\s*$/, "")
	}
	function H(b) {
		return G(F(b))
	}
	var I = new Array("home", "link", "click here"),
		e = document,
		x = window,
		t = e.getElementsByTagName("body")[0],
		p = e.getElementsByName("author"),
		i = e.getElementsByName("keywords"),
		q = x.location.toString(),
		u = e.title.toString(),
		d;
	if (!Array.indexOf) Array.prototype.indexOf = function (b, a) {
		var c = -1;
		for (a = a | 0; a < this.length || a == -1; a++) if (this[a] == b) c = a;
		return c
	};
	if (i.length > 0 && useMetaKeyword) {
		i = e.getElementsByName("keywords")[0].getAttribute("content").split(",");
		u = Math.floor(Math.random() * i.length);
		i = i[u].replace(/^\s*|\s*$/, "")
	} else i = u;
	p = (p.length > 0 && useMetaAuthor) ? p[0].getAttribute("content") : e.domain;
	var y = "<p id='credit'>Quelle: <a href='http://" + e.domain + "' />" + e.domain + "</a> / " + p + "</a></p>";
	if (/MSIE/g.test(navigator.userAgent)) var v = "msie";
	else if (/Safari/g.test(navigator.userAgent)) v = "safChrome";
	q = e.createElement("span");
	q.setAttribute("id", "sasText");
	t.appendChild(q);
	d = e.getElementById("sasText");
	posType = document.all && !window.opera && !window.XMLHttpRequest ? "absolute" : "fixed";
	d.style.position = posType;
	d.style.top = "0px";
	d.style.left = "-9999px";
	D(t, "copy", function () {
		d.innerHTML = y;
		if (v == "msie") {
			for (var b = e.selection.createRange(), a = b.parentElement(); a.nodeName != "BODY" && !o(a, "lbExclude");) a = a.parentNode;
			if (o(a, "lbExclude")) return true;
			a = e.body.createTextRange();
			a.moveToElementText(d);
			var c = b.duplicate();
			c = c.htmlText;
			if (c.length > minLength) {
				d.id = "tempSasText";
				d.innerHTML = c + y;
				(c = e.getElementById("sasText")) && c.parentNode.removeChild(c);
				d.id = "sasText";
				a.select()
			}
		} else {
			b =
			x.getSelection();
			for (a = b.anchorNode; a.nodeName != "BODY" && !o(a, "lbExclude");) a = a.parentNode;
			if (o(a, "lbExclude")) return false;
			if (b == "" && v == "safChrome") {
				d.innerHTML = t.innerHTML;
				a = document.createRange();
				b.removeAllRanges();
				a.selectNodeContents(d);
				b.addRange(a)
			} else if (b.toString().length > minLength) {
				var j = e.getElementById("credit");
				a = b.getRangeAt(0);
				c = a.cloneContents();
				d.id = "tempSasText";
				d.insertBefore(c, j);
				(c = e.getElementById("sasText")) && c.parentNode.removeChild(c);
				d.id = "sasText";
				b.removeAllRanges();
				a.selectNode(d);
				b.addRange(a)
			}
		}
		var w = [];
		a = d.getElementsByTagName("a");
		for (b = 0; b < a.length; b++) w.push(a[b].href);
		if (addLinks) {
			a = e.getElementsByTagName("a");
			for (b = 0; b < a.length; b++) {
				var r = a[b].href;
				if (w.indexOf(r) == -1) if (E(a[b], d) == false) {
					var f = H(a[b].innerHTML).toLowerCase();
					if (skip.indexOf(f) == -1) if ((new RegExp(e.domain, "g")).test(r)) {
						var z = [];

						function n(g, k, l) {
							for (var A = g.childNodes.length; A-- > 0;) {
								var h = g.childNodes[A];
								if (h.nodeType === 1) h.tagName.toLowerCase() !== "a" && n(h, k, l);
								else if (h.nodeType === 3) for (var m = h.data.length; 1;) {
									m =
									h.data.lastIndexOf(k, m);
									if (m === -1 || z.indexOf(k.toLowerCase()) !== -1) break;
									var B = /\w/;
									if (h.nodeValue.charAt(m - 1).match(B) || h.nodeValue.charAt(m + f.length).match(B)) break;
									l.call(window, h, m)
								}
							}
						}
						function s(g, k) {
							g.splitText(k + f.length);
							var l = e.createElement("a");
							l.href = r;
							l.appendChild(g.splitText(k));
							g.parentNode.insertBefore(l, g.nextSibling);
							z.push(f.toLowerCase());
							w.push(r)
						}
						n(d, f, s);
						f = f.charAt(0).toUpperCase() + f.slice(1);
						n(d, f, s);
						f = f.toUpperCase();
						n(d, f, s);
						f = f.replace(/\w\S*/g, function (g) {
							return g.charAt(0).toUpperCase() + g.substr(1).toLowerCase()
						});
						n(d, f, s)
					}
				}
			}
		}
	})
}
window.onload = init;
