  // Fade effect only in IE; degrades gracefully  
  var iCrossFadeDuration = 3
  var SlideShows         = new Array()
  var LoadedImages       = new Array()
  
  // Images will eventually become a comma separated list of image numbers 
  function addSlideShow (cImgName){
    var iSlideShowCount = SlideShows.length
    
    SlideShows[iSlideShowCount]           = new Object()
    SlideShows[iSlideShowCount].Init      = false
    SlideShows[iSlideShowCount].Name      = cImgName
    SlideShows[iSlideShowCount].Image     = 0
    SlideShows[iSlideShowCount].ImageList = ""
    SlideShows[iSlideShowCount].TextList  = ""
    SlideShows[iSlideShowCount].URLList   = ""
  }
  
  function addSlideShowImage(cImgName, cImage, cText, cURL){
    iImage = LoadedImages.length
    
    LoadedImages[iImage] = new Image()
    LoadedImages[iImage].name = cImgName
    LoadedImages[iImage].src  = cImage

    // increment SlideShow image count 
    for (iShow = 0; iShow < SlideShows.length; iShow++){
      if (SlideShows[iShow].Name == cImgName){
        // if already have image(s) then concatenate a comma
        if (SlideShows[iShow].ImageList.length != 0){
          SlideShows[iShow].ImageList += ","
        }
        SlideShows[iShow].ImageList += cImage

        if (SlideShows[iShow].TextList.length != 0){
          SlideShows[iShow].TextList += ","
        }
        SlideShows[iShow].TextList += cText
        
        if (SlideShows[iShow].URLList.length != 0){
          SlideShows[iShow].URLList += ","
        }        
        SlideShows[iShow].URLList += cURL
      }
    }
  }
  
  function getNextSlide (cImgName, oImage){    
    for (iShow = 0; iShow < SlideShows.length; iShow ++){
      if (SlideShows[iShow].Name == cImgName){
        aImages = SlideShows[iShow].ImageList.split (",")
        oImage.src = aImages[SlideShows[iShow].Image] 
      }
    }     
  }
  
  function getNextURL (cImgName, oAnchor){    
    for (iShow = 0; iShow < SlideShows.length; iShow ++){
      if (SlideShows[iShow].Name == cImgName){
        aURLList  = SlideShows[iShow].URLList.split  (",")
        oAnchor.href = aURLList[SlideShows[iShow].Image]

        aTextList = SlideShows[iShow].TextList.split (",")
        if (oAnchor.text != undefined){
          if (aTextList[SlideShows[iShow].Image] != "#"){
            oAnchor.innerHTML = aTextList[SlideShows[iShow].Image]
          }
        }
      }
    }     
  }
  
  function incrementSlide (cImgName){
    for (iShow = 0; iShow < SlideShows.length; iShow ++){
      if (SlideShows[iShow].Name == cImgName){  
        aImages = SlideShows[iShow].ImageList.split (",")        
        
        SlideShows[iShow].Image += 1        
        if (SlideShows[iShow].Image > aImages.length - 1){
          SlideShows[iShow].Image = 0
        }  

      }
    }
  }  

  function runSlideShow(cImgName, iSlideShowSpeed){
    var ImgArray  = document.getElementsByTagName('img')
    var HRefArray = document.getElementsByTagName('a')
  
    var cImage    = ""

    // loop through each img tag and look for our SlideShowName
    // once found then update <img> tags with new image
    for (iImg = 0; iImg < ImgArray.length; iImg++){
      if (ImgArray[iImg].name == cImgName){
        if (document.all){
          ImgArray[iImg].style.filter="blendTrans(duration=2)"
          ImgArray[iImg].style.filter="blendTrans(duration=iCrossFadeDuration)"
          ImgArray[iImg].filters.blendTrans.Apply()
        }
        
        getNextSlide (cImgName, ImgArray[iImg])

        if (document.all){
          ImgArray[iImg].filters.blendTrans.Play()     
        }
      }
    }

    // Update <A> tags with new HREF 
    for (iUrl = 0; iUrl < HRefArray.length; iUrl++){
      if (HRefArray[iUrl].name == cImgName){
        getNextURL (cImgName, HRefArray[iUrl])
      }
    }
    incrementSlide (cImgName)
    setTimeout("runSlideShow('" + cImgName + "', " + iSlideShowSpeed.toString() + ")", iSlideShowSpeed)
  }