/*
Theme Name: georg wilhelm wirtz
Theme URI: http://georg-wilhelm-wirtz.de/
Description: javascript(e) meiner website version 1.0
Version: 2.00
Author: georg wilhelm wirtz
Author URI: http://georg-wilhelm-wirtz.de/

© 2011_01_28, georg-wilhelm-wirtz.de

*/

/*
Onload
*/
// window.onload
window.onload = function() {
  initCSS(); 
  initSize();
  wishes();
  mailid();
  jabberid();
  googleSearchHighlight();
}
// window.onresize
window.onresize = function() {
  scrollFixed();
}
// addLoadEvent
function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}
// initCSS: If there is a "gwwstyle" cookie, set the active stylesheet when the page loads
function initCSS() {
	var style = readCookie("gwwstyle");
	if (style) {
		activeCSS(style);
	}
}
/*
Switcher functions
*/
// activeCSS: Set the active stylesheet
function activeCSS(title) {
	var i, oneLink;
	if (!document.cookie) {
		transfer();
		return;
	}
	for (i = 0; (oneLink = document.getElementsByTagName("link")[i]); i++) {
		if (oneLink.getAttribute("title") && findWord("stylesheet", oneLink.getAttribute("rel"))) {
			oneLink.disabled = true;
			if (oneLink.getAttribute("title") == title) {
				oneLink.disabled = false;
			}
		}
	}
	setCookie("gwwstyle", title, 365);
}
// findWord: Used to find a full word (needle) in a string (haystack)
function findWord(needle, haystack) {
	var init = needle + "\\b";
	return haystack.match(needle + "\\b");
}
/*
Cookie functions
*/
// Set the cookie
function setCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = ";expires="+date.toGMTString();
		} else {
			expires = "";
		}
		document.cookie = name+"="+value+expires+"; path=/";
	}
