addLink = function(boxes, toHide, toShow) {
	boxes.eq(toHide).fadeOut('slow');
	boxes.eq(toShow).fadeIn('slow');
}

$.fn.scrollableBoxes = function() {
	var count = $(this).length;
	if(count < 2) return;

	var boxes = $(this);

	// show only first box, hide other:
	for(var i = 1; i < count; i++) {
		boxes.eq(i).hide();
	}

	// add navigation
	for(var i = 0; i < count; i++) {
		// create nav element
		var nav = document.createElement('div');
		$(nav).addClass('box-navigation');

		// create nav links
		var html = '';
		html += '<span id="box-prev-'+i+'" box_id="'+i+'" class="navlinks box-prev"><span>&lt;</span></span>';
		html += ' '+(i+1)+'/'+count+' ';
		html += '<span id="box-next-'+i+'" box_id="'+i+'" class="navlinks box-next"><span>&gt;</span></span>';
		$(nav).html(html);

		// append nav to box-content
		boxes.eq(i).find('.inside-box').after(nav);

		// activate nav links
		if(i > 0) {
			$('#box-prev-'+i).click(function() {
				id = parseInt($(this).attr('box_id'));
				addLink(boxes, id, id-1);
			}).css('background-position', 'left top');
		}
		if(i < count-1) {
			$('#box-next-'+i).click(function() {
				id = parseInt($(this).attr('box_id'));
				addLink(boxes, id, id+1);
			}).css('background-position', 'right top');
		}
	}
}


/**
 * make checkboxes dependent from each other
 */
$.fn.makeDependent = function(){
	var checkboxes = $(this);
	var children = checkboxes.filter(':gt(0)');
	var main = checkboxes.eq(0);

	main.change(function(){
		if(this.checked){
			children.each(function(){
				this.checked = false;
			});
		}
	});
	children.change(function(){
		var cb = this;
		var checkbox = $(cb);

		if(cb.checked){
			main.get(0).checked = false;

			// uncheck partner dbs
			$('#radio-search-ddp, #radio-search-ap').each(function(){
				this.checked = false;
			});
		} else if(children.filter(':checked').length == 0) {
			main.get(0).checked = true;
			main.trigger('change');
		}
	});
}

/**
 * make checkboxes behave like radio buttons
 */
$.fn.behaveLikeRadio = function(){
	var buttons = $('#radio-search-ddp, #radio-search-ddpi, #radio-search-ap');
	
	// make sure there's only one button checked initially
	if(buttons.find(':checked') > 0){
		buttons.find(':checked:gt(0)').each(function(){
			this.checked = false;
		});
	}

	// uncheck all other checkboxes when one checkbox is checked
	buttons.change(function(){
		var cb = this;
		var id = '#'+cb.id;

		if(cb.checked){
			buttons.filter(':not('+id+')').each(function(){
				this.checked = false;
				$(this).trigger('change');
			});

			// uncheck internal/combined channels
			document.getElementById('channel-ddp_archive').checked = false;
			document.getElementById('channel-ddp_news').checked = false;
			document.getElementById('channel-ddp_own').checked = false;

			if(id != '#radio-search-ddpi'){
				// if partner db is selected uncheck stocks
				$('.search-stocks :checkbox').filter(':gt(0)').each(function(){
					this.checked = false;
				});
			}
		}
	});
}

/**
 * combine channels using another channel
 */
$.fn.combineChannels = function(){
	// handle clicks on ddp-archive checkbox
	$('#cb-ddp_archive').change(function(){
		var channel_archive = document.getElementById('channel-ddp_archive');
		var channel_news = document.getElementById('channel-ddp_news');
		var channel_own = document.getElementById('channel-ddp_own');

		if(this.checked){
			if(document.getElementById('cb-ddp_news').checked){
				channel_archive.checked = false;
				channel_news.checked = false;
				channel_own.checked = true;
			} else {
				channel_archive.checked = true;
				channel_own.checked = false;
			}
		} else {
			channel_archive.checked = false;
			channel_news.checked = document.getElementById('cb-ddp_news').checked;
			channel_own.checked = false;
		}
	});

	// handle clicks on ddp-news checkbox
	$('#cb-ddp_news').change(function(){
		var channel_archive = document.getElementById('channel-ddp_archive');
		var channel_news = document.getElementById('channel-ddp_news');
		var channel_own = document.getElementById('channel-ddp_own');

		if(this.checked){
			if(document.getElementById('cb-ddp_archive').checked){
				channel_archive.checked = false;
				channel_news.checked = false;
				channel_own.checked = true;
			} else {
				channel_news.checked = true;
				channel_own.checked = false;
			}
		} else {
			channel_archive.checked = document.getElementById('cb-ddp_archive').checked;
			channel_news.checked = false;
			channel_own.checked = false;
		}
	});
}



