
function getMonths(decade, year, divid)
{
	var url = "/search/displayMonths.do?decade=" + escape(decade) + "&year=" + year;
	// Get an XMLHTTPConnection object.
	var xhConn = new XHConn();
	if (!xhConn) {	// Browser doesn't support XMLHttpRequest.
		alert("Cannot make remote request to server.");
		return;
	}
	var fnWhenDone =
		function (XHObj)
		{
			if (XHObj.status == 200)
			{
				if (isResponseOk(XHObj.responseText))
				{
					var loiDiv = document.getElementById(divid);
					var response = XHObj.responseText;
					loiDiv.innerHTML = response;
				}
				else
				{	// Just return, as browser is being redirected.
					return;
				}
			}
		}

	xhConn.connect(url, fnWhenDone);
}

function isResponseOk(response)
{
	if (response.match("error")!=null)
	{
		window.location = "/error.do";
		return false;
	}
	if (response.match("no articles") !=null)
	{
		window.location = "/sessionTimeout.do";
		return false;
	}
	return true;
}



function getDocumentsForMonth(decade, year, month, divId) {
	var div = document.getElementById(divId);
	document.body.style.cursor = "wait";
	var url = "/search/browseByMonth.do?decade=" + escape(decade) + "&year=" + year + "&month=" + month;
	// Get an XMLHTTPConnection object.
	var xhConn = new XHConn();
	if (!xhConn) {	// Browser doesn't support XMLHttpRequest.
		alert("Cannot make remote request to server.");
		return;
	}
	var fnWhenDone =
		function (XHObj)
		{
			if (XHObj.status == 200)
			{
				if (isResponseOk(XHObj.responseText))
				{
			    	div.innerHTML = XHObj.responseText;
					div.style.display = "block";
					//document.getElementById("issueImg" + divId.substring(13)).src = "/images/filter_images/collapse.gif";
					window.location = "#issue" + divId.substring(13);
				}
				else
				{	// Just return, as browser is being redirected.
					return;
				}
			}
			else
			{
	            alert("There was a problem retrieving article listing:\n" + xmlhttp.statusText);
			}
	    	document.body.style.cursor = "auto";
		}
	xhConn.connect(url, fnWhenDone);
}


function getDocumentsForCollVol(collvol, divId) {
	var div = document.getElementById(divId);
	document.body.style.cursor = "wait";
	var url = "/search/browseByVolume.do?browseTo=" + escape(collvol) + "&pageNumber=1";
	// Get an XMLHTTPConnection object.
	var xhConn = new XHConn();
	if (!xhConn) {	// Browser doesn't support XMLHttpRequest.
		alert("Cannot make remote request to server.");
		return;
	}
	var fnWhenDone =
		function (XHObj)
		{
			if (XHObj.status == 200)
			{
				if (isResponseOk(XHObj.responseText))
				{
			    	div.innerHTML = XHObj.responseText;
					div.style.display = "block";
					//document.getElementById("issueImg" + divId.substring(13)).src = "/images/filter_images/collapse.gif";
					window.location = "#issue" + divId.substring(13);
				}
				else
				{	// Just return, as browser is being redirected.
					return;
				}
			}
			else
			{
	            alert("There was a problem retrieving article listing:\n" + xmlhttp.statusText);
			}
	    	document.body.style.cursor = "auto";
		}
	xhConn.connect(url, fnWhenDone);
}

/*
** XHConn - Simple XMLHttpRequest Interface Object.
** Modified from http://xkr.us/code/javascript/XHConn/
** Code licensed under Creative Commons Attribution-ShareAlike License
*/
function XHConn()
{
	var xmlhttp, bComplete = false;
	try {
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); }
		catch (e)	{ try {	xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); }
		catch (e)	{ try {	xmlhttp = new XMLHttpRequest(); }
		catch (e)	{ xmlhttp = false; }}
	}
	if (!xmlhttp)	return null;

	this.connect = function(sUrl, fnDone)
	{
		if (!xmlhttp) return false;
		bComplete = false;
		try {
			xmlhttp.open("GET", sUrl, true);
			xmlhttp.onreadystatechange = function() {
				if (xmlhttp.readyState == 4 && !bComplete)
				{
					bComplete = true;
					fnDone(xmlhttp);
				}
			};
			xmlhttp.send("");
		} catch(z) { return false; }
		return true;
	};
	return this;
}
