/*
 * jQuery XID Accordion
 *
 * version: 1.0
 * author: Maurits van Mierlo (www.x-ingredient.nl)
 * date: 5 november 2007
 */



//accordion properties
var accContainer;
var accSpeed;
var accMultipleOpen;
var accFirstOpen;
var accElementClass;
var accElementActiveClass;
var accContent = 'accordionContent_container';


//constructor
function xidAccordion(accordionContainer){
	accContainer = "." + accordionContainer;
	var containerClass = $(accContainer).attr("class");
	if (containerClass != undefined){	
		var settingsString = containerClass.substring(containerClass.indexOf("settings{") + 9, containerClass.indexOf("}"));
		var settings = settingsString.split(",");
	} else {
		var settingsString = "";
	}
	if (accContent != undefined) {
		accContent = '.' + accContent;
	}
	if (settingsString == ""){
		setupAccordion(300, false, false, "accordion", "accordion_active");	// default
	} else {
		var speed = Number(settings[0]);
		var multipleOpen = Boolean(settings[1] == "true");
		var firstOpen = Boolean(settings[2] == "true");
		setupAccordion(speed, multipleOpen, firstOpen, settings[3], settings[4]);
	}
}

//setup accordion
function setupAccordion(speed, multipleOpen, firstOpen, defaultClass, activeClass){
	// set properties
	if (speed == undefined){
		accSpeed = 300;
	} else {
		accSpeed = speed;
	}
	if (multipleOpen == undefined){
		accMultipleOpen = false;
	} else {
		accMultipleOpen = multipleOpen;
	}
	if (firstOpen == undefined){
		accFirstOpen = false;
	} else {
		accFirstOpen = firstOpen;
	}
	if (defaultClass == undefined){
		accElementClass = ".accordion"
	} else {
		accElementClass = "." + defaultClass;
	}
	if (activeClass == undefined){
		accElementActiveClass = 'accordion_active';
	} else {
		accElementActiveClass = activeClass;
	}
	
	// setup
	$(accElementClass).click(function() {			   
		accToggleElement($(this));
	});
	if (accFirstOpen){
		accOpenElement($(accElementClass + ":first"));
	}
	
}

// accordion open
function accOpenElement(element){
	if (!accMultipleOpen){
		accCloseAll();	
	}
	element.next().show(accSpeed);
	element.addClass(accElementActiveClass);
}
// accordion close
function accCloseElement(element){
	element.next(accContent).hide(accSpeed);
	element.removeClass(accElementActiveClass);
}
// accordion toggle
function accToggleElement(element){
	if (element.next().css('display') == 'none'){
		accOpenElement(element);
	} else {
		accCloseElement(element);
	}
}
// accordion close all
function accCloseAll(){
	accCloseElement($(accElementClass));
}
// accordion open all
function accOpenAll(){
	accOpenElement($(accElementClass));
}
// accordion gotoAnchor
function accGotoAnchor(anch, elem){
	$("." + elem).next(accContent).show(0);
	$("." + elem).addClass(accElementActiveClass);
	location.href= '#' + anch;
}
