/*
 * Diashow Image Pagination. Images will be swapped in the specified
 * time interval (diashowTimer). Images can also be manually cycled
 * by pressing the forward and backward arrows.
 */

function initDiashow() {
	$('#marginal .diashow').each(function(i) {
		var diashowTimer,
			diashowInterval = 7000, /* time between image swaps (7s) */
			diashowIndex = 0, /* current image index */
			
			that = this,
	    	diashowNumImages = $('li', that).size(),
	    	pager = $('div.dia-pager', that);
		
	    function triggerDiashow() {
	    	$('a.pgf', pager).trigger('click');
	    }
		function handleDiashowBack() {
		    window.clearInterval(diashowTimer);
		    if ($('li.show', that).prev().size() > 0) {
		        $('li.show', that).removeClass('show').prev().addClass('show');
		        diashowIndex--;
		    } else {
		        $('li.show', that).removeClass('show');
		        $('li:last', that).addClass('show');
		        diashowIndex = diashowNumImages-1;
		    }
		    $('span.from', pager).html(diashowIndex+1);
		    diashowTimer = window.setInterval(triggerDiashow, diashowInterval);
		    
		    return false;
		}
		
		function handleDiashowForward() {
		    window.clearInterval(diashowTimer);
		
		    if ($('li.show', that).next().size() > 0) {
		        $('li.show', that).removeClass('show').next().addClass('show');
		        diashowIndex++;
		    } else {
		        $('li.show', that).removeClass('show');
		        $('li:first', that).addClass('show');
		        diashowIndex = 0;
		    }
		    $('span.from', pager).html(diashowIndex+1);
		    
		    diashowTimer = window.setInterval(triggerDiashow, diashowInterval);
		    
		    return false;
		}
	    
	    if (diashowNumImages > 0) {
	        $('span.from', pager).html(diashowIndex+1);
	        $('span.to', pager).html(diashowNumImages);
	
	        $('a.pgb', pager).click(handleDiashowBack);
	        $('a.pgf', pager).click(handleDiashowForward);
	
	        diashowTimer = window.setInterval(triggerDiashow, diashowInterval);
	    }
	})
};

var $initialRemoveLink  = null;
var initialSearchSelect = null;
var searchSelectCounter = 1; // current number of selects
var searchSelectOptions = 0; // the number of options in initial select
var removeLinkTextString = "";
function initSearchScopeSection() {
	if ($('#main #search-advanced .expanding').size() == 0) {
		return false;
	}
	initSearchCheckboxToggle();

	// toggle expandable radio-button sections
	$('#main #search-advanced .expanding .form-field-wide').siblings().not('.open').hide().parent().css("paddingBottom","0");
    $('#main #search-advanced .expanding .form-field-wide input').click(function(){
        if ($(this).parent().siblings('.open').size() == 0) {
        	$(this).parent().siblings().addClass("open").show().parent().css("paddingBottom","7px");
        	$(this).parent().parent().siblings('.expanding').find('.open').removeClass("open").hide().parent().css("paddingBottom","0");
        }
        return true;
    });

	// init dynamic drop-down menues
	$initialRemoveLink = $('#main #search-advanced .expanding a.remove').show().click( handleRemoveLink ).parent();
	$('#main #search-advanced .expanding a.add').show().click( handleAddLink );

	// As Fallback, within the HTML the select menu is a multi-select menu. Just removing "multiple" and "size" attributes
	// in order to turn it into a drop-down menu, will cause non of the entries to be inititally visible. Therefore this is
	// a workaround for this problem, where a new select Element is created and options from original are copied (Not that pretty
	// mabey this can be improved?!).
	/*
	var multiSelect = $('#search-advanced .expanding select').get(0);
	var $newSelect = $(document.createElement("select"));
	$newSelect.attr("class", $(multiSelect).attr("class")).attr("id", $(multiSelect).attr("id")).attr("name", $(multiSelect).attr("name"));
	if($.browser.msie) {
		$newSelect.append( $(multiSelect).find("option") );
	} else {
		var optsHtml = "";
		$(multiSelect).find("option").each(function(i){
			optsHtml += "<option value='" + $(this).attr("value") + "'>" + $(this).html() + "</option>";
		});
		$newSelect.html( optsHtml );
	}
	$(multiSelect).parent().append($newSelect);
	$(multiSelect).remove(); */
	initialSearchSelect = $('#search-advanced div.expanding select').get(0);
	searchSelectOptions = $(initialSearchSelect).find("option").size();
}

function initSearchCheckboxToggle() {
	var $all = $('#search-scope input.all');
	$all.get(0).checked = true;
	$all.click( function(){
		this.checked = true;
		var targetToggle = this.checked;
		$(this).parent().siblings().find('input').each(function(i){
			this.checked = false;
		});
	}).parent().siblings().find('input').click( function(){
		if(this.checked) {
			$('#search-scope input.all').get(0).checked = false;
		} else {
			var otherChecked = false;
			$(this).parent().siblings().find('input').not('.all').each(function(i){
				if(this.checked) {
					otherChecked = true;
				}
			});
			if(!otherChecked) {
				$('#search-scope input.all').get(0).checked = true;
			}
		}
	});
}

