var xmlItemTemplate;

var WebServicePath = "http://" + document.location.host + "/MessageWebService/";
var xmlhttp;
var xmlhttpAlert;
var xmlhttpSroll;
var xmlhttpNOS;
var startDate;
var msgType;
var AlertElement;


function loadXMLDoc(url)
{
xmlhttp=null
// code for Mozilla, etc.
if (window.XMLHttpRequest)
  {
  xmlhttp=new XMLHttpRequest()
  }
// code for IE
else if (window.ActiveXObject)
  {
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")
  }
  
if (xmlhttp!=null)
  {
  
   xmlhttp.onreadystatechange=state_Change;
   try{xmlhttp.open("POST",url,true);}
   catch(err){return;}
   xmlhttp.setRequestHeader("Content-length", 0);
   xmlhttp.send("");
  }
else
  {
   alert("Your browser does not support XMLHTTP.")
  }
}

function loadAlert(url)
{
xmlhttpAlert=null
// code for Mozilla, etc.
if (window.XMLHttpRequest)
  {
  xmlhttpAlert=new XMLHttpRequest()
  }
// code for IE
else if (window.ActiveXObject)
  {
  xmlhttpAlert=new ActiveXObject("Microsoft.XMLHTTP")
  }
  
if (xmlhttpAlert!=null)
  {
  
   xmlhttpAlert.onreadystatechange=state_ChangeAlert;
   try{xmlhttpAlert.open("POST",url,true);}
   catch(err){return;}
   xmlhttpAlert.setRequestHeader("Content-Length", 0);
   xmlhttpAlert.send("");
  }
else
  {
   alert("Your browser does not support XMLHTTP.")
  }
}

function loadScroll(url)
{
xmlhttpScroll=null
// code for Mozilla, etc.
if (window.XMLHttpRequest)
  {
  xmlhttpScroll=new XMLHttpRequest()
  }
// code for IE
else if (window.ActiveXObject)
  {
  xmlhttpScroll=new ActiveXObject("Microsoft.XMLHTTP")
  }
  
if (xmlhttpScroll!=null)
  {
  
   xmlhttpScroll.onreadystatechange=state_ChangeScroll;
   try{xmlhttpScroll.open("POST",url,true);}
   catch(err){return;}
   xmlhttpScroll.setRequestHeader("Content-length", 0);
   xmlhttpScroll.send("");
  }
else
  {
   alert("Your browser does not support XMLHTTP.")
  }
}

function loadNOS(url)
{
xmlhttpNOS=null
// code for Mozilla, etc.
if (window.XMLHttpRequest)
  {
  xmlhttpNOS=new XMLHttpRequest()
  }
// code for IE
else if (window.ActiveXObject)
  {
  xmlhttpNOS=new ActiveXObject("Microsoft.XMLHTTP")
  }
  
if (xmlhttpNOS!=null)
  {
  
   xmlhttpNOS.onreadystatechange=state_ChangeNOS;
   try{xmlhttpNOS.open("POST",url,true);}
   catch(err){return;}
   xmlhttpNOS.setRequestHeader("Content-length", 0);
   xmlhttpNOS.send("");
  }
else
  {
   alert("Your browser does not support XMLHTTP.")
  }
}
function state_Change()
{
// if xmlhttp shows "loaded"
if (xmlhttp.readyState==4)
  {
  if (xmlhttp.status==200)
    {
        FillXmlTable();
        return true;
    }
  else
    {
        //alert("Problem retrieving XML data:"+xmlhttp.status)
        return false;
    }
  }
}

function state_ChangeAlert()
{
// if xmlhttpAlert shows "loaded"
if (xmlhttpAlert.readyState==4)
  {
  if (xmlhttpAlert.status==200)
    {
        var alertHTML =	xmlhttpAlert.responseXML.documentElement.text;
		if(alertHTML == undefined)
			alertHTML =	xmlhttpAlert.responseXML.documentElement.textContent;
        AlertElement.innerHTML = alertHTML;
        return true;
    }
  else
    {
        //alert("Problem retrieving Alert XML data:" + xmlhttpAlert.status)
        return false;
    }
  }
}

function state_ChangeScroll()
{
// if xmlhttp shows "loaded"
if (xmlhttpScroll.readyState==4)
  {
  if (xmlhttpScroll.status==200)
    {
        FillScroll();
        return true;
    }
  else
    {
        //alert("Problem retrieving ScrollBox XML data:" + xmlhttpScroll.status)
        return false;
    }
  }
}

