// document.domain="law.virginia.edu"; var firstNewsItem=0; var newsCategory=""; var lookupURL; var divName="newsdiv"; var serverName="http://www.law.virginia.edu" var lastVal = ""; var val = "" var searching=false; var xmlHttp; var retryNum=0; // var cache = new Object(); var globalDom; var dbPath = 'lawweb/news.nsf'; // function that allows URL customization function getLookupURL(queryString){ if (queryString == '') { var strURL = '/' + dbPath + '/csinew?readviewentries'; }else{ var strURL = '/' + dbPath + '/csibytopic?readviewentries&restrictToCategory=' + escape(queryString) + '&count=30'; //var strURL = '/' + dbPath + '/csibytopic?readviewentries&startKey=' + //queryString + '&untilKey=' + queryString + 'z&count=30'; } return strURL; } function getParameter ( parameterName ) { queryString=window.location.search; var parameterName = parameterName + "="; if ( queryString.length > 0 ) { begin = queryString.indexOf ( parameterName ); if ( begin != -1 ) { begin += parameterName.length; end = queryString.indexOf ( "&" , begin ); if ( end == -1 ) { end = queryString.length } return unescape ( queryString.substring ( begin, end ) ); } return ""; } return ""; } /** This sets up the XMLHTTP object we're using for the dynamic lookups. */ function getXMLHTTP(){ var A = null; try{ A = new ActiveXObject("Msxml2.XMLHTTP"); }catch(e){ try{ A = new ActiveXObject("Microsoft.XMLHTTP"); } catch(oc){ A = null; } } if(!A && typeof XMLHttpRequest != "undefined") { A = new XMLHttpRequest(); } return A; } /** This sends the lookup request (as a URL with a query string) to a server in the background. When a response comes back from the server, the function attached to the onReadyStateChange event is fired off. */ function doRemoteQuery(queryString){ newsCategory=getParameter("Topic"); searching = true; retryNum=5; //allow IE to retry 5 times to get height measurement if(xmlHttp && xmlHttp.readyState != 0) { xmlHttp.abort() } xmlHttp=getXMLHTTP(); if(xmlHttp){ xmlHttp.open("GET", getLookupURL(newsCategory), true); // What do we do when the response comes back? xmlHttp.onreadystatechange = function() { if (xmlHttp.readyState == 4 && xmlHttp.responseText && searching) { searching = false; globalDom = xmlHttp.responseXML; showNews(val); } } ; xmlHttp.send(null); } } function showDiv (show){ //var div = getDiv(divName); var div = document.getElementById(divName); if (show) div.style.visibility = "visible"; else div.style.visibility = "hidden"; // adjustiFrame(); } function showNews(queryString){ //var div = getDiv(divName); var div = document.getElementById(divName); var extraRoom=20; // always leave this var estSizeStory=50; // we assume another story will be at least this long var height; if (window.innerHeight) { // alert("Non-IE"); height=window.innerHeight; } else if (document.documentElement && document.documentElement.clientHeight ) { // alert("IE strict"); height=document.documentElement.clientHeight; } else { // alert("IE quirks--de: "+document.documentElement +" dech: " +document.documentElement.clientHeight); height=document.body.clientHeight; if (height==0 && retryNum > 0) { retryNum=retryNum-1; //alert("retry"); window.setTimeout("showNews('" + queryString + "')",500); return; } } height=height-extraRoom; if (height < 0) height=0; // alert("ih: "+document.body.clientHeight + " Height:" + height); // alert(height); // to debug in FF //alert(new XMLSerializer().serializeToString(globalDom)); // to debug in IE //alert(globalDom.xml); // remove any results that are already there while (div.childNodes.length > 0) div.removeChild(div.childNodes[0]); // add an entry for each of the results in the domDoc var entryNodes = globalDom.getElementsByTagName('viewentry'); showDiv(1); //Start build of table oTable = document.createElement("table"); // oTable.setAttribute("width","200"); oTable.setAttribute("cellpadding","0"); oTable.setAttribute("cellspacing","0"); oTable.setAttribute("border","0"); if(entryNodes.length > 0){ // check to see if we have any results // buildHeader(div); div.appendChild(oTable); var i=firstNewsItem; while ((i < entryNodes.length) && ((oTable.offsetHeight + estSizeStory) < height)){ valueNodes = entryNodes[i].getElementsByTagName('entrydata') var result2 = document.createElement("span"); result2.className = "caption"; result2.style.textAlign = "left"; nodePubDate=valueNodes[1].getElementsByTagName('text')[0]; result2.innerHTML = nodePubDate.firstChild.nodeValue + "
"; nodeLinkback=valueNodes[4].getElementsByTagName('text')[0]; linkBack=nodeLinkback.firstChild.nodeValue; var result3 = document.createElement("a"); result3.className = "shortlist"; result3.setAttribute("href",linkBack); result3.setAttribute("target","_top"); // result3.style.textAlign = "left"; nodeHeaderTxt=valueNodes[2].getElementsByTagName('text')[0]; linkText=document.createTextNode(nodeHeaderTxt.firstChild.nodeValue); //result3.innerHTML = nodeHeaderTxt.firstChild.nodeValue; nodeImgTxt=valueNodes[5].getElementsByTagName('text')[0]; var result1=null; if ((nodeImgTxt.firstChild != null ) && (nodeImgTxt.firstChild.nodeValue.length > 2)) { result1 = document.createElement("img"); result1.className = "imageleft"; result1.setAttribute("border","0"); nodeImgTxt=valueNodes[5].getElementsByTagName('text')[0]; result1.setAttribute("src",nodeImgTxt.firstChild.nodeValue); } var result4 = document.createElement("span"); result4.className = "newsspaced"; // result4.style.font = "9px Verdana, Arial, Helvetica,sans-serif"; // result4.style.font-size = "7"; result4.style.textAlign = "left"; nodeSynopsis=valueNodes[3].getElementsByTagName('text')[0]; result4.innerHTML = nodeSynopsis.firstChild.nodeValue + '  '; oRow = oTable.insertRow(oTable.rows.length); oCell = oRow.insertCell(oRow.cells.length); oCell.appendChild(result2); result3.appendChild(linkText); oCell.appendChild(result3); // if (result1 != null) result3.appendChild(result1); //add image to link // result3.appendChild(document.createElement("p")); oCell.appendChild(document.createElement("br")); oCell.appendChild(document.createTextNode("\u00a0")); i++; } firstNewsItem=i; if (oTable.offsetHeight > height) { firstNewsItem=firstNewsItem-1; tempval= oTable.rows.length; oTable.deleteRow(tempval - 1); } if (firstNewsItem < entryNodes.length) { //var result5 = document.createElement("br"); //div.appendChild(result5); var result5 = document.createElement("a"); result5.className = "rsstopic"; // result5.onclick="showNews('')"; result5.style.textAlign = "center"; result5.setAttribute("href","javascript:showNews('')"); result5.innerHTML = " More News"; div.appendChild(result5); } } else { // alert("no news"); } } function buildHeader(div) { var rsslink="/" + dbPath + "/stories.xml"; var linktitle="UVa Law Current News"; if (newsCategory != "") { elem=document.createElement("span"); elem.className="rsstopic"; elem.innerHTML=" " +newsCategory; div.appendChild(elem); rsslink="/" + dbPath + "/StoriesByTopic.xml?open&Topic=" + escape(newsCategory); var linktitle="Law School Current News"; linktitle="Uva Law News By Topic--" +newsCategory; } elem=document.createElement("a"); elem.setAttribute("target","_top"); elem.href=rsslink; div.appendChild(elem); elem1=document.createElement("img"); elem1.align="right"; elem1.src="/icons/xml_button.gif"; elem1.border=""; elem.appendChild(elem1); elem1=document.createElement("br"); elem.appendChild(elem1); var linktag=document.getElementById("RSSLink"); if (linktag == null) { headtag=document.getElementsByTagName("head").item(0); linktag=document.createElement("link"); linktag.setAttribute("rel","alternate"); linktag.setAttribute("type","application/rss+xml"); linktag.setAttribute("id","RSSLink"); headtag.appendChild(linktag); } linktag.setAttribute("href",rsslink); linktag.setAttribute("title",linktitle); }