function extLink(index,id,container){
	acc.show(index);
	switchNav(id,container);
}

// Sub-Navi __________________________________________________________

function switchNav(id,container){
	Effect.divSwap(id + 'Div',container + 'Div');
	$(id).className = 'active';
	var aktNavId = container + 'Nav';
	var navLinks = $$('#' + aktNavId + ' li  a');
	if(navLinks.length>0){
		for(i=0; i<navLinks.length; i++){
			if(navLinks[i].id != id)
				navLinks[i].className = '';
		}
	}
}

// Div-Swap __________________________________________________________

Effect.divSwap = function(element,container){
    var div = document.getElementById(container);
    var nodeList = div.childNodes;
    var queue = Effect.Queues.get('menuScope');

    if(queue.toArray().length<1){
        if(Element.visible(element)==false){
            for(i=0;i<nodeList.length;i++){
                if(nodeList.item(i).nodeName=="DIV" && nodeList.item(i).id!=element){
                    if(Element.visible(nodeList.item(i))==true){
                        // Effect.SlideUp(nodeList.item(i),{duration: 0.1,queue:{position:'end',scope:'menuScope',limit:2}})
                        Element.hide(nodeList.item(i));
                    }
                }
            }
            // Effect.SlideDown(element,{duration: 0.1,queue:{position:'end',scope:'menuScope',limit:2}})
            Element.show(element);
       }
   }
}

// Accordion - Effect __________________________________________________

var Accordion = Class.create();

Accordion.prototype = {
	initialize: function(id, headerClass, name) {
		this.id = id;
		this.headerClass = headerClass;
		this.instance = name;
		this.headingClassName = (arguments[3] || "panel");
		this.contentClassName = (arguments[4] || "panelBody");
		this.panels = new Array();

		var tags = $(id).getElementsByTagName('*');		
		for ( var i = 0; i < tags.length; i++) {
			// alert(tags.item(i).className);
			switch(tags.item(i).className) {
				case this.headerClass:
					// alert(tags[i]);
					tags.item(i).style.cursor = "pointer";
					tags.item(i).onclick = this._returnEvalCode(this.instance);
					break;
				case this.headingClassName:
					tags[i]._index = this._returnIndex(this.panels.length);
					this.panels[this.panels.length] = tags.item(i);
					//the line above is same meaning as "this.panels.push(tags.item(i));"
					
					if (this.panels.length == 1) {
						tags.item(i).id = "visible";
					}else{
						var navi = Element.getElementsByClassName(tags.item(i),'subnavi');
						if(navi && navi[0]){
							// alert('Navi');
							navi[0].style.display = "none";
						}
					}
					break;
				case this.contentClassName:
						tags.item(i).style.display = "none";
					break;
				default:
					break;

			}
		}
		this.length = this.panels.length;
		this.show(0, true);
	},

	show: function(index, force) {
		if ( (index >= this.length) || (index < 0) ) {
			//alert("index out of range");
			return;
		}

		if ( $('visible') == this.panels[index] ){
			if (force) {
				//alert("force to show the visible element.");
				for(var i = 0; i < this.length; i++) {
					if(this._body(this.panels[i]).style.display != "none") {
						new Effect.SlideUp(this._body(this.panels[i]));
					}
				}
				new Effect.SlideDown(this._body(this.panels[index]));
				return;
			}
			
			//alert("it's already shown now.");
			return;
		}

		//Head
		var headline = Element.getElementsByClassName($('visible'),'headline');
		if(headline && headline[0]){
			Element.setStyle(headline[0],{backgroundColor: 'transparent'});
		}
		//Subnavi
		var navi = Element.getElementsByClassName($('visible'),'subnavi');
		if(navi && navi[0]){
			// alert('Navi');
			// navi[0].style.display = "none";
			new Effect.BlindUp(navi[0],{duration: 0.2});
		}

		//alert("show another element.");
		new Effect.Parallel(
			[
				new Effect.SlideUp( this._body($('visible')) ),
				new Effect.SlideDown( this._body(this.panels[index]) )
			], {
				duration: 0.5
			}
		);
	
		$('visible').id = "";
		this.panels[index].id = "visible";
		
		//Subnavi
		var navi = Element.getElementsByClassName(this.panels[index],'subnavi');
		if(navi && navi[0]){
			// alert('Navi');
			// navi[0].style.display = "display";
			new Effect.BlindDown(navi[0],{duration: 0.2});
		}
		//Head
		var headline = Element.getElementsByClassName(this.panels[index],'headline');
		if(headline && headline[0]){
			Element.setStyle(headline[0],{backgroundColor: '#ff7f00'});
		}
		
		return;
	},

	_body: function(e) {
		var tags = e.getElementsByTagName('*');
		for( var i=0; i<tags.length; i++) {
			if (tags.item(i).className == this.contentClassName) {
				return tags.item(i);
			}
		}
	},

	_returnIndex: function(i) {
		return function() {
			return i;
		}
	},

	_returnEvalCode: function(s) {
		return function(){
			eval(s + ".show(" + this.parentNode._index() + ");");
		}
	}
};



// ______________________________________________________

