var accordion = Class.create();
accordion.prototype = {

	field:null,
	
	initialize: function(el) {
		var index = 0;
		var selectedIndex =-1;
		for(var j=0;j<el.childNodes.length;j++) {
			if(el.childNodes[j].tagName && el.childNodes[j].tagName.toLowerCase() == 'li') {
				var li = el.childNodes[j];
				Element.extend(li);
				if(!li.hasClassName("header")) {
					var caption = li.childElements()[0];
					var page = li.childElements()[1];
					var link = new Element("a", {"href":"#"+el.id+index});
					li.appendChild(link);
					Element.insert(li, {top:link});
					Element.insert(link,{top:caption});
					link.addClassName('accordionLink');
					page.addClassName('accordionPage');
					page.id = el.id+index;
					if(el.hasClassName('horizontal')) {
						Element.insert(el,{after:page});
					}
					Event.observe(link, 'click', function(ev) {this.click(ev)}.bind(this), false);
					selectedIndex = (li.hasClassName('selected')) ? index : selectedIndex;
					index++;
				}
			}
		}
		if(el.up('form')) {
			var param = new Element("input", {"type":"hidden", "name":el.id, "id":el.id});
			el.id = "";
			el.up('form').appendChild(param);
			this.field = param;
			this.field.value = (selectedIndex>-1) ? selectedIndex : 0;
		}
		var hash = location.hash.substr(1);
		if(hash=="") {
			if(selectedIndex==-1) {
				//var defaultpage = $$('.accordionLink')[0].href.match(/[-_\w]+$/i)[0];
				var defaultpage = false;
				$$('.accordionLink[href="#'+defaultpage+'"]').each(function(e) { Element.addClassName(e.up('li'), 'selected'); });
				$$('.accordionPage[id!='+defaultpage+']').each(function(e) { Element.hide(e) });
			} else {
				var defaultpage = el.down('li',selectedIndex).down('a').href.match(/[-_\w]+$/i)[0];
				$$('.accordionPage[id!='+defaultpage+']').each(function(e) { Element.hide(e) });
			}
		} else {
			$$('.accordionLink[href="#'+hash+'"]').each(function(e) { Element.addClassName(e.up('li'), 'selected'); })
			$$('.accordionPage[id!='+hash+']').each(function(e) { Element.hide(e) });
		}
	},
	
	click: function (ev) {
		var el = Event.element(ev).up('li').down('a');
		var page = el.getAttribute('href').match(/[-_\w]+$/i)[0];
		//$$('.accordionLink').each(function(el) {Element.removeClassName(el.up('li'), 'selected');});
		//$$('.accordionPage[id!='+page+']').each(function(el) {Element.hide(el);});
		if(Element.hasClassName(el.up('li'),"selected")) {
			Element.removeClassName(el.up('li'),"selected");
			$(page).hide();
		} else {
			Element.addClassName(el.up('li'),"selected");
			$(page).show();
		}
		location.hash = "#"+page;
		if(this.field) this.field.value = page.replace(this.field.id,"");
		Event.stop(ev);
	},
	
	dispose: function () {
	
	}

}

function initTabs() {
	$$('ul.accordion').each(function(el, index) {var myTabs = new accordion(el);}.bind(this));
}

Event.observe(document,'dom:loaded', initTabs, false);

