

 var pagemenu;
 var mainmenu;
 var imageviewer;
 var imagezoomer;


 function page_init()
 {
	pagemenu= new pagemenu_class('text', 'pagemenu');
	mainmenu= new mainmenu_class();
	imageviewer= new imageviewer_class('imageviewer');
	imagezoomer= new imagezoomer_class('main', 'imagezoom');
 }




 function pagemenu_class(textcontainer, pagemenucontainer)
 {
	this.textcontainer= textcontainer;
	this.pagemenucontainer= pagemenucontainer;
	this.openlink= null;
	this.anchor= (document.location.hash != '') ? document.location.hash.substr(1) : '';

	this.init= function()
	{
		if (!bm.element(this.textcontainer) || !bm.element(pagemenucontainer)) return;

		bm.execute(bm.get(this.textcontainer, 'div', 'block'), function(e) { e.style.display= 'none'; });
		bm.execute(bm.get(this.pagemenucontainer, 'a'), function(e) { bm.addevent(e, 'click', function(ev) { pagemenu.open(e.href.split('#')[1]); }); });

		if (this.anchor != '') this.open(this.anchor);
		else this.open();
	}

	this.open= function(pagename)
	{
		if (!bm.element('block_'+pagename)) pagename= null;

		var page= (pagename == null) ? bm.get(this.textcontainer, 'div', 'block')[0] : bm.element('block_'+pagename);
		if (pagename == null) var link= bm.get(this.pagemenucontainer, 'a')[0];
		else
		{
			var link= null;
			var links= bm.get(this.pagemenucontainer, 'a');
			for (var i in links) if (links[i].href) if (links[i].href.split('#')[1] == pagename) { link= links[i]; break; }
			if (link == null) link= bm.get(this.pagemenucontainer, 'a')[0];
		}

		if (!page || !link || link == this.openlink) return;
		
		this.anchor= page.id.substr(6);

		if (this.openlink != null)
		{
			bm.element('block_'+this.openlink.href.split('#')[1]).style.display= 'none';
			this.openlink.className= '';
		}
		this.openlink= link;
		page.style.display= 'block';
		link.className= 'active';
		link.blur();

		return false;
	}
	
	this.checkanchor= function()
	{
		temp= (document.location.hash != '') ? document.location.hash.substr(1) : '';
		if (temp != this.anchor) if (temp == '' && this.anchor == bm.get(this.textcontainer, 'div', 'block')[0].id.substr(6)) {} else this.open(temp);
	}

	this.init();
	
	setInterval('pagemenu.checkanchor()', 300);
 }




 function mainmenu_class()
 {
	this.opened= false;

	this.init= function()
	{
		bm.element('menu').className= '';

		bm.execute(bm.get('menu', 'a', 'main'), function(e, x) { var li= e.parentNode; window['selector'+x]= new selector_class(li, x); li.selector= window['selector'+x]; bm.addevent(li, 'mouseover', function(ev) { mainmenu.open(li, ev); }); bm.addevent(li, 'mouseout', function(ev) { mainmenu.close(li, ev); }); });
	}

	this.open= function(li, e)
	{
		if (!bm.nochild(li, e, true)) return;

		bm.get(li, 'div', 'sub')[0].style.display= 'block';
		var links= bm.get(bm.get(li, 'ul')[0], 'a');

		var y= 0;
		for (var x= 0; x < links.length; x++) 
		{
			if (li.selector.checkfilters(links[x].parentNode.className)) { links[x].style.display= 'none'; bm.fadein(links[x], y*50); y++; }
			else { links[x].style.width= '1px'; links[x].style.display= 'none'; links[x].parentNode.style.width= '1px'; links[x].parentNode.style.display= 'none'; }
		}
	}

	this.close= function(li, e)
	{
		if (!bm.nochild(li, e)) return;

		bm.execute(bm.get(bm.get(li, 'ul')[0], 'a'), function(e) { bm.timer.removework(e); });
		bm.get(li, 'div', 'sub')[0].style.display= 'none';
	}

	function selector_class(li, nr)
	{
		this.li= li;
		this.nr= nr;
		this.selectors= new Array();
		this.activated= new Array();
		this.cookiesep= '---';

		this.init= function()
		{
			var div= bm.get(this.li, 'div', 'selector');

			if (!div) return; else div= div[0];

			var temp_selectors= bm.execute(bm.get(bm.get(this.li, 'ul')[0], 'li'), function(e) { return e.className; });
			for (var x= 0; x < temp_selectors.length; x++) for (var y= 0; y < temp_selectors[x].split(';').length; y++) if (!this.selectors.contains(temp_selectors[x].split(';')[y]) && temp_selectors[x].split(';')[y] != '') this.selectors.push(temp_selectors[x].split(';')[y]);

			this.selectors.sort();

			if (document.cookie)
			{
				var cookieid= 'selector'+this.nr+'=';
				var cookiecontent= document.cookie.substr(document.cookie.search('selector'+this.nr+'=')+cookieid.length).split(';')[0];
				var cookiearray= cookiecontent.split(this.cookiesep);
				if (cookiecontent != '') for (var x= 0; x < cookiearray.length; x++) if (this.selectors.contains(cookiearray[x])) this.activated.push(cookiearray[x]);
			}

			var text= '<ul>';
			var headline= '';

			for (var x= 0; x < this.selectors.length; x++)
			{
				var fname= '';
				if (!this.selectors[x].split('/')[1]) fname= this.selectors[x];
				else
				{
					fname= this.selectors[x].split('/')[1];
					var hname= (this.selectors[x].split('/')[0].substr(2, 1) == '_') ? this.selectors[x].split('/')[0].substr(3) : this.selectors[x].split('/')[0];
					if (this.selectors[x].split('/')[0] != headline) text+= '</ul><h4>'+hname+'</h4><ul>'; headline= this.selectors[x].split('/')[0];
				}
				var cl= (this.activated.contains(this.selectors[x])) ? ' class="active"' : '';

				text+= '<li><a href="javascript:void(0);" onclick="selector'+this.nr+'.setfilter(this, \''+this.selectors[x]+'\');" onfocus="blur();"'+cl+'>'+fname+'</a></li>';
			}

			text+= '</ul>';
			text= text.replace('<ul></ul>', '');

			div.innerHTML= text;
		}

		this.setfilter= function(link, filter)
		{
			if (this.activated.contains(filter)) { link.className= ''; this.activated.drop(filter); }
			else { link.className= 'active'; this.activated.push(filter); }

			document.cookie= 'selector'+this.nr+'='+this.activated.join(this.cookiesep);
			document.cookie= 'test=4';

			if (bm.get(this.li, 'div', 'sub')[0].style.display == 'block') this.applyfilter();
		}

		this.applyfilter= function()
		{
			bm.execute(bm.get(bm.get(this.li, 'ul')[0], 'a'), function(e, x, vars) { if (!window['selector'+vars['nr']].checkfilters(e.parentNode.className)) { bm.moveto(e.parentNode, 'marginRight', 0, 16); bm.fadeto(e, 0, 100); bm.moveto(e.parentNode, 'width', 0); bm.moveto(e, 'width', 0); return; } if (e.parentNode.offsetWidth < 20) bm.moveto(e.parentNode, 'marginRight', 16, 0); bm.fadeto(e, 100, 0); bm.moveto(e.parentNode, 'width', 184); bm.moveto(e, 'width', 184); }, {nr:this.nr});
		}

		this.checkfilters= function(filterstring)
		{
			for (var x= 0; x < this.activated.length; x++) if (!filterstring.split(';').contains(this.activated[x])) return false;
			return true;
		}

		this.init();
	}

	this.init();
 }





 function imageviewer_class(iname)
 {
	this.iname= iname;
	this.ielement;
	this.images= 0;
	this.active= 0;
	this.theme= '';


	this.init= function()
	{
		this.ielement= bm.element(this.iname);

		if (!this.ielement) return;

		this.images= bm.get(this.ielement, 'div', 'field').length;
		this.theme= bm.element(iname+'_background').className;

		if (this.images > 1)
		{
			//bm.element(this.iname+'_left').innerHTML= '<a href="javascript:'+this.iname+'.previous()" onfocus="blur()"><img src="'+bm.element(this.iname+'_left_image').value+'" width="40" height="40" alt="" title="" /></a>';
			//bm.element(this.iname+'_right').innerHTML= '<a href="javascript:'+this.iname+'.next()" onfocus="blur()"><img src="'+bm.element(this.iname+'_right_image').value+'" width="40" height="40" alt="" title="" /></a>';

			//bm.get(this.ielement, 'div', 'control')[0].innerHTML= '<div class="list">' + bm.execute(bm.get(this.ielement, 'div', 'field'), function (e, x, vars) { return '<div class="thumb" onclick="'+vars['iname']+'.goto('+x+');"><div class="image" style="background-image: url(\''+bm.get(e, 'input')[0].value+'&amp;box=200,62\');"></div></div>'; }, { iname : this.iname}).join('') + '</div>';
			
			bm.get(this.ielement, 'div', 'controls')[0].innerHTML= bm.execute(bm.get(this.ielement, 'div', 'field'), function (e, x, vars) { active= (x == 0) ? ' active' : ''; return '<div class="thumb'+active+'" onclick="'+vars['iname']+'.goto('+x+');" style="background-image: url(\''+bm.get(e, 'input')[0].value+'&amp;box=138,250\');"></div>'; }, { iname : this.iname}).join('');
		}

		//this.goto(0);
	}

	this.goto= function(nr)
	{
		if (nr == this.active) return;

		if (nr > this.images - 1) nr= 0;
		if (nr < 0) nr= this.images - 1;

		if (this.images > 1)
		{
			if (this.active != -1)
			{
				bm.get(bm.get(this.ielement, 'div', 'controls')[0], 'div', 'thumb', true)[this.active].className= 'thumb';
				//bm.get(bm.get(this.ielement, 'div', 'controls')[0], 'div', 'image')[this.active].style.backgroundImage= 'url('+bm.get(bm.get(this.ielement, 'td')[this.active], 'input')[0].value+'&box=200,62)';
				if (bm.element('videoplayer_'+this.active)) bm.element('videoplayer_'+this.active).pauseVideo();
			}

			bm.get(bm.get(this.ielement, 'div', 'controls')[0], 'div', 'thumb', true)[nr].className= 'thumb active';
			//bm.get(bm.get(this.ielement, 'div', 'controls')[0], 'div', 'image')[nr].style.backgroundImage= 'url('+bm.get(bm.get(this.ielement, 'td')[nr], 'input')[0].value+'&box=200,85)';
			if (bm.element('videoplayer_'+nr)) bm.element('videoplayer_'+nr).playVideo();


			//bm.moveto(bm.get(this.ielement, 'table')[0], 'left', nr*this.blindwidth*(-1));
			bm.execute(bm.get(this.ielement, 'div', 'field'), function (e) { bm.timer.removework(e); e.style.display= 'none'; });
			
			if (this.theme != bm.get(bm.get(this.ielement, 'div', 'field')[nr], 'input')[1].value)
			{
				this.theme= bm.get(bm.get(this.ielement, 'div', 'field')[nr], 'input')[1].value;
				bm.element(this.iname+'_background').style.display= 'none';
				bm.element(this.iname+'_background').className= bm.get(bm.get(this.ielement, 'div', 'field')[nr], 'input')[1].value;
				bm.get(this.ielement, 'div', 'field')[nr].style.display= 'block';
				bm.fadein(bm.element(this.iname+'_background'));
			}
			else bm.fadein(bm.get(this.ielement, 'div', 'field')[nr]);
		}

		//bm.element(this.iname+'_text').innerHTML= bm.get(bm.get(this.ielement, 'td')[nr], 'div', 'text')[0].innerHTML;
		//bm.element(this.iname+'_textfield').style.display= 'none';
		//bm.moveto(bm.element(this.iname+'_textfield'), 'top', 0, 400);

		this.active= nr;
	}

	this.next= function()
	{
		this.goto(this.active + 1);
	}

	this.previous= function()
	{
		this.goto(this.active - 1);
	}

	this.init();
 }
 
 
 
 
 
 
 function imagezoomer_class(container, zoomdiv)
 {
	this.container= bm.element(container);
	this.zoomdiv= bm.element(zoomdiv);
	this.images= new Array();
	this.opened= -1;
	this.openeddiv= -1;

	this.init= function()
	{
		if (!this.container || document.body.style.maxHeight != '') return;
		
		boxes= (!bm.get(this.container, 'div', 'box')) ? new Array() : bm.get(this.container, 'div', 'box');
		textblocks= (!bm.get(this.container, 'div', 'block')) ? (bm.element('text')) ? new Array(bm.element('text')) : new Array() : bm.get(this.container, 'div', 'block');
		
		var imageblocks= boxes.concat(textblocks);

		this.images= bm.execute(imageblocks, function (e, i) { return bm.execute(bm.get(e, 'img', 'zoom'), function(e, x) { zoom= document.createElement("span"); zoom.className= 'zoom'; bm.addevent(zoom, 'click', function() { imagezoomer.open(i, x); }); e.parentNode.insertBefore(zoom, e); bm.addevent(e, 'click', function() { imagezoomer.open(i, x); }); temp= new Object(); temp.src= e.src.split('box=')[0]+'box='+fullimagesize(); temp.alt= e.alt; return temp; }); });
		
		var imagediv= document.createElement('div');
		imagediv.className= 'image';
		bm.addevent(imagediv, 'click', function() { imagezoomer.close(); });
		this.zoomdiv.appendChild(imagediv);
		
		var textdiv= document.createElement('div');
		textdiv.className= 'text';
		this.zoomdiv.appendChild(textdiv);
		
		var infodiv= document.createElement('div');
		infodiv.className= 'info';
		this.zoomdiv.appendChild(infodiv);
		
		var leftdiv= document.createElement('div');
		leftdiv.className= 'link left';
		bm.addevent(leftdiv, 'click', function() { imagezoomer.previous(); });
		this.zoomdiv.appendChild(leftdiv);
		
		var rightdiv= document.createElement('div');
		rightdiv.className= 'link right';
		bm.addevent(rightdiv, 'click', function() { imagezoomer.next(); });
		this.zoomdiv.appendChild(rightdiv);
		
		var exitdiv= document.createElement('div');
		exitdiv.className= 'link exit';
		bm.addevent(exitdiv, 'click', function() { imagezoomer.close(); });
		this.zoomdiv.appendChild(exitdiv);
	}
	
	this.open= function(i, x)
	{
		if (i == -1) i= this.openeddiv;
		
		if (x < 0) x= this.images[i].length - 1;
		if (x > this.images[i].length - 1) x= 0;

		if (this.images[i].length > 1)
		{
			bm.get(this.zoomdiv, 'div', 'link left')[0].style.display= 'block';
			bm.get(this.zoomdiv, 'div', 'link right')[0].style.display= 'block';
			bm.get(this.zoomdiv, 'div', 'info')[0].innerHTML= x-(-1) + ' / ' + this.images[i].length;
		}
		else
		{
			bm.get(this.zoomdiv, 'div', 'link left')[0].style.display= 'none';
			bm.get(this.zoomdiv, 'div', 'link right')[0].style.display= 'none';
			bm.get(this.zoomdiv, 'div', 'info')[0].innerHTML= '';
		}
		
		this.zoomdiv.style.display= 'block';
		bm.get(this.zoomdiv, 'div', 'image')[0].style.display= 'none';

		bm.get(this.zoomdiv, 'div', 'image')[0].innerHTML= '';
		bm.get(this.zoomdiv, 'div', 'image')[0].style.backgroundImage= 'url(\''+this.images[i][x].src+'\')';

		bm.fadein(bm.get(this.zoomdiv, 'div', 'image')[0]);
		bm.get(this.zoomdiv, 'div', 'text')[0].innerHTML= this.images[i][x].alt;
		
		if (this.opened == -1) bm.fadeto(bm.element('darkbackground'), 90, 0);
		
		this.openeddiv= i;
		this.opened= x;
	}
	
	this.close= function()
	{
		if (this.opened == -1) return;
		this.zoomdiv.style.display= 'none';
		bm.fadeto(bm.element('darkbackground'), 0);
		this.opened= -1;
	}
	
	this.previous= function()
	{
		this.open(-1, this.opened - 1);
	}
	
	this.next= function()
	{
		this.open(-1, this.opened - (-1));
	}
	
	this.init();
 }






 function onYouTubePlayerReady(playerId)
 {
	void(0);
 }
 
 
 
 
 
 var keypressLeft= null;
 var keypressRight= null;
 
 function check_keypress(e)
 {
 	if (!e) e= window.event;
 	if (e.keyCode == 27) imagezoomer.close();
 	
 	if (event.keyCode == 37 && keypressLeft != null) keypressLeft();
	if (event.keyCode == 39 && keypressRight != null) keypressRight();
 }

 document.onkeydown= check_keypress;
 
 
 
 
 function fullimagesize()
 {
 	w= Math.round(document.documentElement.clientWidth / 300) * 300 - 300;
 	h= Math.round(document.documentElement.clientHeight / 300) * 300 - 300;
 	if (w < 500) w= 500;
 	if (h < 300) h= 300;
 	return w + ',' + h;
 }








