Cufon.replace('#primary_navigation a', { fontFamily: 'DIN-Medium', textShadow: '#666 1px 1px' });
Cufon.replace('#footer .navigation a, #footer .email, #breadcrumb li', { fontFamily: 'DIN-Regular', textShadow: '#eee 1px 1px' });
Cufon.replace('#footer .navigation a.home, #footer .telephone', { fontFamily: 'DIN-Bold', textShadow: '#eee 1px 1px' });

Cufon.replace('.ancillary, .button span, .header p, .tag-xxl, .circle, .archives li a, .categories li a, #user, #downloads th a span', { fontFamily: 'DIN-Medium' });
Cufon.replace('.tag-xl, .tag-l, ol.products li, #comments .author, #downloads .pagination', { fontFamily: 'DIN-Regular' });
Cufon.replace('.header p em, .box h2, .box h3, .feature h4, .carousel .content h3, .comments h4, #footer h2, #copyright .partners, .tag-m, .tag-s, .news .article .date, .news.article .date, .casestudy .box.contact p', { fontFamily: 'DIN-Light' });
Cufon.replace('.header p strong, .tag-xxxl, .news .article .date span, .news .article .date strong, .news.article .date span, .news.article .date strong, .casestudy .box.contact p strong, #downloads .pagination ul li', { fontFamily: 'DIN-Bold' });

var carousel;

var addthis_config = {
  ui_click: true
};

document.observe("dom:loaded", function() {
  if ($('query') != null) {
    $('query').observe('focus', function(event) {
      $('query_label').hide();
    });

    $('query').observe('blur', function(event) {
      if ($('query').getValue() == '') {
        $('query_label').show();
      }
    });
  }

  $$('.carousel').each(function(element) {
    carousel = new Carousel(element);

    element.select('a.next').each(function(link) {
      link.observe('click', function(event) {
        carousel.next();
        event.stop();
      });
    });

    element.select('a.prev').each(function(link) {
      link.observe('click', function(event) {
        carousel.prev();
        event.stop();
      });
    });

    element.observe('mouseover', function(event) {
      carousel.stop();
    });

    element.observe('mouseout', function(event) {
      carousel.start();
    });

    carousel.start();
  });

  if ($('products') != null) {
    $$('#all li a').each(function(element) {
      element.observe('click', function(event) {
        var href = element.readAttribute('href');
        var anchor = href.substring(href.indexOf('#') + 1);
        var letter = anchor.substring(anchor.indexOf('_') + 1);

        jumpToProduct(letter);
        event.stop();
      });
    });
  }

  $$('#print a').each(function(element) {
    element.observe('click', function(event) {
      var w = (window.open(window.location.href + '?print=true', 'niuprint', 'width=50,height=50'));
    });
  });

  if ($('downloads') != null) {
    $$('#downloads .expand').each(function(element) {
      element.observe('click', function(event) {
        var href = element.readAttribute('href');
        var anchor = href.substring(href.indexOf('#') + 1);

        element.toggleClassName('active');
        $(anchor).toggle();

        curvyCorners.redraw();

        event.stop();
      });
    });
  }

  curvyCorners.init();
});

