/**
* @author: Jan Mentzel http://jan.islandofwaiting.de
* @date: 2007-07-09
* @changed 2009-11-28 addr
*/

//debug.off = true;
/**
* static class Compat
* to check browser-capabilities and display warnings accordingly.
* provides browser information as static boolean members:
* Compat.MSIE   ... MSIE all versions
* Compat.MSIE5  ... MSIE 5.x
* Compat.MSIE6  ... MSIE 6.x
* Compat.MSIE7  ... MSIE 7.x
* Compat.MAC    ... Macintosh OS (all versions)
* Campat.GECKO  ... Gecko Browser all OSs
*
* @author Jan Mentzel - http://jan.islandofwaiting.de
* @date 2006-03-23
* @namespace Compat
*/
var Compat = {
	/**
	* init browser information
	* @method
	* @alias Compat.init
	* @return {void}
	*/
	init: function() {
		var uag = navigator.userAgent;
		Compat.MSIE = Compat.MSIE5 = Compat.MSIE6 = Compat.Win = false;
		var m = /MSIE\s*(\d+)(\.\d+)?/.exec(uag);
		if(m) {
			/** MSIE all versions
			 * @memberOf Compat
			 * @type {boolean}
			 */
			Compat.MSIE = true;
			var version = m[1]-0;
			if(version < 6) {
				Compat.MSIElt6 = true;
			}else if(version < 7) {
				Compat.MSIElt7 = true;
			}
			if(version == 5) {
				Compat.MSIE5 = true;
			} else if(version == 6) {
				Compat.MSIE6 = true;
			} else if(version == 7) {
				Compat.MSIE7 = true;
			}
		}
		/*
		m = /\bWindows/i.exec(uag);
		if(m) {
			Compat.Win = true;
		}
		m = /\bMAC/i.exec(uag);
		if(m) {
			Compat.MAC = true;
		}
		m = /\bX11/i.exec(uag);
		if(m) {
			Compat.X11 = true;
		}
		m = /\bKHTML\b/.exec(uag);
		if(m) {
			Compat.KHTML = true;
		}
		*/

		Compat.Win = /\bWindows/i.test(uag);
		Compat.MAC = /\bMAC/i.test(uag);
		Compat.X11 = /\bX11/i.test(uag);
		Compat.KHTML = /\bKHTML\b/.test(uag);
		Compat.SAFARI = Compat.MAC && Compat.KHTML;
		Compat.GECKO = /\bGecko\b/.test(uag)
		
		m = /Konqueror\/(\d+)(\.(\d+))?/.exec(uag);
		if(m) {
			Compat.KDE = true;
			var version = m[1]-0 + (isNaN(m[3]) ? 0 : (m[3]-0)/100.0); // version "3.4" becomes decimal 3.04 so subversions larger 9 up to 99 work
			if(version < 3.04) {
				Compat.KDElt34 = true;
			}
			Compat.GECKO = false;
		}
	}
}
Compat.init();
//debug.dump(Compat);

function fixIE() {
	// allen <a class="block">  das a.block:before  "< " anfuegen
	var e = document.getElementsByTagName('a');
	for(var i = e.length-1; i > -1; i--) {
		if(e[i].className == 'block') {
			e[i].innerHTML = '&gt; '+ e[i].innerHTML;
		}
	}
	// allen <h1>  das h1:before  "// " anfuegen
	e = document.getElementsByTagName('h1');
	for(var i = e.length-1; i > -1; i--) {
		e[i].innerHTML = '// '+ e[i].innerHTML;
	}
}
/**
* @param self the toggle-control beeing clicked (link, button)
* @param id the html element to toggle on/off
*/
function toggle(self, id) {
	var elem = document.getElementById(id);
	if(elem.style.display == 'block') {
		elem.style.display = 'none';
		self.className = 'toggle-closed';
	} else {
		elem.style.display = 'block';
		self.className = 'toggle-open';
		window.scrollTo(0, getTop(elem));
	}
}
function getLeft(l) {
	if(l.offsetParent)
		return l.offsetLeft + getLeft(l.offsetParent);
	return l.offsetLeft;
}
function getTop(l) {
	if(l.offsetParent)
		return l.offsetTop + getTop(l.offsetParent);
	return l.offsetTop;
}
/**
* Class Player - a singleton
*/
function Player() {
	// das Bild ueber dem sich der Player positioniert hat
	this.currentButton = null;
}
Player.getInstance = function() {
	if(Player._instance == null)
		Player._instance = new Player();
	return Player._instance;
}
Player._instance = null;
Player.playMovie = function(button) {
	Player.getInstance().playMovie(button)
}

