var details=(function(){
	var opened,
	open=function(details){
		close();
		details.className+=' open';
		opened=details;
	},
	close=function(){
		if(opened){
			opened.className=opened.className.replace(' open', '');
			opened=null;
		}
	},
	detailsOpened=function(e){
		var t=e[utils.target];
		if(t.className.indexOf('summary')!=-1){
			open(t.parentNode);
			utils.addEvent(document.documentElement, 'click', detailsClosed, false);
			utils.stopPropagation(e);
			utils.preventDefault(e);
		}
	},
	detailsClosed=function(e){
		close();
		utils.addEvent(document.documentElement, 'click', detailsClosed, false, true);
	};
	return {
		setup:function(id, classNames){
			var node=document.getElementById(id);
			node.className+=classNames? (' ' + classNames) : '';
			utils.addEvent(node, 'click', detailsOpened, false);
		}
	};
}());
