// ARRAYS
var transitioningArray = [];

// HELPERS
var ajaxLoaderHeight = 100;
var animationDuration = 400;
var inArray = 0;
var positionInArray = -1;
var stateClosed = 'closed';
var stateOpen = 'open';

// CLASS-IDENTIFIERS
var class_ajaxLoader = 'ajaxLadeanzeige';

// ID-IDENTIFIERS
var id_accordion = '#productionInformations_';
var id_ajaxItem = '#programDetailsAjaxItem_';
var id_ajaxTarget = '#programDetailsAjaxTarget_';
var id_program = '#program_';
var id_toggleClosed = '#toggleClosed_';
var id_toggleOpen = '#toggleOpen_';

// FUNCTIONS
function addToArray(id) {
	transitioningArray.push(id);
}

function checkIfIsInArray(id) {
	if (jQuery.inArray(id, transitioningArray) > -1) {
		inArray = 1;
	} else {
		inArray = 0;
	}
}

function checkPositionInArray(id) {
	$.each(transitioningArray, function(i, v) {
		if (v == id) {
			positionInArray = i;
			return false;
		} else {
			positionInArray = -1;
		}
	});
}

function deleteFromArray(id) {
	if (positionInArray == 0) {
		slicerEndPosition = 1;
	} else {
		slicerEndPosition = positionInArray;
	}
	transitioningArray.splice(positionInArray, slicerEndPosition);
}

function initAccordion(id) {
	$(id_accordion + id).accordion({
		autoHeight: false,
		clearStyle: true,
		collapsible: true,
		navigation: true
	});
}

function loadDetails(eventId, ajaxUrl, isFestival) {
        checkIfIsInArray(eventId);
        if (inArray != 1) {
        $.get('/Radio/Steuerseiten/AJAX-OffeneEventsSpeichern?open_event=' + eventId);
                addToArray(eventId);
                $(id_ajaxTarget + eventId).addClass(class_ajaxLoader).height('0').show().animate({
                        height: ajaxLoaderHeight
                }, animationDuration, function() {
                        $(id_ajaxTarget + eventId).load(ajaxUrl + eventId, function() {
                                initAccordion(eventId);
                                ajaxItemHeight = $(id_ajaxItem + eventId).outerHeight();
                                $(id_ajaxTarget + eventId).removeClass(class_ajaxLoader);
                                $(id_ajaxTarget + eventId).animate({
                                        height: ajaxItemHeight
                                }, animationDuration, function() {
                                        $(this).height('auto');
                                });
                                // Zeile unten auskommentieren, falls es beim Aufklappen zu Problemen kommt
                                $(id_ajaxItem + eventId).slideToggle(animationDuration, function() {
                                        checkPositionInArray(eventId);
                                        deleteFromArray(eventId);
                                        swapToggle(eventId, stateOpen);
                                // Zeile unten auskommentieren, falls es beim Aufklappen zu Problemen kommt
                                });
                                $('#recommend_link_'+eventId).click(function () {
                                        loadRecommend(eventId);
                                        return false;
                                });
                        });
                });
        }
}

function swapToggle(id, state) {
	if (state == stateOpen) {
		$(id_toggleClosed + id).hide();
		$(id_toggleOpen + id).show();
	} else {
		$(id_toggleClosed + id).show();
		$(id_toggleOpen + id).hide();
	}
}

function unloadDetails(id) {
	checkIfIsInArray(id);
	if (inArray != 1) {
                $.get('/Radio/Steuerseiten/AJAX-OffeneEventsSpeichern?close_event=' + id);
		addToArray(id);
		$(id_ajaxTarget + id).removeClass(class_ajaxLoader).animate({
			height: 0
		}, animationDuration, function() {
			$(this).hide(function() {
				$(this).empty();
			});
		});
		$(id_ajaxItem + id).slideToggle(animationDuration, function() {
			$(id_ajaxTarget + id).empty();
			checkPositionInArray(id);
			deleteFromArray(id);
			swapToggle(id, stateClosed);
		});
	}
}