/**
 * adjust box heights in offerlisting template
 */
$.fn.adjustBoxHeights = function(){
	if($(this).length == 0) return; // nothing to do

	var h_content	= $('#content').height();
	var h_sidebox	= $('#leftcontent .sidebox').height();
	var h_offset	= 55;

	if(h_content > h_sidebox){
		$('#leftcontent').height(h_content + h_offset);
		$('#leftcontent .sidebox').height(h_content);
		$('#leftcontent .sidebox .searchform-elements').height(h_content - h_offset);
	} else {
		$('#content').height(h_sidebox);
	}
}

$.fn.multipleSlideshows = function(){
	if($(this).length == 0) return; // nothing to do

	var images = $('img', this);
	if(images.length == 0) return; // nothing to do

	// gallery id template
	var gallery = 'Gallery12Container{{ID}}b43';

	// find objects
	var obj = $('object', this);

	// hide all objects except the first one
	obj.filter(':not(:first)').each(function(i, e){
		$(e).hide();
	});

	// loop all images and bind click handler
	images.each(function(i, el){
		$(el)
		.css('cursor', 'pointer')
		.click(function(evt){
			var coll_id = $(this).attr('id').substr(2);
			var gall_id = gallery.replace(/\{\{ID\}\}/, coll_id);
if(window.console) window.console.debug(evt, this, coll_id, gall_id);
			obj.each(function(i, e){
				if(e.id == gall_id){
					if(window.console) window.console.log('showing: ' + gall_id);
					$(e).show();
				} else {
					if(window.console) window.console.log('hiding: ' + $(e).attr('id'));
					$(e).hide();
				}			
			});
		});
	});
}


$(document).ready(function() {
	// language selection
	$('#topmenu .lc-deu_deu span').text("Deutsch");
	$('#topmenu .lc-eng_gbr span').text("English");
	$('#topmenu .lc-eng_usa span').text("English");

	// scrollable boxes
	$('#leftcontent .sidebox').scrollableBoxes();

	// multiple slideshows boxes
	$('#box_text_43 .article-content').multipleSlideshows();

	// make database checkboxes behave like radio buttons
	$('#radio-search-ddp, #radio-search-ddpi, #radio-search-ap').behaveLikeRadio();

	// make checkboxes dependent from each other 
	$('.search-stocks :checkbox').makeDependent();

	// offers listing
	$('.page-offerlisting').adjustBoxHeights();

	// combine channels to another channel
	$('#searchform').combineChannels();

/* disabled, breaks the whole script
	// check searchform settings before submitting the form
	$('#searchform').submit(function(){
		// check main databases
		if(document.getElementById('radio-search-ddpi').checked || document.getElementById('radio-search-ap').checked){
			document.getElementById('channel-ddp_own').checked = false;
			document.getElementById('channel-ddp_news').checked = false;
			document.getElementById('channel-ddp_archive').checked = false;
		}
		
		// check internal/combined channels
		if(document.getElementById('channel-ddp_own').checked && !(document.getElementById('cb-ddp_archive').checked && document.getElementById('cb-ddp_news')){
			document.getElementById('channel-ddp_own').checked = false;
		}
		if(document.getElementById('channel-ddp_news').checked && !document.getElementById('cb-ddp_news').checked){
			document.getElementById('channel-ddp_news').checked = false;
		}
		if(document.getElementById('channel-ddp_archive').checked && !document.getElementById('cb-ddp_archive').checked){
			document.getElementById('channel-ddp_archive').checked = false;
		}
	});
*/
});

$(window).load(function(){
	// re-adjust (maybe heights are not correct after dom-ready)
	$('.page-offerlisting').adjustBoxHeights();
});


/**
 * toggle display of enhanced search fields
 */
var enhancedSearchDisplay = true; 
var toggleEnhancedSearch = function(){
	return; // do not toggle display

	// list of form fields (div id attributes)
	var enhancedSearchFields = ['search_date'];

	for(var i = 0; i < enhancedSearchFields.length; i++){
		var e = document.getElementById(enhancedSearchFields[i]);
		if(!e) continue;

		if(enhancedSearchDisplay){
			e.style.display = 'none';
		} else {
			e.style.display = 'block';
		}
	}

	enhancedSearchDisplay = !enhancedSearchDisplay;
}
