//<!-- Fade Select Slideshow -->
// This module requires core.js
//
//
function CFadeSelectSlideshow(a_szContainerID, a_rgbMouseOverColor)
{
   //
   // Public Variables
   //
   var m_szContainerID = a_szContainerID;
   this.m_szContainerID = m_szContainerID;

   var m_oContainer = ei(m_szContainerID);
   this.m_oContainer = m_oContainer;

   var m_rgbMouseOverColor = a_rgbMouseOverColor;
   this.m_rgbMouseOverColor = m_rgbMouseOverColor;

   var m_rgbMouseOutColor = '';
   this.m_rgbMouseOutColor = m_rgbMouseOutColor;

   var m_szSelectName = null;
   this.m_szSelectName = m_szSelectName;

   var m_szSelectTag = null;
   this.m_szSelectTag = m_szSelectTag;

   var m_iInterval = 3000; //in milliseconds
   this.m_iInterval = m_iInterval;

   var m_arrSlides = new Array();
   this.m_arrSlides = m_arrSlides;

   var m_iCurrentSlideIndex = 0;
   this.m_iCurrentSlideIndex = m_iCurrentSlideIndex;

   var m_szImageSrcAttr = "src";
   this.m_szImageSrcAttr = m_szImageSrcAttr;

   //
   // Private Variables
   //
   var m_oFadeContainer = null;
   var m_iTimerID = -1;
   var m_iDropSlideTimeID = -1;
   var m_szCanvas0ID = "canvas0";
   var m_oCanvas0 = null;
   var m_szCanvas1ID = "canvas1";
   var m_oCanvas1 = null;
   var m_oCurrentCanvas = null;
   var m_oCurrentCanvasImage = null;
   var m_iCurrentSlideIndex = null;
   var m_iFadeCurrentPos = 0;
   //
   // Constructor
   //
   if(m_oContainer)
   {
      if (ie4||dom)
      {
         m_oFadeContainer = insertElement(m_oContainer, "div", {style:"position:relative;width:100%;height:100%;overflow:hidden"});
         m_oCanvas0 = insertElement(m_oFadeContainer, "div", {id:m_szCanvas0ID, style:"position:absolute;width:100%;height:100%;top:0;left:0;"});
         m_oCanvas1 = insertElement(m_oFadeContainer, "div", {id:m_szCanvas1ID, style:"position:absolute;width:100%;height:100%;top:0;left:0;"});

         m_oCanvas0.style.zIndex = 2;
         m_oCanvas1.style.zIndex = 1;

         m_oCurrentCanvas = m_oCanvas0;
         m_iCurrentSlideIndex = 0;
      }
      else
      {
         m_oFadeContainer = insertElement(m_oContainer, "img", {name:"defaultslide", src:""});
      }
   }

   //
   // Public Functions
   //
   function init(a_szSelectTag, a_szSelectName)
   {
      m_szSelectTag = a_szSelectTag;
      m_szSelectName = a_szSelectName;

      var oCollection = etn(m_szSelectTag, m_szSelectName);
      var szImageSrc;
      for( index=0; index < oCollection.length; index++)
      {
         szImageSrc = oCollection[index].getAttribute(m_szImageSrcAttr);
         addSlide(oCollection[index],szImageSrc)
      }

      run();

      return true;      
   }
   this.init = init;
   
   function addSlide(a_oe, a_szImageSrc)
   {
      if(!a_oe) return false;
      if(!a_szImageSrc) return false;

//      if(a_oe.addEventListener)
//      {
//         a_oe.addEventListener('mouseover', itemMouseOver, false);
//         a_oe.addEventListener('mouseout', itemMouseOut, false);
//      }
//      else if(a_oe.attachEvent)
//      {
//         a_oe.attachEvent('onmouseover', itemMouseOver);
//         a_oe.attachEvent('onmouseout', itemMouseOut);
//      }
//      else
//      {
         a_oe.onmouseover = itemMouseOver;
         a_oe.onmouseout = itemMouseOut;
//      }

      var oItem = new Object;
      oItem.oElement = a_oe;
      oItem.src = a_szImageSrc;
      oItem.oImage = new Image();
      oItem.oImage.src = a_szImageSrc;
      oItem.index = m_arrSlides.length;

      m_arrSlides.push(oItem);

      if('' == m_oCurrentCanvas.innerHTML)
      {
         createImageInCurrentCanvas(oItem.src,100);
         m_iCurrentSlideIndex = oItem.index;            
      }
      return m_arrSlides.length;
   }
   this.addSlide = addSlide;

   function getSlideFromEvent(a_e)
   {
      var oSlide;
      a_e = a_e || window.event;
      if(a_e.srcElement)
      {
         a_e = a_e.srcElement;
      }
      else if(a_e.target)
      {
         a_e = a_e.target;
      }
      
      while('undefined'!=typeof(a_e))
      {
         if(a_e.getAttribute("name") == m_szSelectName)
         {
            break;
         }
         else if(a_e.parentNode)
         {
            a_e = a_e.parentNode;
         }
         else if(a_e.parentElement)
         {
            a_e = a_e.parentElement;               
         }
         else
         {
            break;
         }
      } //End while

      if('undefined' != typeof(a_e))
      {
			 oSlide = getSlideBySrc(a_e.getAttribute(m_szImageSrcAttr));
      }
      return oSlide;
   }


   function itemMouseOver(a_e)
   {
		var oSlide = getSlideFromEvent(a_e);
		
		if(oSlide)
		{
         m_rgbMouseOutColor = oSlide.oElement.style.backgroundColor;
         oSlide.oElement.style.backgroundColor = m_rgbMouseOverColor;

         stop();
         createImageInCurrentCanvas(oSlide.src,100);
      }
   }
   function itemMouseOut(a_e)
   {
		var oSlide = getSlideFromEvent(a_e);
		
		if(oSlide)
		{
         oSlide.oElement.style.backgroundColor = m_rgbMouseOutColor;
         stop();
         m_iCurrentSlideIndex = oSlide.index;
         run();
      }
   }
   function run()
   {
      if (-1 == m_iTimerID)
      {
           m_iTimerID = window.setInterval(nextSlide, m_iInterval);
      }
   }
   this.run = run;

   function stop()
   {
      if(-1 != m_iTimerID)
      {
         clearTimeout(m_iTimerID);
         m_iTimerID = -1;
      }
      if(-1 != m_iDropSlideTimeID)
      {
         clearTimeout(m_iDropSlideTimeID);
         m_iDropSlideTimeID = -1;
      }
   }
   this.stop = stop;

   function nextSlide()
   {
      m_iCurrentSlideIndex = getNextSlideIndex();
      gotoSlide(m_iCurrentSlideIndex);
   }
   this.nextSlide = nextSlide;

   function gotoSlide(a_iSlideIndex)
   {
      if (ie4||dom)
      {
         if(-1 != m_iDropSlideTimeID)
         {
            clearTimeout(m_iDropSlideTimeID);
            m_iDropSlideTimeID = -1;
         }
         var oSlide = getSlideByIndex(a_iSlideIndex);
         if(!oSlide) return false;


         m_oCurrentCanvas = (m_oCurrentCanvas.id == m_szCanvas0ID) ? m_oCanvas1 : m_oCanvas0;

         createImageInCurrentCanvas(oSlide.src,10);
         m_oCurrentCanvas.style.zIndex = m_oCurrentCanvas.style.zIndex-0+2;
         m_iDropSlideTimeID = setTimeout(fadepic,50)
      }
      else
      {
         document.images.defaultslide.src = m_arrSlides[a_iNewIndex]
      }
      m_iCurrentSlideIndex = a_iSlideIndex;
      return m_iCurrentSlideIndex;
   }
   this.gotoSlide = gotoSlide;
   //
   // Private Functions
   //
   function fadepic()
   {
      if(!m_oCurrentCanvasImage) return;
      if (m_iFadeCurrentPos<100)
      {
         m_iFadeCurrentPos = m_iFadeCurrentPos-0 + 10;
   
         if (m_oCurrentCanvasImage.filters)
            m_oCurrentCanvasImage.filters.alpha.opacity=m_iFadeCurrentPos
         else if (m_oCurrentCanvasImage.style.MozOpacity)
            m_oCurrentCanvasImage.style.MozOpacity=m_iFadeCurrentPos/100


         m_iDropSlideTimeID = setTimeout(fadepic,50)
      }
      else
      {
         clearTimeout(m_iDropSlideTimeID);
         m_iDropSlideTimeID = -1;
      }
   }
   function getSlideByIndex(a_iIndex)
   {
      for(iIndex in m_arrSlides)
      {
         if(m_arrSlides[iIndex].index == a_iIndex)
         {
            return m_arrSlides[iIndex];
         }
      }
      return null;      
   }
   function getSlideBySrc(a_szSrc)
   {
      for(iIndex in m_arrSlides)
      {
         if(m_arrSlides[iIndex].src == a_szSrc)
         {
            return m_arrSlides[iIndex];
         }
      }
      return null;      
   }
   function getNextSlideIndex()
   {
      if( (m_iCurrentSlideIndex-0) < (m_arrSlides.length-1))
      {
         return (m_iCurrentSlideIndex-0) + 1;
      }
      else
      {
         return 0;
      }
   }
   function createImageInCurrentCanvas(a_szImageSrc,a_szAlpha)
   {
      if(!m_oCurrentCanvas) return;
      m_oCurrentCanvas.innerHTML = '';

      var szFilter;
      if(ns6)
      {
         szFilter = "-moz-opacity:" + parseInt(a_szAlpha)/100;

         m_oCurrentCanvasImage = insertElement(m_oCurrentCanvas, "img", {src:a_szImageSrc, style:szFilter});
         m_iFadeCurrentPos = a_szAlpha;
      }
      else
      {
         szFilter = "filter:alpha(opacity=" + a_szAlpha + ")";
         m_oCurrentCanvasImage = insertElement(m_oCurrentCanvas, "img", {src:a_szImageSrc, style:szFilter});
         m_iFadeCurrentPos = a_szAlpha;
      }
   }

} //End of function CFadeSelectSlideshow()

