/**
 * Funktion zum gleichzeitigen Ausblenden und Sliden von Elementen
 * (z.B. kleiner sliden und ausfaden ODER größer sliden und einfaden)
 */
jQuery.fn.slideFadeToggle  = function(speed, easing, callback) {
	return this.animate({opacity: 'toggle', height: 'toggle'}, speed, easing, callback);
};

/**
 * Links in neuem Fenster/Tab öffnen
 *
 * Anwendung: dem <a>-Tag wird die unten angegebene Klasse zugewiesen, damit der Link in neuem Fenster geöffnet wird
 * <a href="http://www.google.de/" class="external_link">Google (öffnet in neuem Fenster)</a>
 */
jQuery.external_links = {

	// VARIABLEN
	triggerClass: 'external_link', // Klassenname für Links, die in neuem Fenster geöffnet werden sollen
	addTitle: '(öffnet in neuem Fenster)', // Hinweis der dem title Attribut des Links angefügt wird

	init: function() {
		var links = jQuery('.'+jQuery.external_links.triggerClass);
		if(links.length != 0) {
			links.each(function() {
				jQuery(this).attr({target: "_blank"});
				jQuery(this).attr({title: jQuery(this).attr('title')+" "+jQuery.external_links.addTitle});
			});
		}
	}
}


// stylable boxes
//
// source HTML:
// <div class="stylebox">
//    <p>content here</p>
// </div>
//
// becomes:
// <div class="stylebox">
//    <div class="bt"></div>
//    <div class="bc">
//        <p>content here</p>
//    </div>
//    <div class="bb"></div>
// </div>
jQuery.styleBoxes = {
	
	// CSS CLASSES
	styleBoxClass: 'cont_item',
	topClass: 'bt',
	contentClass: 'bc',
	bottomClass: 'bb',
	
	init: function() {
		var boxes = jQuery('.'+jQuery.styleBoxes.styleBoxClass);
		// add footer to stylable boxes
		boxes.push(jQuery('#footer'));
		for(var i=0; i<boxes.length; i++) {
			// copy content
			var htmlCont = jQuery(boxes[i]).html();
			// delete inner HTML
			jQuery(boxes[i]).html('');
			
			// create and add new divs
			jQuery('<div>', {'class': jQuery.styleBoxes.topClass}).appendTo(boxes[i]);
			jQuery('<div>', {'class': jQuery.styleBoxes.contentClass+' clearfix', 'html': htmlCont}).appendTo(boxes[i]);
			jQuery('<div>', {'class': jQuery.styleBoxes.bottomClass}).appendTo(boxes[i]);
		};
	}
};

/*
 * Toggle content via link
 * slide container in/out
 * trigger link needs class "toggle" and href="#idOfTargetElement"
 *
 * Example HTML:
 * <h4><a href="#konditionen-1" title="" class="toggle">Konditionen</a></h4>
 * <div id="konditionen-1">
 *     ...
 * </div>
 *
 * @param Integer	openElem	Number of Element, that is open by default (default: 0 - first Element)
 *
 */
jQuery.accordion = {

	toggleClass: 'toggle',
	openClass: 'open',
	slideSpeed: 400,

	init: function(openElem) {

		if(jQuery("a."+jQuery.accordion.toggleClass).length != 0) {

			openElem = (openElem) ? openElem : 0;

			// hide all target elements when page loads, show only first one
			jQuery("a."+jQuery.accordion.toggleClass).each(function(i) {
				// get target id of link
				var target = jQuery(this).attr("href").split("#");
				// hide target item with given ID, except first one
				if(target[target.length-1] && i >= 1) {
					// hide target <div>
					jQuery("#"+target[target.length-1]).hide();
				}
				// add "open" class to first toggle
				if(i == openElem) {
					jQuery(this).addClass(jQuery.accordion.openClass);
					jQuery("#"+target[target.length-1]).css('display', 'block');
				}

				// add click event
				jQuery(this).click(jQuery.accordion.toggleItem);
			});
		}
	},

	toggleItem: function(e) {

		// check if current element is NOT open -> close all elements, open the current one
		// elde do nothing
		if(!jQuery(e.target).hasClass(jQuery.accordion.openClass)) {

			// hide current open element
			jQuery("a."+jQuery.accordion.toggleClass).each(function(i) {

				if(jQuery(this).hasClass(jQuery.accordion.openClass)) {
					// hide target <div>
					var closeTarget = jQuery(this).attr("href").split("#");
					jQuery("#"+closeTarget[closeTarget.length-1]).slideToggle(jQuery.accordion.slideSpeed);
					// remove "open" class
					jQuery(this).removeClass(jQuery.accordion.openClass);
				}
			});

			var target = jQuery(e.target).attr("href").split("#");
			// open target item with given ID
			if(target[target.length-1]) {
				// add "open" class to clicked element
				jQuery(e.target).addClass(jQuery.accordion.openClass);
				jQuery("#"+target[target.length-1]).slideToggle(jQuery.accordion.slideSpeed);
			}
		}
		e.preventDefault();
	}

}




/**
 * JQUERY INITIALISATION WHEN DOCUMENT READY
 *
 * @author Sebastian Dubbel
 *
 * @requires
 *		jQuery library v 1.2.6+: http://jquery.com
 * @encoding UTF-8
 *
 */
// start required scripts when DOM is loaded
jQuery(document).ready(function(){

	// open external links in seperate window
	jQuery.external_links.init();

	// create styled boxes
	jQuery.styleBoxes.init();

});
