var _lightbox = '#000000';
var _section = '';
var _currentImage = 0;
var _nrOfImages = 0;
var _opened = false;
var _imageloader = null;

function lightBoxWhite() {
  if(_lightbox != '#ffffff') {
    new Effect.Highlight('body',{
      duration: 0.8,
      restorecolor:'#ffffff',startcolor:_lightbox,endcolor:'#ffffff' 
    });
    _lightbox = '#ffffff';
  }
}

function lightBoxBlack() {
  if(_lightbox != '#000000') {
    new Effect.Highlight('body',{
      duration: 0.8,
      restorecolor:'#000000',startcolor:_lightbox,endcolor:'#000000'
    });
    _lightbox = '#000000';
  }
}

// Returns array with page width, height and window width, height
// Core code from - quirksmode.org
// Edit for Firefox by pHaez
Position.getPageSize = function() {
  var xScroll, yScroll;

  if (window.innerHeight && window.scrollMaxY) {  
    xScroll = document.body.scrollWidth;
    yScroll = window.innerHeight + window.scrollMaxY;
  } else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
    xScroll = document.body.scrollWidth;
    yScroll = document.body.scrollHeight;
  } else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
    xScroll = document.body.offsetWidth;
    yScroll = document.body.offsetHeight;
  }

  var windowWidth, windowHeight;
  if (self.innerHeight) { // all except Explorer
    windowWidth = self.innerWidth;
    windowHeight = self.innerHeight;
  } else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
    windowWidth = document.documentElement.clientWidth;
    windowHeight = document.documentElement.clientHeight;
  } else if (document.body) { // other Explorers
    windowWidth = document.body.clientWidth;
    windowHeight = document.body.clientHeight;
  } 

  // for small pages with total height less then height of the viewport
  pageHeight = Math.max(windowHeight, yScroll);

  // for small pages with total width less then width of the viewport
  pageWidth = Math.max(windowWidth, xScroll);

  return { page: { width: pageWidth, height: pageHeight }, window: { width: windowWidth, height: windowHeight } };
}

function updatePanelPosition() {
  var p = Position.getPageSize();
  $('panel').style.marginTop = (p.page.height - 585)/2 + 'px';
}

var t=0, d=-1, introAnimation;

function startIntroAnimation() {
  introAnimation = setInterval(function(){
    t += 271*d; if(t==0 || t==-(271*2)) d = -d;
    $('news').morph({left:t+'px'},{duration:0.7});
  },2800);
}

function stopIntroAnimation() {
  if(introAnimation) clearInterval(introAnimation);
  introAnimation = null;
}

function updateLightBox() {
  if(!_opened) return;
  var p = Position.getPageSize();
  if(p.window.width*p.window.height>850000) {
    lightBoxBlack()
  } else {
    lightBoxWhite()
  }
}

function openUp() {
  if(_opened) return;
  stopIntroAnimation();
  new Effect.Fade('intro-contents',{duration:0.7});
  new Effect.Scale('panel',303.7, { 
    duration:1.2, queue:'end', scaleContent: false, scaleX: true, scaleY: false, 
    scaleMode: {originalHeight: 585, originalWidth: 323},
    afterUpdate:function(effect){
      Element.setStyle('intro', {
        paddingLeft: ((effect.position)*23 + 23) + 'px',
        paddingRight: ((effect.position)*23 + 23) + 'px'
      });
    },
    afterFinish:function() { 
      updateLightBox();
      Element.remove('intro-contents');
      new Effect.Appear('main',{queue:'end'});
    }
  });
  _opened = true;
}

function openPortfolio(section) {
  if(!_opened) openUp();
  _section = section;
  var image = arguments[1] || 0;
  var url = 'portfolio.php?image='+image+'&section='+section;
  ['first', 'portrait','story','lifestyle','reportage','still','free','publikationen','biografie','referenzen','kontakt'].each(function(e){
    Element.removeClassName(e,'active');
  });
  Element.addClassName(section,'active');
  new Ajax.Request(url);
}

function openPage(page) {
  new Ajax.Request(page+'.php');
}

function prevImage() {
  if(Ajax.activeRequestCount>0 || _imageloader) return;
  openPortfolio(_section, _currentImage == 0 ? _nrOfImages-1 : _currentImage-1);
}

function nextImage() {
  if(Ajax.activeRequestCount>0 || _imageloader) return;
  openPortfolio(_section, _currentImage == (_nrOfImages-1) ? 0 : _currentImage+1);
}

var _show = false;

function reveal() {
  if(_show) return;
  new Effect.Scale('s1',0.1, { 
    scaleContent: false,
    scaleMode: {originalWidth:888, originalHeight:453},
    scaleX:false, scaleY:true, scaleFrom:100.0, duration:1,
    afterUpdate:function(effect){
      Element.setOpacity('s1',1-effect.position)
    },
    afterFinish:function(){ _show = true }
  });
}

function hide() {
 if(!_show) return;
  new Effect.Scale('s1',100, { 
    scaleContent: false,
    scaleMode: {originalWidth:888, originalHeight:453},
    scaleX:false, scaleY:true, scaleFrom:0.1, duration:1,
    afterUpdate:function(effect){
      Element.setOpacity('s1',effect.position)
    },
    afterFinish:function(){ _show = false }
  });
}

Effect.ScrollBy = Class.create();
Object.extend(Object.extend(Effect.ScrollBy.prototype, Effect.Base.prototype), {
  initialize: function(element, delta) {
    this.element = $(element);
    this.delta = delta;
    this.start(arguments[2] || {});
  },
  setup: function() {
    this.scrollStart = this.element.scrollTop;
  },
  update: function(position) {
    this.element.scrollTop = this.scrollStart+(position*this.delta);
  }
});