Player.prototype.playMovie = function(button) {
	// wichtig _fileName und _size muessen an das htmlelement 'button' dekoriert worden sein
	var fileName = button._fileName;
	var size = button._size;
	if(this.currentButton != null) {
		this.currentButton.style.visibility = 'visible';
	}
	
	var images = button.parentNode.getElementsByTagName('img');
	if(images.length == 0)
		throw new Error("no images in parent: "+ button.parentNode.tagName);
	if(images.length % 2 != 0) {
		//debug('WARNING: images.length is not even: '+ images.length);
	}
	var hookImage = null;
	var width = null;
	var player = null
	switch(size) {
	case 'small':
		width = 384;
		player = "flv_player_small.swf"
		hookImage = images[images.length -1];
		break;
	case 'big':
		width = 768;
		player = "flv_player_big.swf"
		// last image as fallback 
		hookImage = images[images.length - (images.length >= 2 ? 2 : 1)];
		break;
	default:
		throw new Error("unhandled size: "+ size);
	}
	//debug('hookImage:'+ hookImage.tagName +' '+ hookImage.src +' top:'+ hookImage.top +' width:'+ width +' player:'+ player);

	var buf = [];
	buf.push(
		'<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="', width ,'" height="305" id="portfolio_2007" align="middle">'
		,'<param name="allowScriptAccess" value="sameDomain" />'
		,'<param name="movie" value="', player ,'?file_name=', fileName ,'" />'
		,'<param name="quality" value="high" /><param name="bgcolor" value="#f0f0f0" /><embed src="', player ,'?file_name=', fileName ,'" quality="high" bgcolor="#f0f0f0" width="', width ,'" height="305" name="portfolio_2007" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />'
		,'</object>'
	);
	//debug.dump(buf);

	var playerDiv = document.getElementById('player');
	playerDiv.innerHTML = "";
	
	var body = document.getElementById('body');
	playerDiv.style.top  = getTop(hookImage)  +'px';
	playerDiv.style.left = getLeft(hookImage) +'px';
	playerDiv.style.width = width +'px';
	
	playerDiv.innerHTML = buf.join('\n');
	button.style.visibility = 'hidden';
	this.currentButton = button;
}

function init() {
	var pat = /player\.php\?file_name=([^&]+)&size=(\w+)/;
	var e = document.getElementsByTagName('a');
	for(var i = e.length-1; i > -1; i--) {
		if(e[i].href.search(pat) != -1) {
			var a = e[i];
			// I know IE6 only renders css :hover if href attribute present - ignored
			a.removeAttribute('href');
			a._fileName = RegExp.$1;
			a._size = RegExp.$2;
			a.onclick = function() {
				//debug('_name:'+ this._fileName +' _size:'+ this._size);
				Player.playMovie(this);
			};
			//debug('file_name: '+ a._fileName +' size: '+ a._size);
			a.removeAttribute('target');
		}
	}
	Player.playMovie(document.getElementById('showreelButton'));
	
	var addr = deobfuscate(
				// short
				[99,84,80,81,65,75,82,75,81,9,93,68,94,70,71,65,87,17,91,93,20,99,95,82,76,87,91,86,18,1,92,77,96,110,124,10,42,101,37,38,59,44,106,36,42,109,59,61,55,52,60,39,120,117,38,59,61,56,41,62,124,57,55,62,12,91,66,72,92,81,70,79,88,64,74,90,94,90,78,66,80,70,70,74,84,67,65,87,75,79]
				// long
				//[99,84,80,81,65,75,82,75,81,9,99,11,77,64,14,88,95,67,89,90,90,82,22,94,86,25,108,82,89,73,80,94,45,111,126,33,54,101,105,121,104,0,254,39,32,109,44,42,112,51,51,48,63,117,55,35,120,105,107,117,108,110,112,109,80,80,82,77,88,7,20,71,71,87,35,5,76,14,15,28,21,81,29,21,84,0,4,16,29,23,14,87,92,13,18,26,225,242,231,163,224,236,231,235,178,169,161,179,184,173,166,191,185,177,163,161,163,181,187,183,175,173,163,187,170,170,190,172,150,143]
	);
	var eml = deobfuscate([28,64,2,75,86,64,64,26,10,68,75,66,64,89,65,21,93,84,114,71,92,64,87,89,22,93,95,25,28,94,82,94,51,50,127,97,38,41,41,36,35,107,116,38,41,13,58,39,37,48,60,125,48,48,106,120,57,103]);
	
	// intro
	document.getElementById('address').innerHTML = addr;
	document.getElementById('email').innerHTML = eml;
	
	// imprint
	var e = document.getElementById('imprint-address');
	if(e) e.innerHTML = addr;
		
	e = document.getElementById('imprint-email')
	if(e) e.innerHTML = eml;
	
	if(Compat.MSIE) {
		fixIE();
	}
}
