﻿// JScript File

var toScroll=new Array()
var ie=document.all
var dom=document.getElementById
var firstNews_obj;
var secondNews_obj;

function newsScroll(name){
  var c=this; c.name=name; c.mc=0; c.i=2;
  return this;
}

newsScroll.prototype.addItem = function(text,link,font,fontSize,fontStyle){
  var c = this;
  if (link !=''){
    if (font != '')
      toScroll[c.mc]="<a href='"+link+"'><font face='"+font+"' size='"+fontSize+"' Class='"+fontStyle+"'>"+text+"</font></a>";
    else
      toScroll[c.mc]="<a href='"+link+"'><font Class='"+fontStyle+"'>"+text+"</font></a>";
  }
  else { 
    if (font != '')
      toScroll[c.mc]="<font face='"+font+"' size='"+fontSize+"' Class='"+fontStyle+"'>"+text+"</font>";
    else
      toScroll[c.mc]="<font Class='"+fontStyle+"'>"+text+"</font>";
  }
  c.mc++;
}

newsScroll.prototype.construct = function(){
  var c = this; theWidth = c.scrollerwidth; theHeight=c.scrollerheight; thebgColor = c.scrollerbgcolor; theBackground =c.scrollerbackground; theDelay=c.scrollerdelay;
  scroll_obj=eval(c.name);        
  if (ie||dom){
    document.writeln('<div id="main2" style="position:relative;width:'+theWidth+';height:'+theHeight+';overflow:hidden;background-color:'+thebgColor+' ;background-image:url('+theBackground+')">')
    document.writeln('<div style="position:absolute;width:'+theWidth+';height:'+theHeight+';clip:rect(0 '+theWidth+' '+theHeight+' 0);left:0;top:0">')
    document.writeln('<div id="firstNews" style="position:absolute;width:'+theWidth+';left:0;top:1">')
    document.write(toScroll[0])
    document.writeln('</div>')
    document.writeln('<div id="secondNews" style="position:absolute;width:'+theWidth+';left:0;top:0;visibility:hidden">')
    document.write(toScroll[dyndetermine=(toScroll.length==1)? 0 : 1])
    document.writeln('</div>')
    document.writeln('</div>')
    document.writeln('</div>')
  }
}

newsScroll.prototype.move = function(whichdiv){
  var c = this; theDelay = c.scrollerdelay; theHeight = c.scrollerheight; 
  scroll_obj=eval(c.name);
  tdiv=eval(whichdiv)

  if (parseInt(tdiv.style.top)>0&&parseInt(tdiv.style.top)<=5){
    tdiv.style.top=0+"px"
    setTimeout("scroll_obj.move(tdiv)",theDelay)
    setTimeout("scroll_obj.move2(secondNews_obj)",theDelay)
    //document.write('Got Milk?')
  return
  }
  if (parseInt(tdiv.style.top)>=tdiv.offsetHeight*-1){
    tdiv.style.top=parseInt(tdiv.style.top)-5+"px"
    setTimeout("scroll_obj.move(tdiv)",50)
  }
  else {
    tdiv.style.top=parseInt(theHeight)+"px"
    tdiv.innerHTML=toScroll[c.i]
    if (c.i==toScroll.length-1)
      c.i=0
    else
      c.i++
  }
}

newsScroll.prototype.move2 = function(whichdiv){
  var c = this; theDelay = c.scrollerdelay; theHeight= c.scrollerheight;
  scroll_obj=eval(c.name);
  tdiv2=eval(whichdiv)

  if (parseInt(tdiv2.style.top)>0&&parseInt(tdiv2.style.top)<=5){
    tdiv2.style.top=0+"px"
    setTimeout("scroll_obj.move2(tdiv2)",theDelay)
    setTimeout("scroll_obj.move(firstNews_obj)",theDelay)
    return
  }
  if (parseInt(tdiv2.style.top)>=tdiv2.offsetHeight*-1){
    tdiv2.style.top=parseInt(tdiv2.style.top)-5+"px"
    setTimeout("scroll_obj.move2(secondNews_obj)",50)
  }
  else {
    tdiv2.style.top=parseInt(theHeight)+"px"
    tdiv2.innerHTML=toScroll[c.i]
    if (c.i==toScroll.length-1)
      c.i=0
    else
      c.i++
  }
}

