// fixes footer's item heights rowwise
function fixFooter() {
    var maxHeight = 0;
    $("#footer .footer-row").each(function (i, val) {
        $(this).find(".footer-block a").each(function (i, val) {
            if ($(this).height() > maxHeight)
                maxHeight = $(this).height();
        });
        $(this).find(".footer-block a").each(function (i, val) {
            $(this).height(maxHeight);
        });
        maxHeight = 0;
    });

}

// shortens Seminar Description on 2 Rows
// plugin: http://adamhooper.com/bodacity/playground/jquery.excerpt.html
function excerptSeminars() {
    // execrept Seminars
    var o = new Array();
    var ex = new Array()
    $(".seminar .description p").each(function (i, val) {
        o[i] = $(this).html();
        ex[i] = $(this).excerpt({ lines: 2, end: '...', always_end: '' }).html();
        $(this).after('<a href="#" class="toggle-info more-info">mehr Informationen</a>');
        $(this).next().click(function (e) {
            e.preventDefault();
            if ($(this).hasClass("more-info"))
                $(this).removeClass("more-info").html("weniger Informationen").prev().html(o[i]);
            else
                $(this).addClass('more-info').html("mehr Informationen").prev().html(ex[i]);
        });
    });
}

// Shorten seminar appointments
function excerptAppointments() {
    // NOTE:
    // IE7 seems to be having problem with .classname:not(:first), so we have to help it out
    // by wrapping all .location-s in a wrapper div and using :first-child instead of :first
    $('.appointment').each(function (i, val) {
        if ($(this).find(".locations").length > 1)
            $(this).append('<a href="#" class="toggle-info more-info">weitere Termine</a>').find(".locations:not(:first-child)").hide();
        $(this).find(".toggle-info").click(function (e) {
            e.preventDefault();
            if ($(this).hasClass('more-info'))
                $(this).html('weniger Termine').removeClass("more-info").parent().find(".locations").show();
            else
                $(this).addClass("more-info").html("weitere Termine").parent().find(".locations:not(:first-child)").hide();

        });
    });
}

/* 
 * Recursive parameter toggleall - determines whether all of the child-elements (if any)
 * should be seleced or deselected
 */
function toggleCheckbox(elem, toggleall) {
	if($(elem).hasClass('bfr_date_filter'))
	{
		$.each($(elem).parent().parent().parent().find('input'), function(index, value) {
			$(value).parent().find('.checkbox').removeClass('checked');
			$(value).removeAttr('checked');
		});
	}
	
    // Set the optional parameter if needed
    if (toggleall === undefined) {
        toggleall = '';
    }
    if (toggleall == '') {
        $(elem).parent().find('.checkbox').toggleClass('checked');
        if ($(elem).attr("checked")) {
            $(elem).removeAttr('checked');
            // If any children available, check them all
            if ($(elem).parent().find("ul li input").length > 0);
                $(elem).parent().find("ul li input").each(function (i, val) {
                    toggleCheckbox($(this), 'uncheckall');
                });
        }
        else {
            $(elem).attr("checked", "true");
            // if any children available uncheck them all
            if ($(elem).parent().find("ul li input").length > 0);
                $(elem).parent().find("ul li input").each(function (i, val) {
                    toggleCheckbox($(this), 'checkall');
                });
        }
    }
    else if (toggleall == 'checkall') {
        $(elem).parent().find('.checkbox').addClass('checked');
        $(elem).attr("checked", "true");
    }
    else if (toggleall == 'uncheckall') {
        $(elem).parent().find('.checkbox').removeClass('checked');
        $(elem).removeAttr("checked");
    }

    if ($(elem).hasClass('all'))
	{
	    // remove checked if root element clicked
	    $.each($(elem).parent().parent().parent().find('input'), function(index, value) {
			if (!$(value).hasClass('all'))
			{
				$(value).parent().find('.checkbox').removeClass('checked');
				$(value).removeAttr('checked');
			}
		});
	}
    else
	{
    	$.each($(elem).parent().parent().parent().find('.all'), function(index, value) {
			$(value).parent().find('.checkbox').removeClass('checked');
			$(value).removeAttr('checked');
		});
	}

    bfr_seminars_filter();
}

