

var myrules = {
	'#previous-button' : function(img){
		img.onclick = function(){
			this.src='/images/previous-press.gif';		
			previousItem();
		};
		img.onmouseout = function(){
			this.src='/images/previous.gif';
		};
		img.onmouseover = function(){
			this.src='/images/previous-hover.gif';
		};
	},
	'#next-button' : function(img){
		img.onclick = function(){
			this.src='/images/next-press.gif';		
			nextItem();
		};
		img.onmouseout = function(){
			this.src='/images/next.gif';
		};
		img.onmouseover = function(){
			this.src='/images/next-hover.gif';
		};
	}
};

Behaviour.register(myrules);

function hideElement(effect) {
  Element.hide(effect.element);
}

function nextItem() {
  items = document.getElementsByClassName("rotating-item");
  if (items.length<2) return;
  nextElementIndex = 0;
  visibleElement = items.find(function(element, index) {
                                     nextElementIndex = index+1;
                                     return Element.visible(element);
                                  });
  if(nextElementIndex >= items.length) nextElementIndex = 0;
  
  nextElement = items[nextElementIndex];
  if (nextElementIndex == 0) {
	  visibleElement.parentNode.removeChild(nextElement);
	  visibleElement.parentNode.appendChild(nextElement);
  }
  Element.show(nextElement);  
  new Effect.BlindLeft(visibleElement);
}

function previousItem() {
  items = document.getElementsByClassName("rotating-item");
  if (items.length<2) return;
  nextElementIndex = 0;
  visibleElement = items.find(function(element, index) {
                                     nextElementIndex = index-1;
                                     return Element.visible(element);
                                  });
  if(nextElementIndex < 0) nextElementIndex = items.length-1;
  
  nextElement = items[nextElementIndex];
  
  visibleElement.parentNode.removeChild(nextElement);
  visibleElement.parentNode.insertBefore(nextElement, visibleElement);
  new Effect.SlideRight(nextElement, visibleElement);
}

Effect.BlindLeft = function(element) {
  element = $(element);
  element.makeClipping();
  return new Effect.Scale(element, 0,
    Object.extend({ scaleContent: false, 
      scaleY: false, 
      restoreAfterFinish: true,
      afterFinishInternal: function(effect) {
        effect.element.hide();
        effect.element.undoClipping();
      } 
    }, arguments[1] || {})
  );
}

Effect.SlideRight = function(element, elementToHide) {
  var elementToHide = elementToHide;
  element = $(element);
  element.cleanWhitespace();
  // SlideDown need to have the content of the element wrapped in a container element with fixed height!
  var oldInnerRight = $(element.firstChild).getStyle('right');
  var elementDimensions = element.getDimensions();
  return new Effect.Scale(element, 100, Object.extend({ 
    scaleContent: false, 
    scaleY: false, 
    scaleFrom: window.opera ? 0 : 1,
    scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},
    restoreAfterFinish: true,
    afterSetup: function(effect) {
      effect.element.makePositioned();
      effect.element.firstChild.makePositioned();
      if(window.opera) effect.element.setStyle({left: ''});
      effect.element.makeClipping();
      effect.element.setStyle({width: '0px'});
      effect.element.show(); },
    afterUpdateInternal: function(effect) {
      effect.element.firstChild.setStyle({right:
        (effect.dims[0] - effect.element.clientWidth) + 'px' }); 
    },
    afterFinishInternal: function(effect) {
      Element.hide(elementToHide);
      effect.element.undoClipping(); 
      // IE will crash if child is undoPositioned first
      if(/MSIE/.test(navigator.userAgent) && !window.opera){
        effect.element.undoPositioned();
        effect.element.firstChild.undoPositioned();
      }else{
        effect.element.firstChild.undoPositioned();
        effect.element.undoPositioned();
      }
      effect.element.firstChild.setStyle({right: oldInnerRight}); }
    }, arguments[1] || {})
  );
}
