Cufon.set('fontFamily', 'PFDinTextProMedium');
Cufon.replace('h1, h2, h3, h4, h4 a, h5, ul, li',{
hover: true
});






Element.implement({

	makeResizable: function(options){
		var drag = new Drag(this, $merge({modifiers: {x: 'width', y: 'height'}}, options));
		this.store('resizer', drag);
		return drag.addEvent('drag', function(){
			this.fireEvent('resize', drag);
		}.bind(this));
	}

});
$(window).addEvent('domready', function() {
  if ($('banner')) {
    new Banner();
  }
  initImageZoom();
  $$('img').each(function(image) {
    image.removeAttribute('alt');
  });
/*  var footerPosition = $('footer').getPosition().y +
                       $('footer').getSize().y;
  if (footerPosition < window.getSize().y) {
    $('footer').setStyle('padding-top', window.getSize().y - footerPosition - 1);
  }*/
});


var Banner = new Class({
  
  initialize: function() {
    var el = $('banner');
    this.el = el;
    el.store('object', this);
    var holder = el.getElement('.holder');
    new Drag(holder, {
      limit: {
        y: [0, 0]
      },
      onComplete: function() {
        this.dragged = true;
        this.shiftIfNecessary();
      }.bind(this)
    });
    var first = null;
    var width = 0;
    var images = $('banner').getElements('img');
    if (images.length == 0) {
      return;
    }
    images.each(function(img, index) {
      width += img.getSize().x + parseInt(img.getStyle('margin-right'));
      var clone = img.getParent('a').clone();
      clone.inject(holder);
    });
    images.each(function(img, index) {
      var clone = img.getParent('a').clone();
      clone.inject(holder);
      if (index == 0) {
        first = clone.getElement('img');
      }
    });
    images.each(function(img, index) {
      var clone = img.getParent('a').clone();
      clone.inject(holder);
    });
    images.each(function(img, index) {
      var clone = img.getParent('a').clone();
      clone.inject(holder);
    });
    
    el.getElements('a').each(function(link) {
      link.addEvent('click', function(e) {
        if (this.dragged) {
          new Event(e).stop();
        }
        this.dragged = false;
      }.bind(this));
    }.bind(this));
    
    this.width = width;
    this.origin = -first.getPosition(el).x + $('header').getPosition().x;
    window.firstImage = first;
    var start = this.origin + el.getSize().x / 2;
    holder.setStyle('left', start);
    holder.setStyle('opacity', 0);
    el.addClass('ready');
    this.morph = new Fx.Morph(holder, {
      duration: 'long',
      transition: Fx.Transitions.Cubic.easeOut,
      onComplete: this.shiftIfNecessary.bind(this)
    });
    this.morph.start({
      left: this.origin,
      opacity: 1
    }).chain(function() {
      this.morph.setOptions({
        transition: Fx.Transitions.Cubic.easeInOut
      });
    }.bind(this));
    
    this.startInterval();
    this.el.addEvent('mouseenter', function() {
      this.hovered = true;
      clearInterval(this.interval);
      this.interval = null;
    }.bind(this));
    this.el.addEvent('mouseleave', function() {
      this.hovered = false;
      if (!this.interval) {
        this.startInterval();
      }
      this.targetScrollSpeed = 0;
    }.bind(this));
    
    this.el.addEvent('mousedown', function() {
      this.mousedown = true;
    }.bind(this));
    this.el.addEvent('mouseup', function() {
      this.mousedown = false;
    }.bind(this));
    this.el.addEvent('mousemove', this.hoverScroll.bind(this));
  },
  
  shiftIfNecessary: function() {
    var holder = this.el.getElement('.holder');
    var x = (holder.getPosition(this.el).x - this.origin);
    if (x > this.el.getSize().x) {
      holder.setStyle('left', holder.getPosition(this.el).x - this.width);
    } else if (x < -this.el.getSize().x) {
      holder.setStyle('left', holder.getPosition(this.el).x + this.width);
    }
  },
  
  lastVisibleImage: function() {
    var images = this.el.getElements('img');
    for (var i = 0; i < images.length; i++) {
      if (images[i].getPosition().x > this.el.getSize().x) {
        return images[i - 1];
      }
    }
    return images[images.length - 1];
  },
  
  advancePosition: function() {
    var last = this.lastVisibleImage();
    var holder = this.el.getElement('.holder');
    this.morph.start({
      left: parseInt(holder.getStyle('left')) - last.getPosition(this.el).x + $('header').getPosition().x
    });
  },
  
  startInterval: function() {
    this.interval = setInterval(this.advancePosition.bind(this), 5000);
  },
  
  hoverScroll: function(e) {
    if (!this.hovered || this.mousedown) {
      if (this.scrollInterval) {
        clearInterval(this.scrollInterval);
        this.scrollInterval = null;
      }
      this.targetScrollSpeed = 0;
      return;
    }
    var width = 200;
    var minSpeed = 0;
    var maxSpeed = 10;
    e = new Event(e);
    if (e.page.x < width || e.page.x > this.el.getSize().x - width) {
      if (!this.scrollInterval) {
        this.scrollInterval = setInterval(this.advanceScroll.bind(this), 20);
        this.scrollSpeed = 0;
      }
      if (e.page.x < width) {
        var pos = width - e.page.x;
        var direction = 1;
      } else {
        var pos = e.page.x - (this.el.getSize().x - width);
        var direction = -1;
      }
      this.targetScrollSpeed = direction * (minSpeed + (maxSpeed - minSpeed) * pos / width);
    } else if (this.scrollInterval) {
      clearInterval(this.scrollInterval);
      this.scrollInterval = null;
    }
  },
  
  advanceScroll: function() {
    var holder = this.el.getElement('.holder');
    var x = parseInt(holder.getStyle('left'));
    if (!this.scrollSpeed) {
      this.scrollSpeed = 0;
    }
    var diff = this.targetScrollSpeed - this.scrollSpeed;
    if (Math.abs(diff) < 1) {
      this.scrollSpeed = this.targetScrollSpeed;
    } else {
      this.scrollSpeed = this.scrollSpeed + (0.1 * diff);
    }
    holder.setStyle('left', x + this.scrollSpeed);
    
    if (!this.shiftCountdown) {
      this.shiftIfNecessary();
      this.shiftCountdown = 100;
    } else {
      this.shiftCountdown--;
    }
  }
  
});

function iePngFix(el) {
  var dim = el.getSize();
  var replacement = new Element('span', {
    id: 'pngfix',
    'class':(el.className)?el.className:'',
    title:(el.title)?el.title:(el.alt)?el.alt:'',
    styles: {
      display: 'block',
      width: dim.x,
      height: dim.y,
      filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + el.src + "',sizingMethod='scale');"
    },
    src: el.src
  });
  replacement.inject(el, 'after');
  el.destroy();
}
