/// -------------------------------------------------------------------
/// Ajax XML Ticker (txt file source)
/// Author: Dynamic Drive (http://www.dynamicdrive.com)
///
/// Found 4-21-08 - we need to leave this in the file (a.wenger)
/// Modified from original to not use a file, but to instead take a variable with the necessary values in it
/// It is actually no longer ajax-ed - solely javascript
/// Removed ajax-functions and code that are no longer needed
/// -------------------------------------------------------------------

/// -------------------------------------------------------------------
/// Main Ticker Object function
/// ticker(xmlfile, divId, divClass, delay, optionalfadeornot)
/// -------------------------------------------------------------------
function ticker(xmlString, divId, divClass, delay, fadeornot)
{
   this.xmlString = xmlString //string of xml to parse
   this.tickerid = divId //ID of ticker div to display information
   this.delay = delay //Delay between msg change, in miliseconds.
   this.mouseoverBol = 0 //Boolean to indicate whether mouse is currently over ticker (and pause it if it is)
   this.pointer = 0
   this.opacitystring = (typeof fadeornot != "undefined") ? "width: 100%; filter:progid:DXImageTransform.Microsoft.alpha(opacity=100); -moz-opacity: 1" : ""
   if ( this.opacitystring != "" )
   {
      this.delay += 500 //add 1/2 sec to account for fade effect, if enabled
   }
   this.opacitysetting = 0.2 //Opacity value when reset. Internal use.
   this.messages = [] //Arrays to hold each message of ticker
   document.write('<div id="' + divId + '" class="' + divClass + '"><div style="' + this.opacitystring + '">Initializing ticker...</div></div>')
   
   this.initialize()
}

/// -------------------------------------------------------------------
/// initialize()- Initialize ticker method.
/// -uses this.xmlString and parses it using JavaScript DOM methods 
/// -------------------------------------------------------------------
ticker.prototype.initialize=function()
{
   this.contentdiv = document.getElementById(this.tickerid).firstChild //div of inner content that holds the messages
   this.contentdiv.style.display = "none"
   this.contentdiv.innerHTML = this.xmlString;
   if ( this.contentdiv.getElementsByTagName("div").length == 0 ) //if no messages were found
   {
      this.contentdiv.innerHTML = "<b>Error</b> fetching remote ticker file!"
      return
   }
   var instanceOfTicker = this
   document.getElementById(this.tickerid).onmouseover=function(){ instanceOfTicker.mouseoverBol = 1 }
   document.getElementById(this.tickerid).onmouseout=function(){ instanceOfTicker.mouseoverBol = 0 }

   //Cycle through XML object and store each message inside array
   for ( var i = 0 ; i < this.contentdiv.getElementsByTagName("div").length ; i++ )
   {
      if ( this.contentdiv.getElementsByTagName("div")[i].className == "message" )
      {
         this.messages[this.messages.length] = this.contentdiv.getElementsByTagName("div")[i].innerHTML
      }
   }
   
   this.contentdiv.innerHTML = ""
   this.contentdiv.style.display = "block"
   this.rotatemsg()
}

/// -------------------------------------------------------------------
/// rotatemsg()- Rotate through ticker messages and displays them
/// -------------------------------------------------------------------
ticker.prototype.rotatemsg=function()
{
   var instanceOfTicker = this
   if ( this.mouseoverBol == 1 ) //if mouse is currently over ticker, do nothing (pause it)
   {
      setTimeout( function(){ instanceOfTicker.rotatemsg() }, 100 )
   }
   else //else, construct item, show and rotate it!
   {
      this.fadetransition("reset") //FADE EFFECT- RESET OPACITY
      this.contentdiv.innerHTML = this.messages[this.pointer]
      this.fadetimer1 = setInterval( function(){ instanceOfTicker.fadetransition('up', 'fadetimer1') }, 100 ) //FADE EFFECT-PLAY IT
      this.pointer = ( this.pointer < this.messages.length - 1 ) ? this.pointer + 1 : 0
      setTimeout( function(){ instanceOfTicker.rotatemsg() }, this.delay ) //update container periodically
   }
}

/// -------------------------------------------------------------------
/// fadetransition()- cross browser fade method for IE5.5+ and Mozilla/Firefox
/// -------------------------------------------------------------------
ticker.prototype.fadetransition=function(fadetype, timerid)
{
   var contentdiv = this.contentdiv
   if (fadetype == "reset")
   {
      this.opacitysetting = 0.2
   }
   if ( contentdiv.filters && contentdiv.filters[0] )
   {
      if ( typeof contentdiv.filters[0].opacity == "number" ) //IE6+
      {
         contentdiv.filters[0].opacity = this.opacitysetting * 100
      }
      else //IE 5.5
      {
         contentdiv.style.filter = "alpha(opacity=" + this.opacitysetting * 100 + ")"
      }
   }
   else if ( typeof contentdiv.style.MozOpacity != "undefined" && this.opacitystring != "" )
   {
      contentdiv.style.MozOpacity = this.opacitysetting
   }
   else
   {
      this.opacitysetting = 1
   }
   
   if ( fadetype == "up" )
   {
      this.opacitysetting += 0.1
   }
   
   if ( fadetype=="up" && this.opacitysetting >= 1 )
   {
      clearInterval( this[timerid] )
   }
}
