document.addEvent('domready', function(){

	// search autocompleter
	var input          = $('projectAutoComplete');
    var defaultValue   = document.location.hostname.indexOf('de.') == 0 ? 'Durchsuchen' : 'Browse';
    var inputIsCleared = false;
    input.value 	   = defaultValue;
    input.addEvent('focus', function(){
        if( input.value == defaultValue && !inputIsCleared ) {
            input.value = '';
            inputIsCleared = true;
        }
        else {
            input.select();
        }
    });
    input.addEvent('blur', function(){
        if( !input.value ) {
            input.value = defaultValue;
            inputIsCleared = false;
        }
    });
    var selectedProject;
    input.addEvent('keydown', function(e){
        if( e.key != 'enter' || selectedProject === undefined ) { return; }
        document.location.href = '/comments/' + selectedProject;
    });
    var ac = new Autocompleter.Request.JSON.Hash(input, '/search/json', {
        width:347,
        filterSubset: true,
        indicatorClass: 'autocompleter-loading',
        injectChoice: function(token, key){
            var choice = new Element('li', {'html': this.markQueryValue(token)});
            choice.inputValue = token;
            choice.set('projectId', key);
            this.addChoiceEvents(choice).inject(this.choices);
            choice.addEvent('click', function() {
                document.location.href = '/comments/' + key;
            });
        }
    });
    ac.addEvent('onSelection', function(element, selected, value, input){
        selectedProject = selected.get('projectId');
    });

    $$('.blogPost p a').each(function(link){
        if( !link.get('target') && link.get('href') && link.get('href').indexOf('http://') == 0 ) {
            link.set('target', '_blank');
        }
    });
    var lastPost = $$('.blogPost').getLast();
    var reqRunning = false;
    var queryString = new Querystring(document.location.search.replace(/^\?/, ''));
    var pageNumber = 0;
    var nextLink = $('content').getElements('ul.forward_backward a').getLast();
    if( queryString.page ) {
        pageNumber = queryString.page;
    }
    
	// autoloading of posts is disabled
	if( false && Browser.Engine.gecko && lastPost ) {
        var lastPostY = lastPost.getPosition().y;
        var doLoad = true;
        $(document).addEvent('scroll', function(e){
            if( !doLoad || reqRunning ) { return; }
            var scrollY = $(document).getScroll().y;
            if( scrollY < lastPostY ) { return; }
            reqRunning = true;
            var req = new Request.HTML({
                url: '',
                evalScripts: true
            });
            req.addEvents({
                success: function(tree, elements, html, js) {
                    var root;
                    $A(tree).each(function(el){
                        if( el.hasClass && el.hasClass('postList') ) {
                            root = el;
                        }
                    });
                    root.removeClass('postList');
                    var blogPost = root.getElement('.blogPost');
                    if( blogPost ) {
                        root.getElement('ul.forward_backward').dispose();
                        root.injectAfter(lastPost);
                        if( nextLink ) {
                            nextLink.setProperty('href',
                                nextLink.getProperty('href').replace('\d+$', pageNumber + 1));
                        }
                        lastPost = $$('.blogPost').getLast();
                        lastPostY = lastPost.getPosition().y;
                        var imageAnchors = root.getElements('.blogPost a[rel^="lightbox"]');
                        imageAnchors.each(function(anchor){
                            Lightbox.anchors.push(anchor);
                            anchor.onclick = Lightbox.click.pass(anchor, Lightbox);
                        });
                        new Tips( root.getElements('.blogPost img'), { className: 'tool-tip' } );
                    }
                    else {
                        doLoad = false;
                        if( nextLink ) {
                            nextLink.dispose();
                        }
                    }
                    reqRunning = false;
                }
            });
            req.get({
                nowrap: true,
                page: ++pageNumber
            });
        });
    }
    var categoryListItems = $$('#categories ul.category li', '#content ul.forward_backward li');
    var fxDuration = 0;
    categoryListItems.each(function(el){
        el.set('tween', { property: 'background-color', duration: fxDuration });
        var link = el.getFirst('a');
        link.set('tween', { property: 'color', duration: fxDuration });
        var originalLinkColor = link.getStyle('color');
        var hr = el.getParent();
        hr.set('tween', { property: 'background-color', duration: fxDuration });
        el.addEvents({
            mouseover: function(e) {
                setTimeout(function(){ el.get('tween').start('#202020'); }, 0);
                setTimeout(function(){ hr.get('tween').start('#202020'); }, 0);
                setTimeout(function(){ link.get('tween').start('#FFFFFF'); }, 0);
            },
            mouseout: function(e) {
                setTimeout(function(){ el.get('tween').start('#FFFFFF'); }, 0);
                setTimeout(function(){ hr.get('tween').start('#CCCCCC'); }, 0);
                setTimeout(function(){ link.get('tween').start(originalLinkColor); }, 0);
            },
            click: function(e) {
                document.location.href = link.href;
            }
        });
        //$('logo_top').addEvent('mouseover', function(){ borderFx.start('#CCCCCC'); });
        //$('content').addEvent('mouseover', function(){ borderFx.start('#CCCCCC'); });
    });
});

