/**
 * Demo-JavaScript für die Best of Advertising HTML-Templates
 *
 * ACHTUNG: Bitte unbedingt README.JavaScript lesen
 *
 * @author BlueMars – Gesellschaft für digitale Kommunikation mbH | http://www.bluemars.net/ | Markus Tacker <markus.tacker@bluemars.net>
 */

var BoADemo = new Class({

	initialize: function()
	{
		this.initSearch();
		this.initCategorySelector();
		this.initBoxes();
		if ($('detailComments')) this.initComments();
		this.initSelects();
		if ($('searchCategories')) this.initSearchOptions();
		if ($('searchResultDisplay')) this.initSearchResultDisplay();
		this.initCheckboxes();
	},
	initSearch: function()
	{
		$('searchSuggest').addClass('hidden');
		$('searchterm').addEvent('focus', function(ev) {
			$('searchForm').addClass('active');
			$('searchSuggest').removeClass('hidden');
		});
//		$('searchterm').addEvent('blur', function(ev) {
//			$('searchForm').removeClass('active');
//			$('searchSuggest').addClass('hidden');
//		});
	},
	initCategorySelector: function()
	{
		$('categorySelector').getChildren('li.cs').each(function(li) {
			li.addEvent('mouseenter', function(ev) {
				var li = $(ev.target);
				if (li.get('tag') !== 'li') li = li.getParent('li');
				li.getChildren('.toggleContent').removeClass('hidden');
				li.addClass('cs-active');
			});
			li.addEvent('mouseleave', function(ev) {
				var li = $(ev.target);
				if (li.get('tag') !== 'li') li = li.getParent('li');
				li.getChildren('.toggleContent').addClass('hidden');
				li.removeClass('cs-active');
			});
			li.getChildren('.toggleContent').addClass('hidden');
		});
	},
	initBoxes: function()
	{
		$$('.box .toggle').addEvent('click', function(ev) {
			var toggle = $(ev.target);
			toggle.toggleClass('toggle-active');
			var myInfo = toggle.getParent('div.box-info');
			if (myInfo) myInfo.toggleClass('box-info-active');
		});
	},
	initSearchOptions: function()
	{ 
		$('toggleOptions').getElement('.toggle').addEvent('click', function(ev) {
			$(ev.target).toggleClass('toggle-active');
			$('searchCategories').toggleClass('hidden');
			$('resetSearch').toggleClass('hidden');
		});
	},
	initSelects: function()
	{
		$$('ul.select').each(this.hideSelectOptionElements);
		$$('ul.select').addEvent('click', function(ev) {
			var ul = $(ev.target);
			if (ul.get('tag') !== 'ul') ul = ul.getParent('ul');
			if (ul.hasClass('select-active')) {
				this.hideSearchOptionSelect(ul);
			} else {
				this.showSelectOptionSelect(ul);
			}

		}.bind(this));
	},
	showSelectOptionSelect: function(ul)
	{
		if (ul.hasClass('select-active')) return;
		ul.addClass('select-active');
		ul.removeClass('select-inactive');
		new Element('li', {'class': 'header'}).inject(ul, 'top');
		new Element('li', {'class': 'footer'}).inject(ul, 'bottom');
		ul.getChildren('li').removeClass('hidden');
	},
	hideSearchOptionSelect: function(ul)
	{
		if (!ul.hasClass('select-active')) return;
		ul.removeClass('select-active');
		ul.addClass('select-inactive');
		ul.getElement('li.header').destroy();
		ul.getElement('li.footer').destroy();
		this.hideSelectOptionElements(ul);
	},
	hideSelectOptionElements: function(ul)
	{
		if (ul.hasClass('select-active')) return;
		ul.getChildren('li').each(function(li, index) {
			if (index > 0) {
				li.addClass('hidden');
			}
		});
	},
	initSearchResultDisplay: function()
	{
		$('searchResultDisplay').addEvent('click', function(ev) {
			var t = $(ev.target);
			if (t.hasClass('boxes')) this.showSearchResult('Boxes');
			if (t.hasClass('list')) this.showSearchResult('List');
		}.bind(this));
		$$('div.searchResultDisplay').addClass('hidden');
		$$('div.searchResultDisplayBoxes').removeClass('hidden');
	},
	showSearchResult: function(type)
	{
		$$('div.searchResultDisplay').addClass('hidden');
		$$('div.searchResultDisplay' + type).removeClass('hidden');
		$$('#searchResultDisplay li').each(function(li) {
			if (li.hasClass(type.toLowerCase())) {
				li.addClass(type.toLowerCase() + '-active');
			} else {
				li.set('class', li.get('class').replace(/[a-z]+-active/, ''));
			}
		});
	},
	initComments: function()
	{
		$('commentsToggle').addEvent('click', function(ev) {
			var toggle = $(ev.target);
			if (toggle.hasClass('dropdown-active')) {
				toggle.removeClass('dropdown-active');
				toggle.getPrevious('span.background').removeClass('background-active');
				$('detailCommentsContent').addClass('hidden');
			} else {
				toggle.addClass('dropdown-active');
				toggle.getPrevious('span.background').addClass('background-active');
				$('detailCommentsContent').removeClass('hidden');
			}
		});
		$('commentFormToggle').addEvent('click', function(ev) {
			var toggle = $(ev.target);
			if (toggle.hasClass('dropdown-active')) {
				toggle.removeClass('dropdown-active');
				$('commentForm').addClass('hidden');
			} else {
				toggle.addClass('dropdown-active');
				$('commentForm').removeClass('hidden');
			}
		});
	},
	initCheckboxes: function()
	{
		$$('label.checkbox').each(function(label) {
			label.addEvent('click', function(ev) {
				var label = $(ev.target);
				if (label.get('tag') !== 'label') label = label.getParent('label');
				var cbSpan = $(label.get('for') + '-box');
				var input = $(label.get('for'));
				cbSpan. toggleClass('checkbox-checked');
				input.set('value', cbSpan.hasClass('checkbox-checked') ? '1' : '');
			});
		});
	}
});







window.addEvent('domready', function() {
	new BoADemo();
});




