function xmlhttpPost(strURL,send,whom) {
    var xmlHttpReq = false;
    var self = this;
    // Mozilla/Safari
    if (window.XMLHttpRequest) {
        self.xmlHttpReq = new XMLHttpRequest();
    }
    // IE
    else if (window.ActiveXObject) {
        self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
    }
    self.xmlHttpReq.open('POST', strURL, true);
    self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    self.xmlHttpReq.onreadystatechange = function() {
        if (self.xmlHttpReq.readyState == 4) {
            updatepage(self.xmlHttpReq.responseText,whom);
        }
    }
	self.xmlHttpReq.send(send);
//    self.xmlHttpReq.send(getquerystring());
}

function getquerystring() {
    var form     = document.forms['f1'];
    var word = form.word.value;
    qstr = 'w=' + escape(word);  // NOTE: no '?' before querystring
    return qstr;
}

function __updatepage(str,whom){
	var span=document.createElement("span");
	var def=document.createTextNode(str);
	span.innerHTML=str;
	span.setAttribute("class","definition");
	var collapser=whom.cloneNode(true);
	var icon=document.createElement("img");
	var src=whom.getElementsByTagName("img")[0].getAttribute("src");
	src=src.replace(/expand.gif/,"collapse.gif");
	icon.setAttribute("src",src);
	span.appendChild(collapser);
	collapser.replaceChild(icon,collapser.getElementsByTagName("img")[0]);
	whom.parentNode.replaceChild(span,whom);

	Behaviour.apply();
}

function updatepage(str,whom){
	var span=document.createElement("span");
	var def=document.createTextNode(str);
	span.innerHTML=str;
	span.setAttribute("class","definition");
	span.className="definition";
	span.setAttribute("style","background-color:#ffa; font-size:75%; margin-left:0.5em; margin-right:0.5em;");
	var collapser=whom.cloneNode(true);
	var icon=document.createElement("img");
	icon.setAttribute("src","../jila_images/close.gif");
	collapser.replaceChild(icon, collapser.firstChild);
	span.appendChild(collapser);
	whom.parentNode.insertBefore(span,whom.nextSibling);

	Behaviour.apply();
}

function glossaryterm(whom) {
	if (whom.parentNode.getAttribute("class")=="definition") {
		whom.parentNode.parentNode.removeChild(whom.parentNode);
		
		Behaviour.apply();
	} else {
		var ok=true;
		if (whom.nextSibling.getAttribute) {
			if (whom.nextSibling.className=="definition") {
				ok=false;
			}
		}
		if (ok) {
			var term=whom.hash.replace(/^\#/,"");
			xmlhttpPost("/cgi-bin/glossary/glossaryterm.cgi","term="+term,whom);
		}
	}
}


var glossarylinks = {
	'a.define' : function(element){
		element.onclick = function(){
			glossaryterm(this);
			return false;
		}
	}
};
	
Behaviour.register(glossarylinks);