function initPlayer( playerContainer ) {
	var swfFile = this.swfFile;
	var videoPreview = $E('img', playerContainer);

	var playerContainerSize = videoPreview.getSize();
	var playerContainerCoordinates = videoPreview.getCoordinates();

	if (!playerContainer.hasClass('noOverlay')) {
		var overlay = new Element('div', {
			'class': 'videoOverlay'
		});
		overlay.setStyles({
			width: playerContainerSize.size.x,
			height: playerContainerSize.size.y,
			position: 'absolute',
			top: playerContainerCoordinates.top,
			left: playerContainerCoordinates.left,
			cursor: 'pointer',

			//'background-color' : '#000',
			opacity: 0.5
		}).inject(playerContainer);
	};
	playerContainer.setStyle('cursor', 'pointer');
	playerContainer.addEvent('click', function(){
		playerContainer.removeEvents('click');
		var playerHeight;
		var playerWidth;
		var playerDisplayHeight;
		if (undefined != videoPreview) {
			playerHeight 		= videoPreview.height + 20;
			playerDisplayHeight = videoPreview.height;
			playerWidth 		= videoPreview.width;
		}
		else {
			playerHeight        = 220;
			playerDisplayHeight = 200;
			playerWidth         = 400;
		}
		var s1 = new SWFObject(
			swfFile,
			"mediaplayer",
			playerWidth,
			playerHeight,
			"8"
		);

		s1.addParam("allowfullscreen","true");

		s1.addVariable( "width",         playerWidth                          );
		s1.addVariable( "height",        playerHeight );
		//s1.addVariable( "displayheight", playerDisplayHeight                  );
		s1.addVariable( "file",          playerContainer.attributes.rel.value );

		if(undefined != videoPreview)
			s1.addVariable( "image",  videoPreview.src );

		s1.addVariable("bufferlength", 2)

		//s1.addVariable( "stretching", "fill" );

		s1.addVariable( "lightcolor",  "0xffffff" );
		s1.addVariable( "frontcolor",  "0x666666" );
		s1.addVariable( "backcolor",   "0x000000" );
		s1.addVariable( "screencolor", "0x000000" );

		s1.addVariable( "autostart",   "true" );

		s1.write(playerContainer);
	});
}

function Querystring(qs) { // optionally pass a querystring to parse
	this.params = {};

	if (qs == null) qs = location.search.substring(1, location.search.length);
	if (qs.length == 0) return;

// Turn <plus> back to <space>
// See: http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.13.4.1
	qs = qs.replace(/\+/g, ' ');
	var args = qs.split('&'); // parse out name/value pairs separated via &

// split out each name=value pair
	for (var i = 0; i < args.length; i++) {
		var pair = args[i].split('=');
		var name = decodeURIComponent(pair[0]);

		var value = (pair.length==2)
			? decodeURIComponent(pair[1])
			: name;

		this.params[name] = value;
	}
}

Querystring.prototype.get = function(key, default_) {
	var value = this.params[key];
	return (value != null) ? value : default_;
}

Querystring.prototype.contains = function(key) {
	var value = this.params[key];
	return (value != null);
}

