var xmlhttpOpn;
var publicationOnly = false;

function loadXMLDoc(url)
{
xmlhttpOpn=null
// code for Mozilla, etc.
if (window.XMLHttpRequest)
  {
  xmlhttpOpn=new XMLHttpRequest()
  }
// code for IE
else if (window.ActiveXObject)
  {
  xmlhttpOpn=new ActiveXObject("Microsoft.XMLHTTP")
  }
  
if (xmlhttpOpn!=null)
  {
  
   xmlhttpOpn.onreadystatechange=state_Change;
   try{xmlhttpOpn.open("POST",url,true);}
   catch(err)
   {
	document.getElementById("loadingOpinions").style.display = "none";
	document.body.style.cursor = "";
	return;
   }
   xmlhttpOpn.setRequestHeader("Content-length", 0);
   xmlhttpOpn.send("");
  }
else
  {
   alert("Your browser does not support XMLHTTP.")
  }
}
function state_Change()
{
// if xmlhttp shows "loaded"
if (xmlhttpOpn.readyState==4)
  {
  if (xmlhttpOpn.status==200)
    {
        FillOpinions();
        return true;
    }
  else
    {
	document.getElementById("loadingOpinions").style.display = "none";
	document.body.style.cursor = "";
        return false;
    }
  }
}
function FillOpinions()
{
    document.getElementById("xmlItemTable").rows[0].style.display="block";
    document.getElementById("xmlItemTable").rows[1].style.display="block";
    document.getElementById("xmlItemTable").rows[2].style.display="block";
    //while(document.getElementById("xmlItemTable").tBodies.length > 1)
    //    document.getElementById("xmlItemTable").removeChild(document.getElementById("xmlItemTable").tBodies[1]);
        
    var response = xmlhttpOpn.responseXML.documentElement;
    var x=response.getElementsByTagName("opinion");
    var pDateGroup = "";
    if(x.length == 0)
        document.getElementById("noOpinions").style.display = "block";
    for (i=0;i<x.length;i++)
    {
        var templateBody = document.createElement("tbody")
        if(document.getElementById("xmlItemTable").childNodes[0].innerHTML == undefined)
           templateBody = document.getElementById("xmlItemTable").childNodes[1].cloneNode(true);
        else
           templateBody = document.getElementById("xmlItemTable").childNodes[0].cloneNode(true);
        var opinionID = x[i].getElementsByTagName("recordnumber")[0].text;
        if(opinionID == undefined)
        {
          opinionID = x[i].getElementsByTagName("recordnumber")[0].textContent;
        }
        var caption = x[i].getElementsByTagName("caption")[0].text;
        if(caption == undefined)
        {
          caption = x[i].getElementsByTagName("caption")[0].textContent;
        }
        caption = "<a href='javascript:ViewOpinion(" + opinionID + ")'>" + caption + "</a><br>";
        if(selectedJudge == null)
        {
            var judgeID = x[i].getElementsByTagName("judge")[0].text;
            if(judgeID == undefined)
            {
              judgeID = x[i].getElementsByTagName("judge")[0].textContent;
            }
            caption += "<div width='100%' align='right'>- " + judgeName(judgeID.toLowerCase(), false) + "</div>";
        }
        else
            caption += "<br>"
        var authorizePublic = x[i].getElementsByTagName("public")[0].text;
        if(authorizePublic == undefined)
        {
          authorizePublic = x[i].getElementsByTagName("public")[0].textContent;
        }
        if( authorizePublic == "1")
            authorizePublic = "<li></li>"
        else
            authorizePublic = "";
        var pdate = x[i].getElementsByTagName("publicationdate")[0].text;
        if(pdate == undefined)
        {
          pdate = x[i].getElementsByTagName("publicationdate")[0].textContent;
        }
        if(publicationOnly == true)
        {
            authorizePublic = "";
            if(pdate != pDateGroup)
            {
                pDateGroup = pdate;
                pdate = "Added to publication list " + pdate;
            }
            else
                pdate = "";
        }
        else
            pdate = "";
        document.getElementById("xmlItemTable").appendChild(templateBody);
        for (r=0;r<templateBody.rows.length;r++)
        {
          for (c=0; c<templateBody.rows[r].cells.length; c++)
          {
            templateBody.rows[r].cells[c].innerHTML = templateBody.rows[r].cells[c].innerHTML.replace("<!--OPINIONPUBLIC-->", authorizePublic).replace("<!--OPINIONCAPTION-->", caption).replace("<!--OPINIONPUBLICATIONDATE-->", pdate);
          }
	  if(i%2 ==0)
	    templateBody.rows[r].style.backgroundColor = "#EEEEEE";
	  else
	    templateBody.rows[r].style.backgroundColor = "#FFFFD7";
        }
    }
    document.getElementById("loadingOpinions").style.display = "none";
    document.body.style.cursor = "";
    document.getElementById("xmlItemTable").rows[0].style.display="none";
    document.getElementById("xmlItemTable").rows[1].style.display="none";
    document.getElementById("xmlItemTable").rows[2].style.display="none";
}
function ClearOpinions()
{
    while(document.getElementById("xmlItemTable").tBodies.length > 1)
        document.getElementById("xmlItemTable").removeChild(document.getElementById("xmlItemTable").tBodies[1]);
}
function LoadOpinions(mostRecentOnly, publicOnly, judge, alphacode)
{
    publicationOnly = publicOnly;
    var reqString = "?";
    reqString += "mr=" + mostRecentOnly + "&";
    reqString += "pb=" + publicOnly + "&";
    if(judge != null)
        reqString += "judge=" + judge + "&";
    if(alphacode != null)
        reqString += "alpha=" + alphacode + "&";
    ClearOpinions();
    document.getElementById("noOpinions").style.display = "none";
    document.body.style.cursor = "wait";
    document.getElementById("loadingOpinions").style.display = "block";
    loadXMLDoc(WebServicePath + "LoadOpinions.aspx" + reqString);
}
function ViewOpinion(opinionID)
{
    window.open(WebServicePath + "ViewOpinion.aspx?id=" + opinionID);
}

