
var switchbar,
		hl;

function enable_controlbar() {

	switchbar = [$('logo'),
				 $('news'),
				 $('twitter'),
				 $('cart_btn')];

	$$('#logo img')[0].addEvent('mouseenter', function() {
		showfineprint('');
	});

	var viewmode_link = '/liste/';

	if(window.location.pathname.indexOf('liste') > 0) {
		$('viewmode_switch').setStyle('left', 38);
		viewmode_link = '/';
	}

	$('viewmode').addEvent('click', function() {
		var viewmode_switch = $('viewmode_switch');
		var tween = new Fx.Tween(viewmode_switch, {
			'property': 'left',
			'duration': 100
		});
		if(viewmode_switch.getStyle('left') == '25px') {
			tween.start(38);
		}
		else {
			tween.start(25);
			document.cookie = 'listview=yes; expires=Thu, 1 Jan 1970 00:00:00 UTC; path=/';
		}

		window.location.pathname = viewmode_link;
	});

	$('cart_btn').addEvent('click', function() {
		var img = this.getChildren('img')[0];

		if(img.getStyle('top') == '0px') {
			img.setStyle('top', -19);
			hl.updateHash('/einkaufskorb/');
		}
		else {
			img.setStyle('top', 0);
			hl.updateHash('');
		}
	});

	$('category_menu').addEvents({
		'mouseenter': function() {
			if(this.getStyle('overflow') == 'hidden') {
				this.getElement('img').setStyle('top', -32);
			}
		},
		'mouseleave': function() {
			if(this.getStyle('overflow') == 'hidden') {
				this.getElement('img').setStyle('top', 0);
			}
		},
		'click': function(ev) {
			var menu = $('category_menu');
			ev.stopPropagation();
			if(menu.hasClass('itsopen')) {
				console.log('x');
				closeit();
			}
			else {
				menu.setStyle('overflow', 'visible');
				menu.getElement('img').setStyle('top', -64);
				$('category_name').addClass('white');
				menu.addClass('itsopen');
				$$('.close_menu *').each(function(closer) {
					closer.addEvent('click', closeit);
				});
			}
		}
	});

	var closeit = function() {
		var menu = $('category_menu');
		if(menu.hasClass('itsopen')) {
			menu.setStyle('overflow', 'hidden');
			menu.getElement('img').setStyle('top', 0);
			$('category_name').removeClass('white');
			menu.removeClass('itsopen')
			$$('.close_menu *').each(function(closer) {
				closer.removeEvent('click', closeit);
			});
		}
	}

	$$('#category_dropdown .category_name').each(function(item, index, array) {

		item.addEvent('click', function(ev) {
			ev.stopPropagation();

			array.each(function(item2) { item2.removeClass('selected'); });
			item.addClass('selected');

			var filter = item.get('text');

			Cookie.write('filter', filter, {'path': '/'});

			RefreshCategoryMenu();

			if($chk($('list'))) { limitList(); }
			else { putiton(); }

		});
	});

	$('rss_btn').addEvent('click', hide_rss);
	$('cancel_feed').addEvent('click', hide_rss);
	$('create_feed').addEvent('click', create_feed);
	$('rss_form').addEvent('submit', function(ev) {
		ev.preventDefault();
		create_feed();
	});

	function create_feed() {
		if($chk($('rss_output'))) { $('rss_output').dispose(); }
		var values = $('rss_form').toQueryString();
		var feedUrl = domainname + '/feeds/klotz';
		var c = 0;

		if(values.contains('Tweets')) { feedUrl += '/Tweets'; c++; }
		if(values.contains('ObjetsTrouves')) { feedUrl += '/ObjetsTrouves'; c++; }
		if(values.contains('Meldungen')) { feedUrl += '/Meldungen'; c++; }
		if(values.contains('Produkte')) { feedUrl += '/Produkte'; c++; }
		if(values.contains('Pressetexte')) { feedUrl += '/Pressetexte'; c++; }
		if(values.contains('Podcasts')) { feedUrl += '/Podcasts'; c++; }

		if(c==6) { feedUrl = domainname + '/feeds/klotz/'; }

		if(c>0) {
			var output = new Element('div', {
				'id': 'rss_output',
				'html': '<a href="'+feedUrl+'">Ihr RSS-Feed (bitte klicken)</a>'
			}).inject('buttons', 'before');
		} else {
			var output = new Element('div', {
				'id': 'rss_output',
				'html': '<span class="red">Bitte wählen Sie mindestens einen Inhalt aus.</span>'
			}).inject('buttons', 'before');
		}
	}

	function hide_rss() {
		var img = $('rss_btn').getChildren('img')[0];
		var rss = $('rss-composer');
		if($chk($('rss_output'))) { $('rss_output').dispose(); }

		if(img.getStyle('top') == '0px') {
			img.setStyle('top', -32);
			rss.tween('top', 32);
			$('rss_form').getElements('input').each(function(item) {
				item.checked = true;
			});
		}
		else {
			img.setStyle('top', 0);
			rss.tween('top', -150);
		}
	}

}