function state_ChangeNOS()
{
// if xmlhttp shows "loaded"
if (xmlhttpNOS.readyState==4)
  {
  if (xmlhttpNOS.status==200)
    {
        FillNOS();
        return true;
    }
  else
    {
        //alert("Problem retrieving NOS XML data:" + xmlhttpNOS.status)
        return false;
    }
  }
}

function FillXmlTable()
{
    theDate = startDate;
    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 = xmlhttp.responseXML.documentElement;
    var x=response.getElementsByTagName("message");
    for (i=0;i<x.length;i++)
    {
        var attribs = x[i].attributes;
        if(attribs.getNamedItem("display").value == "false")
          continue;
        if(attribs.getNamedItem(msgType).value == "false")
          continue;
        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 date;
        var title;
        var entry;
        var xx=x[i].getElementsByTagName("date")
        {
         try
         {
            date = xx[0].childNodes[0].childNodes[0].nodeValue
            date += "/";
            date += xx[0].childNodes[1].childNodes[0].nodeValue
            date += "/";
            date += xx[0].childNodes[2].childNodes[0].nodeValue
         }
         catch (er)
         {
            alert("Error reading message date.");
         }
        }
        
        title = x[i].getElementsByTagName("title")[0].childNodes[0].nodeValue;
        entry = x[i].getElementsByTagName("entry")[0].text;
        if(entry == undefined)
        {
          entry = x[i].getElementsByTagName("entry")[0].textContent;
        }
        if(msgType == "wn" && attribs.getNamedItem("jc").value == "true")
        {
           title = "Judges' Corner - " + title;
           entry = "<a href='judges_corner.html#" + attribs.getNamedItem("msgid").value + "'>Please click here to view the entire posting at the Judges' Corner</a>";
        }

        var msgAnchor = "<A NAME='" + attribs.getNamedItem("msgid").value + "'></A>";
        //document.getElementById("xmlItemTable").appendChild(msgAnchor);
        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("<!--ITEMDATE-->", date).replace("<!--ITEMMSGBODY-->", entry).replace("<!--ITEMTITLE-->", msgAnchor + title);
          }
        }
    }
    document.getElementById("xmlItemTable").rows[0].style.display="none";
    document.getElementById("xmlItemTable").rows[1].style.display="none";
    document.getElementById("xmlItemTable").rows[2].style.display="none";
    //document.getElementById("xmlItemTable").deleteRow(0);document.getElementById("xmlItemTable").deleteRow(0);document.getElementById("xmlItemTable").deleteRow(0);
}

function FillScroll()
{
    var response = xmlhttpScroll.responseXML.documentElement;
    var x=response.getElementsByTagName("message");
    var divTemplate = document.getElementById("scrollBox").cloneNode(true)
    var MaxHeight = parseInt(document.getElementById("itemMsgBody").style.height);
    var msgElement = document.getElementById("itemMsgBody").cloneNode(true);
    document.getElementById("scrollBox").innerHTML = "";
    var scrollItem = "";
    
    for (i=0;i<x.length;i++)
    {
        var attribs = x[i].attributes;
        var date;
        var title;
        var entry;
	    var category;
	    var link;


	scrollItem = divTemplate.innerHTML;


	if(i == 0)
	{
	    scrollItem = scrollItem.replace("<!--DIVANNOUNCEMENT-->", "LATEST ANNOUNCEMENTS")
	}

	if(attribs.getNamedItem("wn").value == "true")
	{
	  category = "What's New";
	  link = "whats_new.html#" + attribs.getNamedItem("msgid").value;
	}
	if(attribs.getNamedItem("jc").value == "true")
	{
	  category = "Judges' Corner";
	  link = "judges_corner.html#" + attribs.getNamedItem("msgid").value;
	}

        var xx=x[i].getElementsByTagName("date")
        {
         try
         {
            date = xx[0].childNodes[0].childNodes[0].nodeValue
            date += "/";
            date += xx[0].childNodes[1].childNodes[0].nodeValue
            date += "/";
            date += xx[0].childNodes[2].childNodes[0].nodeValue
         }
         catch (er)
         {
            alert("Error reading message date.");
         }
        }
        

        title = x[i].getElementsByTagName("title")[0].childNodes[0].nodeValue;
        entry = x[i].getElementsByTagName("entry")[0].text;
        if(entry == undefined)
        {
          entry = x[i].getElementsByTagName("entry")[0].textContent;
        }
        scrollItem = scrollItem.replace("<!--ITEMDATE-->", date).replace("<!--ITEMTITLE-->", title).replace("<!--ITEMCATEGORY-->", category).replace("<!--ITEMLINK-->", link).replace("%3C%21--ITEMLINK--%3E", link);


	    document.getElementById("scrollBox").innerHTML += scrollItem;
	    
	    entry = autoEllipseText(document.getElementById("itemMsgBody"), entry, MaxHeight)
	    document.getElementById("itemMsgBody").id = document.getElementById("itemMsgBody").id+attribs.getNamedItem("msgid").value;
    }
	var doneDiv = document.getElementById("scrollBox").cloneNode(true);
	doneDiv.id = "scrollBox2";
	document.getElementById("scrollBox").parentNode.appendChild(doneDiv);
	divHeight();
}

