/****
 * Slide Toggle Accordion
 * Copyright (c) 2009 Rueegg Tuck Partner GmbH (http://www.rtpartner.ch)
 * @author Simon Tuck <stu@rtpartner.ch>
 ****/

/****
 * TODO:
 * - Compatibility with jQuery 1.3.1
 ****/

var clickShowText = 'Bitte klicken, um Inhalt anzuzeigen';
var clickHideText = 'Bitte klicken, um Inhalt zu verstecken';
var titleSelector = '.AccordionTabTab';
var contentSelector = '.foldingContentWrap';
var openClass = 'open';
var closedClass = 'closed';
var toggleFlagClass = 'current_toggle_element';
var internalAnchorClass = 'anchorlink';
var anchorClass = 'anchor';
var addHashToUrl = true;
// Behaviour of other elements when an element is clicked.
// Set to false to keep other elements unchanged when an element is clicked
// Default (true) will close all other elements.
var closeOthersOnClick = true;

function insertTitleLinks(){$(titleSelector).filter('.'+closedClass).wrapInner('<a href="#" title="'+clickShowText+'"></a>');$(titleSelector).filter('.'+openClass).wrapInner('<a href="#" title="'+clickHideText+'"></a>')}function showHideContent(){var anchor=document.location.hash;if(anchor&&$('a').is(anchor+' ~ '+contentSelector)){$('a:not('+anchor+') ~ '+contentSelector).hide();$('a:not('+anchor+') ~ '+titleSelector).removeClass(openClass).addClass(closedClass);$('a'+anchor+' ~ '+titleSelector+':first').removeClass(closedClass).addClass(openClass);$('a'+anchor+' ~ '+contentSelector+':first').show()}else{$(titleSelector+':not(.'+openClass+')').next(contentSelector).hide();$(titleSelector+':not(.'+openClass+')').removeClass(openClass).addClass(closedClass)}}function foldContent(el){var toggleMe=el.parent(titleSelector).next(contentSelector);toggleMe.addClass(toggleFlagClass);el.parent(titleSelector).addClass(toggleFlagClass);if(toggleMe.css('display')=="none"){el.parent(titleSelector).removeClass(closedClass).addClass(openClass);el.attr('title',clickHideText);setHash(el);dontCloseOthersOnClick=false}else{el.parent(titleSelector).removeClass(openClass).addClass(closedClass);el.attr('title',clickShowText);unsetHash();dontCloseOthersOnClick=true}toggleMe.stop().slideToggle('fast');if(closeOthersOnClick&&!dontCloseOthersOnClick)closeOthers();toggleMe.removeClass(toggleFlagClass);el.parent(titleSelector).removeClass(toggleFlagClass)}function setHash(el){if(addHashToUrl){if(anchor=getHash(el)){window.location.hash=anchor;href=$('a#sendLink').attr('href');href=href.replace(/%23\w*$/img,'')+'%23'+anchor;$('a#sendLink').attr('href',href)}}}function unsetHash(el){if(addHashToUrl){window.location.hash='';href=$('a#sendLink').attr('href');href=href.replace(/%23\w*$/img,'');$('a#sendLink').attr('href',href)}}function getHash(el){anchor=el.parent(titleSelector).prev('a.'+anchorClass).attr('id');if(anchor&&$('a').is(anchor+' ~ '+contentSelector)){return anchor}else{return false}}function closeOthers(){var closeMe=$(contentSelector+':visible').not('.'+toggleFlagClass);closeMe.stop().slideUp('fast');$(titleSelector+':not(.'+toggleFlagClass+')').removeClass(openClass).addClass(closedClass);$(titleSelector).filter('.'+closedClass).find('a').attr('title',clickShowText)}function accordion(){$(titleSelector+' a').click(function(){foldContent($(this));return false})}function linkToAccordion(){$('a.'+internalAnchorClass).click(function(){if($(this).attr('hash')+' ~ '+contentSelector){el=$('a'+$(this).attr('hash')+' ~ '+titleSelector+'> a');var toggleMe=el.parent(titleSelector).next(contentSelector);if(toggleMe.css('display')=='none'){toggleMe.addClass(toggleFlagClass);el.parent(titleSelector).addClass(toggleFlagClass);el.parent(titleSelector).removeClass(closedClass).addClass(openClass);el.attr('title',clickHideText);dontCloseOthersOnClick=false;toggleMe.stop().slideToggle('fast');if(closeOthersOnClick&&!dontCloseOthersOnClick)closeOthers();toggleMe.removeClass(toggleFlagClass);el.parent(titleSelector).removeClass(toggleFlagClass)}}})}function jumpToAnchor(){var anchor=document.location.hash;if(anchor&&$('a'+anchor))window.location.hash=anchor}$(function(){showHideContent();insertTitleLinks();accordion();linkToAccordion();jumpToAnchor()});