function getHTTPObject() {
    var xhr = false;
    if (window.XMLHttpRequest) {
	xhr = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
	try {
	    xhr = new ActiveXObject("Msxml2.XMLHTTP");
	} catch(e) {
	    try {
		xhr = new ActiveXObject("Microsoft.XMLHTTP");
	    } catch(e) {
		xhr = false;
	    }
	}
    }
    return xhr;
}

function getRandomImage() {
    var request = getHTTPObject();
    if (request) {
	request.onreadystatechange = function() {
	    parseResponse(request);
	};
	request.open("GET",
		"http://www.fromoldbooks.org/Search/randomimage.cgi", true);
	request.send(null);
    }
}

function getRandomImages() {
    var request = getHTTPObject();
    if (request) {
	request.onreadystatechange = function() {
	    parseResponse(request);
	};
	request.open("GET",
		"http://www.fromoldbooks.org/Search/randomimage.cgi?n=16", true);
	request.send(null);
    }
}

function parseResponse(request) {
    if (request.readyState == 4) {
	if (request.status == 200 || request.status == 304) {
	    //var data = request.responseXML;
	    var putmehere = document.getElementById("replaceme");
	    if (putmehere) {
		putmehere.innerHTML = request.responseText;
	    }
	}
    }
}

// for sorting lists

function getTextValue(el) {
    var i;
    var s;
    // Find and concatenate the values of all text nodes contained within the
    // element.
    s = "";
    try{
	for (i = 0; i < el.childNodes.length; i++) {
	    if (el.childNodes[i].nodeType == document.TEXT_NODE)
		s += el.childNodes[i].nodeValue;
	    else if (el.childNodes[i].nodeType == document.ELEMENT_NODE &&
		    el.childNodes[i].tagName == "BR")
		s += " ";
	    else
		// Use recursion to get text within sub-elements.
		s += getTextValue(el.childNodes[i]);
	}
    }catch(err){}
    return $.trim(s);
}

function getSpanWithClass(el, className)
{
    var i;
    var s;
    // we want the string value of the span subelement 
    // having the given class attribute
    s = "";
    try {
	for (i = 0; i < el.childNodes.length; i++) {
	    if (el.childNodes[i].nodeType == document.ELEMENT_NODE) {
		if (el.childNodes[i].className == className) {
		    return getTextValue(el.childNodes[i]);
		} else {
		    s = getSpanWithClass(el.childNodes[i], className);
		    if (s != "") return s;
		}
	    }
	}
    } catch(err){}
    return s;
}

function sortList(myid, field) {
    var A = $.makeArray($('#' + myid + ' li').remove());
    A.sort(function(a, b){
	    var aval = getSpanWithClass(a, field);
	    var bval = getSpanWithClass(b, field);
	    if (aval == bval) return 0;
	    if (aval < bval) return 1;
	    return -1;
	    });

    $('#' + myid).append(A);

}

function changeTabs(oldTab1,oldTab2,newTab) {
    if (document.getElementById) {
	document.getElementById(newTab).style.display = "inline";
	document.getElementById(oldTab1).style.display = "none";
	document.getElementById(oldTab2).style.display = "none";
	return false;
    } else if (document.all) {
	document.all[oldTab1].style.display = "none";
	document.all[oldTab2].style.display = "none";
	document.all[newTab].style.display = "inline";
	return false;
    } else {
	return true;
    }
}