function handleAddLink () { // handles click event of add link (supports initDynamicSearchSelects function)
	$(this).parent().before( $initialRemoveLink.clone(true) );
    $(this).parent().prev().find('a.remove').click( handleRemoveLink );
    $(this).parent().before( $(initialSearchSelect).parent().clone(true) );
    searchSelectCounter++;
    $(this).parent().prev().find('select').removeAttr("id");
    if (searchSelectCounter >= searchSelectOptions) {
        $(this).hide();
    }
    return false;
}
function handleRemoveLink () { // handles click event of remove links (supports initDynamicSearchSelects function)
	$(this).parent().next().remove();
    $(this).parent().remove();
    searchSelectCounter--;
    if (searchSelectCounter < searchSelectOptions) {
        $('#main #search-advanced a.add').show();
    }
    if (searchSelectCounter < 1) {
		$('#main #search-advanced .expanding a.collapse').click();
    }
    return false;
}


function resizeMetaSearch() {
	var search = $('#search-minimal');
	if(search) {
		var layer = $('.inputs',search);
		var sel = $('select',layer);
		var inp = $('.submit',layer);

		sel.css('width', layer.outerWidth()-inp.outerWidth() - 10);
	}
}
var startTeaser = (function(){
	var linkPos = 0, 
		timer, 
		cache = {}, 
		firstTime = true,
		links,
		hrefs = [];
	
	function goToNext() {
		var href = hrefs[linkPos];
		if(!href){
			href = hrefs[0];
			linkPos = 0;
		} 
		linkPos++;
		click({type: 'goNext'}, href);
	}
	
	function getHref(elm){
		if(typeof elm == "string"){
			return elm;
		}
		var l = window.location.href, url;
		if(l.indexOf('localhost:8080') != -1 && l.indexOf('.jsp') != -1){
			$(elm).removeClass('next');
			var cssclass = elm.className;
			url = "snippets/" + cssclass + ".txt";
		} else if(typeof extraparam  != 'undefined'){
			url = $(elm).attr('href').replace(/.html$/, extraparam+'.html');
		}
		
		return url;
	}
	function click(e, link){
		var href = link || getHref(this);
		if (cache[href]) {
			handleData.call({url: href}, cache[href]);
		} else {
			$.ajax({
				dataType: "text",
				success: handleData,
				url: href
			});
			if (e && e.type == 'click') {
				clearInterval(timer);
				timer = window.setInterval(goToNext, 8000);
			}
		}
		return false;
	}
	function init(){
		links = bindLinks();
		links.each(function(){
			hrefs.push(getHref(this));
		});
		clearInterval(timer);
		timer = window.setInterval(goToNext, 8000);
	}
	function bindLinks(){
		return $('#akteur-teaser div.switch a').bind('click nextAjax', click);
	}
	function handleData (data){
		$('#akteur-teaser').replaceWith(data);
		bindLinks();
		if(!cache[this.url]){
			cache[this.url] = data;
		}
		if(firstTime){
			$('#akteur-teaser div.switch a').each(function(){
				var href = getHref(this);
				if($.inArray(href, hrefs) == -1){
					hrefs.unshift(href);
					linkPos++;
					return false;
				}
			});
			firstTime = false;
		}
	}
	
	return {
		init: init
	};
})();

function maxWidthImg(){
	((this.width > 195) && $(this).width(195));
}


function fitBreadCrumbSize() {
	if($('#breadcrumb').length !== 0) {
		var content_offset = $('#content').offset().top,
			wrapper_offset = $('#wrapper-content').offset().top,
			wrapper_padding = parseInt($('#wrapper-content').css('paddingTop'),10);
		
		$('#nav').css({marginTop: wrapper_offset-content_offset+wrapper_padding})
		
	}
}
/*
 *  Initializations on page load.
 */
$(document).ready(function(){
						   
	$('html').addClass('js-on');
	
    initDiashow();
    initSearchScopeSection();
    resizeMetaSearch();
		
	fitBreadCrumbSize();
	if($.browser.msie && $.browser.version < 7){
		
		var marginalPhoto = $('#marginal img.photo')
			.bind('load', maxWidthImg);
		maxWidthImg.call(marginalPhoto[0]);
	}
	if($('#rig-startpage').length && $('#akteur-teaser').length) {
		startTeaser.init();
	}
    $('input.placeholder').resetInput();
    
    if(window.wt_sendinfo){
			$('a.dwn')
				.bind('mousedown', function(){
					var file = $(this).attr('href');
					wt_sendinfo (file.substr( file.lastIndexOf('/') + 1 ), 'click');
				});
		}
	
	
	
	
	// Accordion			
	$('.accordion').each( function () {
		var buttons = $('h3', this),
			activeButton
		;
		
		buttons
			.each( function () {
				var button = $(this);
				if (button.is('.on')){
					activeButton = button;
				} else {
					button.next().hide();	
				}
			})
			.click(function(){
				var button = $(this);
				
				if(button.is('.on')){
					return false;
				}
				
				if(activeButton){
					activeButton
						.removeClass('on')
						.next()
						.slideToggle()
					;	
				}
				activeButton = button;
				button
					.addClass('on')
					.next()
					.slideToggle()
				;
			})
		;
			
	});
	
	
	
	
	
	
	
	
	
	
	
		
	
});