// Read the cookie
function readCookie(name) {
	var needle = name + "=";
	var cookieArray = document.cookie.split(';');
	for(var i=0;i < cookieArray.length;i++) {
		var pair = cookieArray[i];
		while (pair.charAt(0)==' ') {
			pair = pair.substring(1, pair.length);
		}
		if (pair.indexOf(needle) == 0) {
			return pair.substring(needle.length, pair.length);
		}
	}
	return null;
}
/*
Onload
*/
// initSize: If there is a "gwwsize" cookie, set the active fontsize when the page loads
function initSize() {
	var size = readCookie("gwwsize");
	if (size) {
		document.getElementById("navigation").style.fontSize=""+size+"%";
		document.getElementById("wrap").style.fontSize=""+size+"%";
		} else {
			setCookie("gwwsize", 100, 365);
		}
}
/*
Fontsize function
*/
function textSize(dec) {
	if (!document.cookie) {
		transferF();
		return;
	}
	var size = readCookie("gwwsize");
	size = (dec == 1) ? (size*1+10) : (size*1-10);
	document.getElementById("result").innerHTML = "Schriftgr&ouml;&szlig;e";
	if (size<80) {
		size = 80;
		document.getElementById("result").innerHTML = "kleinste Schriftgr&ouml;&szlig;e";
	}
	if (size>200) {
		size = 200;
		document.getElementById("result").innerHTML = "gr&ouml;&szlig;te Schriftgr&ouml;&szlig;e";
	}
	document.getElementById("navigation").style.fontSize=""+size+"%";
	document.getElementById("wrap").style.fontSize=""+size+"%";
	setCookie("gwwsize", size, 365);
}
/*
Transfer
*/
function transfer() {
	location.href = "http://georg-wilhelm-wirtz.de/javascript-deaktiviert/";
	window.name  = "Cookies deaktiviert";
}
function transferF() {
	location.href = "http://georg-wilhelm-wirtz.de/schriftgroesse-andern/";
	window.name  = "Cookies deaktiviert";
}
/*
Pop up
*/
var popUp = null;
function openPopUp(URI) {
	if (!popUp || popUp.closed) {
		var left = (screen.availWidth/2) - (400);
		var top = (screen.availHeight/2) - (300);
		var param = "top=" + top +",left=" + left + ",height=" + 600 +",width=" + 800 + ",status=no,resizable=yes";
		popUp = window.open(URI,"popUp",param);
		} else {
			popUp.focus();
			popUp.location.href=URI;
		}
}
/*
Wishes
*/
function wishes() {
	var Datum = new Date();
	var Monat = Datum.getMonth();
	var Tag = Datum.getDate();
		if ((Monat == 11 && Tag > 23) || (Monat == 0 && Tag < 6)) {
	  		document.getElementsByTagName("span")[0].setAttribute("id", "wishes");
	 	} else {
	 		document.getElementsByTagName("span")[0].setAttribute("id", "year");
	 	}
}
/*
Height
*/
function scrollFixed(){
	var viewport_height = (self.innerHeight) ? self.innerHeight : (document.documentElement && document.documentElement.clientHeight) ? document.documentElement.clientHeight : (document.body) ? document.body.clientHeight : 0;
	var page_height = document.getElementById('navigation').offsetHeight + 20;
	if (!document.getElementById('navigation')) return false;
	var nav = document.getElementById('navigation');
	if (window.XMLHttpRequest) {
	//IE 7, mozilla, safari, opera 9
		if (page_height < viewport_height) nav.style.position ='fixed';
		if (page_height > viewport_height) nav.style.position ='absolute';
	} else {
	// IE6, older browsers
		if (page_height < viewport_height) nav.style.position ='absolute';
	}
}
addLoadEvent(scrollFixed);
/*
unobtrusive JavaScript
*/
function addEvent( obj, type, fn ) {
	if (obj.addEventListener) {
		obj.addEventListener( type, fn, false );
		EventCache.add(obj, type, fn);
	}
	else if (obj.attachEvent) {
		obj["e"+type+fn] = fn;
		obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
		obj.attachEvent( "on"+type, obj[type+fn] );
		EventCache.add(obj, type, fn);
	}
	else {
		obj["on"+type] = obj["e"+type+fn];
	}
}
var EventCache = function(){
	var listEvents = [];
	return {
		listEvents : listEvents,
		add : function(node, sEventName, fHandler){
			listEvents.push(arguments);
		},
		flush : function(){
			var i, item;
			for(i = listEvents.length - 1; i >= 0; i = i - 1){
				item = listEvents[i];
				if(item[0].removeEventListener){
					item[0].removeEventListener(item[1], item[2], item[3]);
				};
				if(item[1].substring(0, 2) != "on"){
					item[1] = "on" + item[1];
				};
				if(item[0].detachEvent){
					item[0].detachEvent(item[1], item[2]);
				};
				item[0][item[1]] = null;
			};
		}
	};
}();
addEvent(window,'unload',EventCache.flush);
function eavesdrop() {
	location.hash = "geladen"; 
	var uri = location.hash;
	var fixiertlinks = document.getElementById('fixiertlinks');
	addEvent(fixiertlinks, 'click', function() {
	     fixiertlinks.onclick = fixiertlinks.getElementsByTagName("a")[0].href = uri; activeCSS('fixiert links'); });
	var fixiertrechts = document.getElementById('fixiertrechts');
	addEvent(fixiertrechts, 'click', function() {
	     fixiertrechts.onclick = fixiertrechts.getElementsByTagName("a")[0].href = uri; activeCSS('fixiert rechts'); });
	var liquidlinks = document.getElementById('liquidlinks');
	addEvent(liquidlinks, 'click', function() {
	     liquidlinks.onclick = liquidlinks.getElementsByTagName("a")[0].href = uri; activeCSS('flexibel links'); });
	var liquidrechts = document.getElementById('liquidrechts');
	addEvent(liquidrechts, 'click', function() {
	     liquidrechts.onclick = liquidrechts.getElementsByTagName("a")[0].href = uri; activeCSS('flexibel rechts'); });
	var gross = document.getElementById('gross');
	addEvent(gross, 'click', function() {
	     gross.onclick = gross.getElementsByTagName("a")[0].href = uri; textSize(1); });
	var klein = document.getElementById('klein');    
	addEvent(klein, 'click', function() {
	     klein.onclick = klein.getElementsByTagName("a")[0].href = uri; textSize(0); });
	var up = document.getElementById('up');    
	addEvent(up, 'mouseover', function() {
	     up.onmouseover = up.getElementsByTagName("a")[0].innerHTML = 'Nach oben gehen'; });
	     if (document.getElementById('updown')) {
		var updown = document.getElementById('updown');
		addEvent(updown, 'click', function() {
		     updown.onclick = updown.getElementsByTagName("a")[0].href = "#hideOrShow"; toggle('hideOrShow'); });
	     }
	     if (document.getElementById('clock')) {
		var header = document.getElementById('clock');    
		addEvent(header, 'click', function() {
		header.onclick = header.getElementsByTagName("a")[0].href = uri; active(); }); 
	     }
	}
