registerSetupFunction('div.tags',function(div){
	addClassName(div,"defaultState");
	var ps = div.getElementsByTagName('p');
	for (var a=0; a<ps.length; a++){
		var p = ps[a];
		if (hasClassName(p,'blockheadextra')){
			var expanderCollapser = p.getElementsByTagName('a')[0];
			expanderCollapser.showMessage = 'more';
			expanderCollapser.hideMessage = 'less';
			expanderCollapser.firstChild.data = expanderCollapser.showMessage;
			expanderCollapser.hostDiv = div;
			expanderCollapser.bigContent = null;
			expanderCollapser.smallContent = null;
			addClassName(expanderCollapser, 'expandAction')

			addEvent(expanderCollapser,'click',function(e){
				if (hasClassName(this, 'expandAction')) {
					if (!this.bigContent) {
						removeClassName(this,'expandAction');
						addClassName(this,'processing');
						xhr(this.href,function(htmlString, obj){
							// yay!
							obj.bigContent = getElementFromString(htmlString,'div','tagcontent').innerHTML;
							obj.smallContent = document.getElementById("tagcontent").innerHTML;
							document.getElementById("tagcontent").innerHTML = obj.bigContent;
							obj.firstChild.data = obj.hideMessage;
							removeClassName(obj, 'processing');
							addClassName(obj, 'collapseAction');
							addClassName(obj.hostDiv, 'tagintensive');
						},function(status, obj){
							// oh no!
							alert("Oops. There was a problem. The server returned status "+status+" for this XMLHttpRequest.");
							removeClassName(obj, 'processing');
							addClassName(obj,'expandAction');
						},this);
					} else {
						document.getElementById("tagcontent").innerHTML = this.bigContent;
						removeClassName(this,'expandAction');
						addClassName(this, 'collapseAction');
						addClassName(this.hostDiv, 'tagintensive');
						this.firstChild.data = this.hideMessage;
					}
				} else {
					addClassName(this, 'expandAction');
					removeClassName(this, 'collapseAction');
					removeClassName(this.hostDiv, 'tagintensive');
					this.firstChild.data = this.showMessage;
					document.getElementById("tagcontent").innerHTML = this.smallContent;
				}
				cancelDefault(e);
			});
		}
	}
},true);