var interval = 0;
var nextItem = 1;
var stagenav = "";

function loopHomepage() {
    changeItem($("#stagenav li").eq(parseInt(nextItem)).find("a"));
    //alert($("#stagenav li").length);
    nextItem = parseInt(nextItem + 1) % parseInt($("#stagenav li").length);
   
}

function startLoop(loopswitch) {
    if (loopswitch > 0)
        clearInterval(interval);  // stop
    else
        interval = setInterval("loopHomepage()", 4000);  // run
}

function changeItem(trigger) {
    if (!$(trigger).parent().hasClass("active")) {
        var index = $("#stagenav li").removeClass("active").index($(trigger).parent());
        $("#stagenav li:nth-child(" + parseInt(index + 1) + ")").addClass("active");
        $("#stage .current .stagecontent").fadeOut("slow");
        $("#stage .current").removeClass("current").fadeOut("slow");
		setTimeout(function() {
		    $("#stage .stageitem:nth-child(" + parseInt(index + 1) + ") .stagecontent").show();	
		    $("#stage .stageitem:nth-child(" + parseInt(index + 1) + ")").addClass("current").fadeIn("slow");			
		}, 200);
    }
}

$(document).ready(function () {
    fixFooter();
    // hide not used filters
    $.each($('#filters .block-content'), function(index, value) {
		// no checked box inside, hide block
		if ($(value).find(':checked:not(.all)').length == 0)
		{
			$(value).find('.all').attr('checked','checked');
			$(value).hide().addClass('hidden').prev().addClass('closed');
		}
		else
		{
			$(value).prev().addClass('opened');
		}
	});

    // Toggle filter blocks
    $('#filters .block-head').click(function (e) {
        e.preventDefault();
        $(this).toggleClass('closed opened').next().slideToggle('fast').toggleClass('hidden visible');
    });

    // hide filters submit form button
    $(".updateList-trigger").hide();

    // If browser supports javascript, replace default checkboxes with styled ones
    $('#filters input[type=checkbox]').each(function (i, val) {
        if ($(this).attr('checked'))
            $(this).addClass('hide').after('<div class="checkbox checked"></div>');
        else
            $(this).addClass('hide').after('<div class="checkbox"></div>');
    });

    // Enable functionality on styled checkboxes
    $('#filters .block-content ul li div a').click(function (e) {
        e.preventDefault();
        toggleCheckbox($(this).parent().parent().find("input[type=checkbox]"));
    });

	$('.checkbox').click(function (e) {
        e.preventDefault();
        toggleCheckbox($(this).parent().find("input[type=checkbox]"));
    });

    // Shorten seminar description
    excerptSeminars();
    excerptAppointments();

    stagenav = '<ul id="stagenav">';
    for (var i = 0; i < $("#stage .stageitem").length; i++)
        stagenav = stagenav + '<li><a href="#"> </a></li>';
    stagenav = stagenav + "</ul>"
    $("#stage").prepend(stagenav);
    $("#stage .stageitem").hide().parent().find(".stageitem:first-child").show().addClass('current');
    $("#stagenav li:first-child").addClass('active');
    startLoop(0); // start loop
    $("#stagenav li a").click(function (e) {
        e.preventDefault();
        startLoop(1); // stop loop
        changeItem($(this));
    });

	if ($('#tabs').length > 0)
	{
    	var tabs = $('#tabs').tabs();
    	$("#tabsprev").click(function (e) {
        	e.preventDefault();
        	var next = 0;
        	var index = $("#tabs .ui-tabs-nav li").index($(".ui-state-active"));
        	var total = tabs.tabs("length");
        	if (parseInt(index) == 0)
            	next = tabs.tabs("length")-1;
        	else
            	next = index - 1;
        	tabs.tabs("select", next);
    	});
    	$("#tabsnext").click(function (e) {
        	e.preventDefault();
        	var next = 0;
        	var index = $("#tabs .ui-tabs-nav li").index($(".ui-state-active"));
        	var total = tabs.tabs("length");
        	if (parseInt(index) == total-1)
            	next = 0;
        	else
            	next = index + 1;
        	tabs.tabs("select", next);
    	});
	}

});