addLoadEvent(eavesdrop);
/*
Highlight
*/
function highlightWord(node,word) {
	if (node.hasChildNodes) {
		var hi_cn;
		for (hi_cn=0;hi_cn<node.childNodes.length;hi_cn++) {
			highlightWord(node.childNodes[hi_cn],word);
		}
	}
	if (node.nodeType == 3) {
		tempNodeVal = node.nodeValue.toLowerCase();
		tempWordVal = word.toLowerCase();
		if (tempNodeVal.indexOf(tempWordVal) != -1) {
			pn = node.parentNode;
			checkn = pn;
			while (checkn.nodeType != 9 && 
			checkn.nodeName.toLowerCase() != 'body') { 
				if (checkn.className.match(/\bnosearchhi\b/)) { return; }
				checkn = checkn.parentNode;
			}
			if (pn.className != "searchword") {
				nv = node.nodeValue;
				ni = tempNodeVal.indexOf(tempWordVal);
				before = document.createTextNode(nv.substr(0,ni));
				docWordVal = nv.substr(ni,word.length);
				after = document.createTextNode(nv.substr(ni+word.length));
				hiwordtext = document.createTextNode(docWordVal);
				hiword = document.createElement("mark");
				hiword.className = "searchword";
				hiword.appendChild(hiwordtext);
				pn.insertBefore(before,node);
				pn.insertBefore(hiword,node);
				pn.insertBefore(after,node);
				pn.removeChild(node);
			}
		}
	}
}
function googleSearchHighlight() {
	if (!document.createElement) return;
	ref = document.referrer;
	if (ref.indexOf('?') == -1) return;
	qs = ref.substr(ref.indexOf('?')+1);
	qsa = qs.split('&');
	for (i=0;i<qsa.length;i++) {
		qsip = qsa[i].split('=');
	        if (qsip.length == 1) continue;
        	if (qsip[0] == 'sw' /*|| qsip[0] == 'q' || qsip[0] == 'p'*/) { // q= for Google, p= for Yahoo
			words = unescape(qsip[1].replace(/\+/g,' ')).split(/\s+/);
	                for (w=0;w<words.length;w++) {
				highlightWord(document.getElementsByTagName("body")[0],words[w]);
                	}
	        }
	}
}
/*
against-spam/-harvester function
*/
/*e-mail*/
function mailid() {
var mail_id = new Array("mail", "mail1", "mail2");
	for(i = 0; i < 3; i++) {
		if (document.getElementById(mail_id[i])) {
			var id = document.getElementById(mail_id[i]);
			againstSpam(id);
		}	
	}
}
function againstSpam(id) {
	if (document.getElementById) {
		var at = "@";
		var punkt = ".";
		var mail = id.firstChild;
		var name = id.childNodes[2];
		var zone = id.lastChild;
		mail.nextSibling.firstChild.innerHTML = at;
		mail.nextSibling.nextSibling.nextSibling.lastChild.innerHTML = punkt;
		id.href = "ma\111lto:" + mail.data + at + name.data + punkt + zone.data;
	}
}
/*im*/
function jabberid() {
var jabber_id = new Array("jabber", "jabber2");
	for(i = 0; i < 2; i++) {
		if (document.getElementById(jabber_id[i])) {
			var id = document.getElementById(jabber_id[i]);
			againstSpamIM(id);
		}	
	}
}
function againstSpamIM(id) {
	if (document.getElementById) {
		var at = "@";
		var punkt = ".";
		var mail = id.firstChild;
		var name = id.childNodes[2];
		var zone = id.lastChild;
		mail.nextSibling.firstChild.innerHTML = at;
		mail.nextSibling.nextSibling.nextSibling.lastChild.innerHTML = punkt;
		id.href = "x\115pp:" + mail.data + at + name.data + punkt + zone.data;
	}
}

