Element.implement({
	followMe : function(offset){
		offset = offset || 0;
		var pos = this.getCoordinates();
		this.inject($(document.body)).setStyles({
			position:'absolute',
			margin:0,
			top:pos.top,
			left:pos.left
		}).set('morph',{
			link:'cancel',
			transition:Fx.Transitions.Quint.easeOut,
			duration:3000
		});
		$(document.body).addEvent('mousemove',function(e){
			this.store('page',{top:e.page.y+offset,left:e.page.x+offset});
		}.bind(this));
		var goToMouse = function(){
			var page = this.retrieve('page');
			if(page){
				this.get('morph').start(page);
				this.store('page',false);
			}
		}
		this.store('period',goToMouse.periodical(60,this));
		return this;
	}
});

window.addEvent('domready', function(){

  // preload images
  Array.each.delay(1000, this, [
    ['/images/pages/intro/contactBottomOver.png', '/images/pages/intro/arrowVioletR.png','/images/pages/intro/ajax-loader-1.gif'],
    function(src){
      var img = new Image();
      img.src = src;
    }
  ]);

  var objContent = $('content');
  var objAnim = $('anim');
  var objBkg = $('bkg');
  var objLogo = $('logo');
  var objFooter = $('footer');
  var objContact = $('contact');
  var objContactSw = $('contactSw');

  objAnim.chains();
  objBkg.chains();
  objLogo.chains();
  objFooter.chains();
//  objContact.chains();

  var init = function(){
//    objAnim.set('tween').set('opacity', 0);
    objBkg.set('tween').set('opacity', 0);
    objLogo.set('tween').set('opacity', 0);
//    objFooter.set('tween').set('opacity', 0)
    objBkg.setStyle('visibility', 'visible');
    objLogo.setStyle('visibility', 'visible');
    objFooter.setStyle('visibility', 'visible');
  }.bind(this);

  var bkgFx1 = new Fx.Tween(objBkg, {
    duration: 3000,
    transition: Fx.Transitions.Linear,
    link: 'chain'
  });

  init();

  objLogo.tween('opacity', 0).pauseFx(1000).tween('opacity', 0.3).pauseFx(1000).tween('opacity', 0).pauseFx(4000).tween('opacity', 1);

  bkgFx1.start.delay(3000, bkgFx1, ['opacity', 1]);

//  objFooter.tween('opacity', 0).pauseFx(8000).tween('opacity', 1);
  objFooter.set('move', {
    position: 'bottomRight',
    edge: 'topLeft',
    transition: 'bounce:out',
    duration: 600,
    offset: {x:-150, y:-100},
    onComplete: function(){
      objFooter.setStyle('left', '');
      objFooter.setStyle('top', '');
      objFooter.setStyle('bottom', 10);
      objFooter.setStyle('right', 10);
    }
  });

  objFooter.move.delay(9000, objFooter);

  objBkg.followMe.delay(9000, objBkg, -210);

  // contact form
  objContact.set('move', {
    position: 'top',
    edge: 'bottom',
    transition: 'bounce:out',
    duration: 600,
    offset: {x:0, y:0}
  }).move();

  objContact.move.delay(1000, objContact, {offset:{x:0, y:25}});

  var showMsg = function(msg, autoHide){
    var obj = $('contactResult');
    if (obj) {
      if (!objContact.retrieve('isVisible', false)) {
        showContact();
      }
      obj.set('html', msg);
      obj.set('tween').set('opacity', 0);
      obj.setStyle('display', 'block');
      obj.pauseFx(1000).tween('opacity', 1).pauseFx(4500).tween('opacity', 0);
      obj.setStyle.delay(6500, obj, ['display', 'none']);
    }
    if (autoHide && objContact.retrieve('isVisible', false)) {
      hideContact.delay(5000, hideContact);
    }
  }


  var showContact = function(){
    if (!objContact.retrieve('isVisible', false)) {
      objContact.store('isVisible', true);
      objContact.addClass('contactOpen');
//    objContactSw.set('title', 'ukryj');
      objContact.move({offset:{x:0, y:215}});
    }
  };
  var hideContact = function(){
    if (objContact.retrieve('isVisible', false)) {
      objContact.store('isVisible', false);
      objContact.removeClass('contactOpen');
//    objContactSw.set('title', 'pokaż');
      objContact.move({offset:{x:0, y:25}});
    }
  };
  var switcherEvents = function(){
    objContactSw.addEvents({
      'click': function(e){
        if (objContact.retrieve('isVisible', false)) {
          hideContact();
        } else {
          showContact();
        }
      }
    });
  }
  switcherEvents();


  var actionSuccess = function(msg){
    if (msg) {
      if (!objContact.retrieve('isVisible', false)) {
        showContact();
        showMsg.delay(1000, showMsg, msg);
      } else {
        showMsg(msg, true);
      }
    }
//    switcherEvents();
  }
  var actionError = function(msg){
    if (msg) {
      showMsg(msg);
    }
    if (!objContact.retrieve('isVisible', false)) {
      showContact.delay(600, showContact);
    }
//    switcherEvents();
  }
  objContact.store('actionSuccess', actionSuccess);
  objContact.store('actionError', actionError);

  $('formContact').store('requestSuccess', function(){
    switcherEvents();
  });

  $('formContact').store('requestError', function(xhr){
    switcherEvents();
  });

  $('ctrlContactSubmit').addEvent('click', function(e){
    objContactSw.removeEvents();
  });

  $$('a, input.submit').addEvents({
    'focus': function(){
      this.blur();
    }
  });

});