newsScroll.prototype.startScroll = function(){
  var c = this;
  scroll_obj=eval(c.name);        
  
  if (toScroll.length >2)
    c.i = 2;
  else
    c.i = 0;
  
  firstNews_obj=ie? firstNews : document.getElementById("firstNews")
  secondNews_obj=ie? secondNews : document.getElementById("secondNews")
  setTimeout("scroll_obj.move(firstNews_obj)",c.scrollerDelay);
  secondNews_obj.style.top=theHeight;
  secondNews_obj.style.visibility='visible'
}

//***************************** scroller setup code 
theNews = new newsScroll("theNews"); //create our newsScroller object
theNews.scrollerdelay = 4500; // pausetime 3000 = 3 Seconds
theNews.scrollerwidth = 355;  // the width of the box
theNews.scrollerheight = 55; // the height of the box
theNews.scrollerbgcolor = ''; //  the box background color
theNews.scrollerbackground = ''; // Set to blank if you don't want to use a background image

//*****************load xml news source
    var xmlnewsfilepath = "xmlnews/pscnews.xml"; //file path to xml
    var request = getXMLHttpRequest(); //call getXMLHTTPreq.js script for request object

    var rnd = Math.floor(Math.random() * 100000000000000000000 +1); //random number to handle browser cache
    request.open("GET", xmlnewsfilepath + "?rand=" + rnd , true);
    request.send(null);
    
    request.onreadystatechange = function() 
    {   
        if (request.readyState == 4) 
        {
          var xmlDoc = request.responseXML;
          // obtain the array of NEWSITEMs and loop through it
          var newsitems = xmlDoc.getElementsByTagName("NEWSITEM");
          
          for (i = 0; i < newsitems.length; i++) 
          {
            var tag = parseInt(newsitems[i].getAttribute("TAGONLY"));
            if(tag == 0) //full news story, get headline, date and first paragraph
            {
                var headlinetxt = xmlDoc.getElementsByTagName("HEADLINE")[i].firstChild.nodeValue;
                var datetxt = xmlDoc.getElementsByTagName("PRESSDATE")[i].firstChild.nodeValue;
                var bodytxt = xmlDoc.getElementsByTagName("BODYTEXT")[i].firstChild.childNodes[0].nodeValue;
                
                theNews.addItem('<em><b>' + headlinetxt + '</b></em> - ' + datetxt + '<br>' + bodytxt.substring(0,160) + '...','http://www.psctechnology.com/press.asp','','','newsTxt');
            
            }//endif tag 0
            else //headline only
            {
                var headlinetxt = xmlDoc.getElementsByTagName("HEADLINE")[i].firstChild.nodeValue;
                theNews.addItem('<em><b>' + headlinetxt + '</b></em>','','','','newsTxt');
            }//end else tag 1
          }//end for loop
            theNews.startScroll();
        }//endif readystate
    }//end function

//******************************************************************
// The addItem method below has 5 variables and is formated as follows:
// addItem (text,link,font,fontSize,fontStyle)
// text      - the text to be displayed.
// link      - (optional) website, or page to link news item to.
// font      - (optional) Font face to use on item.
// fontSize  - (optional) size in pt format 
//     i.e. 1=8pt, 2=10pt, 3=12pt and so on.
// fontStyle - (optional) css style to assign to font. You can use the class name.
//******************************************************************
theNews.addItem('<em><b>Please wait while we load the latest PSC News...</b></em>','','','','newsTxt');

// the next 2 lines construct the news box, and start the scroller (moved start to ready state to help delay start of scroll)
theNews.construct();
