attachOnload(function() {

  var preloadedImages = [];
  function preload(src) {
    preloadedImages.push(new Image());
    preloadedImages[preloadedImages.length - 1].src = src;
  }


  /* ***** New Products links ************************************** */
  var newprod = document.getElementById('newproducts');
  newprod.live = true;
  newprod.setup = 0;

  var newlist = newprod.getElementsByTagName('ul')[0];
  newlist.item = newlist.getElementsByTagName('li');
  for (var x = 0; x < newlist.item.length; x++) {
    if (x >= 3) {
      newlist.item[x].style.display = "none";
      newlist.item[x].opacity = 0;
      newlist.item[x].style.opacity = 0;
      newlist.item[x].style.filter = "alpha(opacity=0)";
    } else newlist.item[x].opacity = 10;
    newlist.item[x].fadeOut = function(init) {
      var self = this;
      if (init) {
        clearInterval(this.interval);
        this.interval = setInterval(function() { self.fadeOut(); }, 30);
      }
      this.style.opacity = (--this.opacity) / 10;
      this.style.filter = "alpha(opacity=" + (this.opacity * 10) + ")";
      if (this.opacity <= 0) {
        this.style.display = "none";
        clearInterval(this.interval);
      }
    }
    newlist.item[x].fadeIn = function(init) {
      var self = this;
      if (init) {
        this.style.display = "block";
        clearInterval(this.interval);
        this.interval = setInterval(function() { self.fadeIn(); }, 30);
      }
      this.style.opacity = (++this.opacity) / 10;
      this.style.filter = "alpha(opacity=" + (this.opacity * 10) + ")";
      if (this.opacity >= 10) clearInterval(this.interval);
    }
    for (var y = 0, imgs = newlist.item[x].getElementsByTagName('img'); y < imgs.length; y++)
      preload(imgs[y].src);
  }

  newprod.onmouseover = function() {
    clearInterval(this.interval);
  };
  newprod.onmouseout = function() {
    this.interval = setInterval(function() { newprod.flip(true); }, 5000);
  };

  newprod.flip = function(d) {
    if (d) {
      if ((d = this.setup + 3) >= newlist.item.length) d -= newlist.item.length;
    } else if ((d = this.setup - 3) < 0) d += newlist.item.length;

    var x = 0, y;
    do {
      if ((y = this.setup + x) >= newlist.item.length) y -= newlist.item.length;
      newlist.item[y].fadeOut(true);

      if ((y = d + x) >= newlist.item.length) y -= newlist.item.length;
      clearTimeout(newlist.item[y].timeout);
      newlist.item[y].timeout = setTimeout((function(x, y) { return function() {
        newlist.item[y].style.display = "block";
        newlist.item[y].style.opacity = 0;
        newlist.item[y].timeout = setTimeout((function(y) { return function() {
          newlist.item[y].fadeIn(true);
        }})(y), x * 250);
      }})(x, y), 750);
    } while (++x < 3);

    this.setup = d;
  };

  newprod.onmouseout();




  /* ***** Featured Products links ********************************* */
  var features = document.getElementById('features');

  var featlist = features.getElementsByTagName('ul')[0];
  featlist.item = featlist.getElementsByTagName('li');
  featlist.disp = Math.floor(Math.random() * featlist.item.length); // Initial splash to display
  featlist.disp = 1;

  var featimgs = features.getElementsByTagName('ol')[0];
  featimgs.item = featimgs.getElementsByTagName('li');

  for (var x = 0; x < featlist.item.length; x++) {
    featlist.item[x].sibling = featlist.item;
    featlist.item[x].onmouseover = function() {
      var self = this;
      for (var y = 0; y < this.sibling.length; y++)
        this.sibling[y].className = "";
      this.className = "hover";
      clearInterval(featlist.interval);
      clearTimeout(featlist.timeout);
      featimgs.item[featlist.disp].fadeOut(true);
      featlist.item[featlist.disp].className = "";
      if (this.img) this.img.fadeIn(true);
    };
    featlist.item[x].onmouseout = function() {
      var self = this;
      this.className = "";
      clearInterval(featlist.interval);
      clearTimeout(featlist.timeout);
      featlist.timeout = setTimeout(function() {
        featlist.automate();
        featlist.interval = setInterval(featlist.automate, 6000);
      }, 1000);
      if (this.img) this.img.fadeOut(true);
    };

    if (featimgs.item[x]) {
      featlist.item[x].img = featimgs.item[x];
      featimgs.item[x].lst = featlist.item[x];
      featimgs.item[x].opacity = 0;
      featimgs.item[x].fadeOut = function(init) {
        var self = this;
        if (init) {
          this.zIndex = 0;
          this.lst.className = "";
          clearInterval(this.interval);
          this.interval = setInterval(function() { self.fadeOut(); }, 40);
        }
        this.style.opacity = (--this.opacity) / 10;
        this.style.filter = "alpha(opacity=" + (this.opacity * 10) + ")";
        if (this.opacity <= 0) {
          this.style.display = "none";
          clearInterval(this.interval);
        }
      };
      featimgs.item[x].fadeIn = function(init) {
        var self = this;
        if (init) {
          this.zIndex = 1;
          this.style.display = "block";
          this.lst.className = "hover";
          clearInterval(this.interval);
          this.interval = setInterval(function() { self.fadeIn(); }, 40);
        }
        this.style.opacity = (++this.opacity) / 10;
        this.style.filter = "alpha(opacity=" + (this.opacity * 10) + ")";
        if (this.opacity >= 10)
          clearInterval(this.interval);
      };
      preload(featimgs.item[x].getElementsByTagName('img')[0].src);
    }
  }

  featimgs.item[featlist.disp].fadeIn(true);
  featlist.automate = function() {
    featimgs.item[featlist.disp].fadeOut(true);
    if (++featlist.disp >= featimgs.item.length) featlist.disp = 0;
    featimgs.item[featlist.disp].fadeIn(true);
  }
  featlist.timeout = false;
  featlist.interval = setInterval(featlist.automate, 6000);
});