function FillNOS()
{
    var response = xmlhttpNOS.responseXML.documentElement;
    var x=response.getElementsByTagName("nosfile");
    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 date;
        var title;
        var entry;

        date = x[i].getElementsByTagName("date")[0].childNodes[0].nodeValue
        caseNum = x[i].getElementsByTagName("case")[0].childNodes[0].nodeValue;
        fileName = x[i].getElementsByTagName("filename")[0].childNodes[0].nodeValue;

        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("<!--ITEMDATE-->", date).replace("<!--ITEMFILE-->", fileName).replace("<!--ITEMCASE-->", caseNum).replace("%3C%21--ITEMFILE--%3E", fileName)
          }
        }
        templateBody.deleteRow(0);
        
    }
    document.getElementById("xmlItemTable").deleteRow(1);
}

function autoEllipseText(element, text, maxHeight)
{
	text = text.replace("&nbsp;", " ");
	element.innerHTML = '<span id="ellipsisSpan">' + text + '</span>';
	var inSpan = document.getElementById('ellipsisSpan');
	var needsEllipsis = false;
	var inTag = false;
	var i = 0;
	
	if(inSpan.offsetHeight > maxHeight || element.offsetHeight > maxHeight)
	    needsEllipsis = true;

	inSpan.innerHTML = '';
	
	while(inSpan.offsetHeight <= (maxHeight) && element.offsetHeight <= (maxHeight+15))
	{   
          if(i < text.length)
          {
            if(text.charAt(i) == "<")
              inTag = true;
            
            if(!inTag)
              inSpan.innerHTML += text.charAt(i);

            if(text.charAt(i) == ">")
              inTag = false;
            
            i++; 
          }
          else {break;}
	}
	/*var tempString = inSpan.innerHTML;
	var lastSpace = 0;
	if(needsEllipsis)
	{
	  do
	  {
	    lastSpace = tempString.indexOf(" ", lastSpace+1);
		if(lastSpace == -1)
		{			
			break;
		}
        inSpan.innerHTML = tempString.substr(0, lastSpace) + "...";
	  }
	  while(inSpan.offsetHeight <= (maxHeight) || element.offsetHeight <= (maxHeight))
	}*/
	if(needsEllipsis)
	{
	  do
	  {
	    var lastSpace = inSpan.innerHTML.lastIndexOf(" ", inSpan.innerHTML.length-3);
        inSpan.innerHTML = inSpan.innerHTML.substr(0, lastSpace) + "...";
	  }
	  while(inSpan.offsetHeight > (maxHeight) && maxHeight!=0 && element.offsetHeight > (maxHeight))
	}

	returnText = inSpan.innerHTML; 
	element.innerHTML = returnText;
    if(element.offsetHeight > (maxHeight + 15))
        element.innerHTML = autoEllipseText(element, element.innerHTML, maxHeight);
	return returnText;
} 

function initXML(pageType, theDate)
{
    startDate = theDate;
    msgType = pageType;
    if(isNaN(Number(theDate)) || Number(theDate) == 0)
        loadXMLDoc(WebServicePath + "LoadWN.aspx");
    else
        loadXMLDoc(WebServicePath + "LoadWN.aspx?archive="+theDate);
}

function GetWebAlert(element)
{
    AlertElement = element;
    loadAlert(WebServicePath + "LoadAlert.aspx");


//<!-- Put this anywhere you want the Web Alert to show up -->
//<!-- Begin WebAlert script -->
//<script type="text/javascript" src="../wnxml.js"></script>
//<div id="WebAlert"></div>
//<script language="javascript">GetWebAlert(document.getElementById("WebAlert"));</script>
//<!-- End WebAlert Script -->
}

function initScrollBox()
{
     loadScroll(WebServicePath + "LoadScroll.aspx");
}

function NOS()
{
    loadNOS(WebServicePath + "LoadNOS.aspx");
}