function showfineprint(which) {

	switchbar.each(function(item, index, array) {
		if(item!=null) { item.dispose(); }
	});

	if($('controlbar_fineprint') != null) {
		$('controlbar_fineprint').destroy();
	}

	var html;
	if(which == '') {
		html = '<a href="#/agb/">AGB</a>&ensp;•&ensp;'
			 + '<a href="#/impressum/">Impressum</a>&ensp;•&ensp;'
			 + '<a href="#/kontakt/">Kontakt</a>';
	}
	else if(which == 'agb') {
		html = 'AGB&ensp;•&ensp;'
			 + '<a href="#/impressum/">Impressum</a>&ensp;•&ensp;'
			 + '<a href="#/kontakt/">Kontakt</a>';
	}
	else if(which == 'impressum') {
		html = '<a href="#/agb/">AGB</a>&ensp;•&ensp;'
			 + 'Impressum&ensp;•&ensp;'
			 + '<a href="#/kontakt/">Kontakt</a>';
	}
	else if(which == 'kontakt') {
		html = '<a href="#/agb/">AGB</a>&ensp;•&ensp;'
			 + '<a href="#/impressum/">Impressum</a>&ensp;•&ensp;'
			 + 'Kontakt';
	}

	var events;
	if(which == '') {
		events = {
			'mouseleave': function() {
				controlbar_fineprint.dispose();
				switchbar.each(function(item, index, array) {
					item.inject('controlbar', 'top');
				});
			}
		}
	}
	else {
		events = {}
	}

	var controlbar_fineprint = new Element('div', {
		'id':'controlbar_fineprint',
		'html': html,
		'events': events
	}).inject('controlbar', 'top');

}

function RefreshCategoryMenu() {

	var filter = Cookie.read('filter') || 'Übersicht';

	var colors = {
		'Pressetexte':'#000000',
		'Podcasts':'#0069FF',
		'Produkte':'#FF4500',
		'ObjetsTrouves':'#00FF00',
		'Objets trouvés':'#00FF00',
		'Meldungen':'#FFFF00',
		'Übersicht':'#D5D5D5'};

	$('category_name').set('text', filter);
	$('category_menu').setStyles({
		'overflow': 'hidden',
		'background-color': colors[filter]});
	$('category_menu').getElement('img').setStyle('top', 0);
	$('category_name').removeClass('white');

	$$('#category_dropdown .category_name').each(function(item) {
		item.removeClass('selected');
		if(item.get('text') == filter) { item.addClass('selected'); }
	});

}


function start_hashlistener() {

	hl = new HashListener(blank_page='/media/interface/blank.html');
	var viewer_regex = /\w+/;
	var viewer_location = window.location.hash.match(viewer_regex) || ['xx'];

	hl.addEvent('hash-changed', function(new_hash){

		if(Boolean(new_hash))
		{
			var new_location = new_hash.match(viewer_regex) || ['xx'];

			var req = new Request.HTML({
				'url': concatPaths(['/', new_hash]),
				'evalScripts': false,
				'onSuccess': function(tree, elements, html, js){
					if(viewer_location[0] != new_location[0]) {
						fadeout_viewer();
						fadein_viewer(html, js);
					}
					else {
						if($chk($('viewer'))) $('viewer').destroy();
						var temp = new Element('div').set('html', html);
						document.body.adopt(temp.getChildren());
						eval(js);
					}

					if($chk($('paperstyle'))) $('paperstyle').destroy();
					viewer_location = new_location;
				}
			});

			req.get();
		}
		else
		{
			fadeout_viewer();
			if($chk($('paperstyle'))) $('paperstyle').destroy();
			viewer_location = [''];
		}

	});

	hl.start();
}



var fadeout_viewer = function() {
	if($chk($('viewer')))
	{
		var viewer = $('viewer');
		var height = (viewer.getSize().y + 50) * -1;
		viewer.set('id', 'oldviewer');
		viewer.tween('top', height);

		var p = (function(){
			if(viewer.getStyle('top') == height+'px') {
				viewer.destroy();
				$clear(p)
			}
		}).periodical(500);
	}
}



var fadein_viewer = function(html, js) {

	var temp = new Element('div').set('html', html),
		viewer = temp.getChildren()[0],
		height = 0;

	viewer.setStyle('top', -5000);
	document.body.grab(viewer);

	height = (viewer.getSize().y + 50) * -1;
	viewer.tween('top', height, 32);

	if($chk($('oldviewer')))
	{
		var p = (function(){
			if($chk($('oldviewer')) == false) {
				eval(js);
				$clear(p);
			}
		}).periodical(500);
	}
	else
	{
		eval(js);
	}
}



function concatPaths(paths) {
	var path = ''
	var beginn = /^\//
	var end = /\/$/

	paths.each(function(p) {
		if(!beginn.test(p)) path += '/';
		if(end.test(p)) path += p.substring(0, p.length - 1);
		else path += p
	});

	return path
}