var Carousel = function (element) {
  var animating = false;
  var timer;

  this.start = function() {
    timer = setTimeout(function() { carousel.next(); carousel.start(); }, 5000);
  };

  this.stop = function() {
    clearTimeout(timer);
  };

  this.next = function() {
    if (!animating) {
      animating = true;

      if (element.down('.images .next.image') != null && element.down('.images .prev.image') != null && element.down('.images .current.image') != null) {
        element.down('.images .next.image').morph({
          top: '42px',
          left: '109px',
          width: '284px',
          height: '183px',
          opacity: '1.0'
        }, {
          beforeStart: function(effect) {
            effect.element.style.zIndex = 300;
          },
          afterUpdate: function(effect) {
            effect.element.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=/furniture/carousel_frame.png,sizingMethod='scale')";
          },
          afterFinish: function(effect) {
            effect.element.addClassName('current');
            effect.element.removeClassName('next');
          }
        });

        element.down('.images .prev.image').morph({
          left: '280px'
        }, {
          beforeStart: function(effect) {
            effect.element.style.zIndex = 100;
          },
          afterUpdate: function(effect) {
            effect.element.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=/furniture/carousel_frame.png,sizingMethod='scale')";
          },
          afterFinish: function(effect) {
            effect.element.addClassName('next');
            effect.element.removeClassName('prev');
          }
        });

        element.down('.images .current.image').morph({
          top: '70px',
          left: '50px',
          width: '170px',
          height: '110px',
          opacity: '0.6'
        }, {
          beforeStart: function(effect) {
            effect.element.style.zIndex = 200;
          },
          afterUpdate: function(effect) {
            effect.element.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=/furniture/carousel_frame.png,sizingMethod='scale')";
          },
          afterFinish: function(effect) {
            effect.element.addClassName('prev');
            effect.element.removeClassName('current');

            animating = false;
          }
        });

        var current = element.down('.content div.current');
        var prev = element.down('.content div.prev');
        var next = element.down('.content div.next');

        current.addClassName('prev');
        current.removeClassName('current');
        prev.addClassName('next');
        prev.removeClassName('prev');
        next.addClassName('current');
        next.removeClassName('next');

        element.down('.content .button').writeAttribute('href', element.down('.content .current h4 a').readAttribute('href'));
      } else {
        animating = false;
      }
    }
  };

  this.prev = function() {
    if (!animating) {
      animating = true;

      if (element.down('.images .next.image') != null && element.down('.images .prev.image') != null && element.down('.images .current.image') != null) {
        element.down('.images .prev.image').morph({
          top: '42px',
          left: '109px',
          width: '284px',
          height: '183px',
          opacity: '1.0'
        }, {
          beforeStart: function(effect) {
            effect.element.style.zIndex = 300;
          },
          afterUpdate: function(effect) {
            effect.element.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=/furniture/carousel_frame.png,sizingMethod='scale')";
          },
          afterFinish: function(effect) {
            effect.element.addClassName('current');
            effect.element.removeClassName('prev');
          }
        });

        element.down('.images .next.image').morph({
          left: '50px'
        }, {
          beforeStart: function(effect) {
            effect.element.style.zIndex = 100;
          },
          afterUpdate: function(effect) {
            effect.element.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=/furniture/carousel_frame.png,sizingMethod='scale')";
          },
          afterFinish: function(effect) {
            effect.element.addClassName('prev');
            effect.element.removeClassName('next');
          }
        });

        element.down('.images .current.image').morph({
          top: '70px',
          left: '280px',
          width: '170px',
          height: '110px',
          opacity: '0.6'
        }, {
          beforeStart: function(effect) {
            effect.element.style.zIndex = 200;
          },
          afterUpdate: function(effect) {
            effect.element.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=/furniture/carousel_frame.png,sizingMethod='scale')";
          },
          afterFinish: function(effect) {
            effect.element.addClassName('next');
            effect.element.removeClassName('current');

            animating = false;
          }
        });

        var current = element.down('.content div.current');
        var prev = element.down('.content div.prev');
        var next = element.down('.content div.next');

        current.addClassName('next');
        current.removeClassName('current');
        prev.addClassName('current');
        prev.removeClassName('prev');
        next.addClassName('prev');
        next.removeClassName('next');

        element.down('.content .button').writeAttribute('href', element.down('.content .current h4 a').readAttribute('href'));
      } else {
        animating = false;
      }
    }
  };
};

var clearEnquiryErrors = function() {
  $$('#enquiry .error_list').each(function(error) {
    error.hide();
  });

  if ($('enquiry').down('div.main') != null) {
    $('enquiry').down('div.main').hide();
  }
};

var clearRegisterErrors = function() {
  $$('#register_form .error_list').each(function(error) {
    error.hide();
  });
};

var frameImages = function() {
  $$('.box .main img').each(function(element) {
    var align = element.readAttribute('align');
    var style = element.readAttribute('style');
    var width = '';

    if (align == 'center') {
      style = 'width: ' + element.getWidth() + 'px; ' + style;
      align = ' '+align;
    } else if (align != null) {
      align = ' '+align;
    } else {
      align = '';
    }

    element.writeAttribute('style', '');

    if (!(element.up(0).tagName == 'DIV' && element.up(0).hasClassName('frame'))) {
      element.wrap('div', { 'class': 'frame'+align, style: style });
    } else {
      element.up(0).writeAttribute('class', 'frame'+align);
      element.up(0).writeAttribute('style', style);
    }
  });
};


var jumpToSearch = function() {
  new Effect.ScrollTo($('query'), {
    duration: 0.5,
    offset: -40,
    afterFinish: function (effect) {
      new Effect.Shake($('query').next('button'), { distance: 3, duration: 0.9 });
    }
  });
  $('query').focus();
};


var jumpToProduct = function(letter) {
  if (letter == 'all') {
    $$('#products .products').each(function(element) {
      element.show();
    });
  } else {
    $$('#products .products').each(function(element) {
      element.hide();
    });

    $('products_'+letter).show();
  }
};
