//viktorhachmang.nl/js/site.js
//(c)2011-04-16/17, marcel duin, sir(a)thief.nl
var bl,dbg,scr,notes;
function T(str) { 
	return document.createTextNode(str)
};
function H(tn,cl,cnt,els,ps) {
	var el = document.createElement(tn);
	if(cl) el.className = cl;
	if(cnt) el.appendChild(T(cnt));
	if(els) {
		if(!els.length) els = [els];
		do if(els[0] instanceof Node) el.appendChild(els[0]); while(els.shift()) 
	}
	if(ps) for(var x in ps) el[x] = ps[x];
	return el
};
function m(e) {
	var el = e.target;
	if(el.hasClass('abt')) el.set('text',el.get('text')=='about'?'Viktor Hachmang':'about');
	el.getParent().toggleClass('open')
};
function s() {
	bl.empty();
	var sy = window.getScroll().y,wh=window.getHeight();
	$$('.cont').each(function(el) {
		var ot = el.offsetTop;
		if(!el.hasClass('shown')&&ot<sy+wh+300) el.set('tween',{duration:2000}).fade('hide').addClass('shown').fade('in');
		if(el.hasClass('shown')&&ot>sy-300&&ot<sy+wh-50) {
			if(bl.childNodes.length>0) bl.appendChild(T(', '));
			bl.appendChild(H('a',false,el.id.substr(1),false,{href:'#'+el.id.substr(1),title:el.firstChild.firstChild.title}));
		}
	});
	return s
};
function h() {
	if(window.location.hash) {
		var el = $('c'+window.location.hash.substr(1));
		if(!el) return false;
		var ps = el;
		do if(ps.tagName) ps.addClass('shown'); while((ps=ps.previousSibling));
		scr.toElement(el);
	}
	return h
};
function f(e,el) {
	var i = (el||e.target.getParent()).getElements('img'),c=0;
	do if(i[c].hasClass('shown')&&new Fx.Tween(i[c]).addEvent('complete',function(e){e.removeClass('shown');}).start('opacity',0)) break; while(++c<i.length);
	(i[c+1]||i[0]).fade('hide').addClass('shown').fade('in');
};
Element.Events.hashchange = {
    onAdd: function(){
        var h = self.location.hash;
        function hc(){if(h == self.location.hash) return;h = self.location.hash;window.fireEvent('hashchange',h);document.fireEvent('hashchange',h);};
        if ('onhashchange' in window) window.onhashchange = hc;
        else hc.periodical(50)
    }
};
window.addEvent('domready',function() {
	dbg = $('br'),bl = $('bl'),notes = $('notes'),scr = new Fx.Scroll(document.body);
	$$('.descr').each(function(e) {
		var n;
		if(e.getNext().hasClass('type')) n=e.getNext().addClass('item');
		var r = e.getParent().id.substr(1);
		e.href = '#'+r;
		notes.insertBefore(H('span','item',false,[H('span','rid',r),e,(n?T(',\ '):false)]),notes.getLast());
		if(n) { if(n.getParent().getNext()) n.appendText(', '); notes.insertBefore(n,notes.getLast()) }
	});
	$$('.head').each(function(e){e.addEvent('click',m);});
	$$('.img').each(function(e) { if(e.getElements('img').length>1) {e.addClass('fader');e.addEvent('click',f);f(false,e)}});
	window.addEvent('scroll',s());
	window.addEvent('hashchange',h())
});