var selectedJudge;
var selectedType;
function SelectJudge(judgeID)
{
 selectedJudge = judgeID;
 document.getElementById('backJudgeID').value = judgeID;
 document.getElementById('judgeLink').innerHTML = judgeName(judgeID, false);
 document.getElementById('judgeIndexLink').style.display = "inline";
 document.getElementById('judgeCatIndex').innerHTML = judgeName(judgeID, false);
// document.getElementById('judgeCatShort').innerHTML = judgeName(judgeID, true);
 document.getElementById('judgesBlock').style.display = "none";
 document.getElementById('typesBlock').style.display = "block";
}
function judgeName(judgeID, shortName)
{
var judgename = "";
 switch (judgeID)
 {
  case "jw":
   if(shortName == true)
      judgename = "Judge Waites";	
   else
      judgename = "The Honorable John E. Waites";	
   break;
  case "hb":
   if(shortName == true)
      judgename = "Judge Burris";	
   else
      judgename = "The Honorable Helen Elizabeth Burris";
   break;
  case "dd":
   if(shortName == true)
      judgename = "Judge Duncan";	
   else
      judgename = "The Honorable David R. Duncan";
   break;
  case null:
    judgename = "All Judges";
    break;
 }	
  return judgename;
}
function SelectType(typeID)
{
 selectedType = typeID;
 document.getElementById('backTypeID').value = typeID;
 document.getElementById('typeLink').innerHTML = typeName(typeID);
 document.getElementById('typesBlock').style.display = "none";
 document.getElementById('typeIndexLink').style.display = "inline";
}
function typeName(typeID)
{
var typename = "";
 switch (typeID)
 {
  case "mostRecent":
   typename = "10 Most Recently Posted Opinions Index";
   document.getElementById('publicOpinions').style.display = "block";
   LoadOpinions(true, false, selectedJudge, null);	
   break;
  case "alpha":
   typename = "Alphabetical Opinions Index";
   document.getElementById('publicOpinions').style.display = "block";
   document.getElementById('alphaLink').style.display = "block";
   document.getElementById('alphaNotice').style.display = "block";
   break;
  case "publication":
   typename = "Opinions Authorized for Publication";
   document.getElementById('authorizedNotice').style.display = "block";
   LoadOpinions(false, true, selectedJudge, null);
   break;
 }	
  return typename;
}
function selectAlpha(alphaLetter)
{
  document.getElementById('backLetterID').value = alphaLetter;
  document.getElementById('typeLink').innerHTML = "Alphabetical Opinions Index - " + alphaLetter;
}
function ShowJudges()
{
  document.getElementById('judgesBlock').style.display = "block";
  document.getElementById('judgeLink').innerHTML = "";
  document.getElementById('judgeIndexLink').style.display = "none";
  document.getElementById('typesBlock').style.display = "none";
  document.getElementById('typeLink').innerHTML = "";
  document.getElementById('typeIndexLink').style.display = "none";
  document.getElementById('alphaLink').style.display = "none";
  document.getElementById('publicOpinions').style.display = "none";
  document.getElementById("noOpinions").style.display = "none";
  document.getElementById('authorizedNotice').style.display = "none";
  document.getElementById('alphaNotice').style.display = "none";
  document.getElementById('backJudgeID').value = "";
  document.getElementById('backTypeID').value = "";
  document.getElementById('backLetterID').value = "";
  ClearOpinions();

}
function ShowTypes()
{
  document.getElementById('typeLink').innerHTML = "";
  document.getElementById('typeIndexLink').style.display = "none";
  document.getElementById('typesBlock').style.display = "block";
  document.getElementById('alphaLink').style.display = "none";
  document.getElementById('publicOpinions').style.display = "none";
  document.getElementById("noOpinions").style.display = "none";
  document.getElementById('authorizedNotice').style.display = "none";
  document.getElementById('alphaNotice').style.display = "none";
  document.getElementById('backTypeID').value = "";
  document.getElementById('backLetterID').value = "";
  ClearOpinions();
}

function RestoreOpinionsMenu()
{
  if(document.getElementById('backJudgeID').value.length > 0)
  {
    if(document.getElementById('backJudgeID').value == 'null')
     SelectJudge(null);
    else
     SelectJudge(document.getElementById('backJudgeID').value);
  }
  else
     return;
  if(document.getElementById('backTypeID').value.length > 0)
     SelectType(document.getElementById('backTypeID').value);
  else
    return;
  if(document.getElementById('backLetterID').value.length > 0)
  {
    var alphaLetter = document.getElementById('backLetterID').value;
    LoadOpinions(false, false, selectedJudge, alphaLetter)
    selectAlpha(alphaLetter);
  }
}
