dojo.require('dojo.fx');
dojo.require('dojo.fx.easing');
dojo.require('dojo.window');

var animate = function() {
	var menuWipeIn = dojo.byId('MenuWipeIn');
	var menu = dojo.byId('Menu');
	var MenuWipeInCoords = dojo.position(menuWipeIn);
	var menuCoords = dojo.position(menu);
	dojo.style(menu, {
		'left': menuCoords.x+'px',
		'top': 	(MenuWipeInCoords.y-MenuWipeInCoords.h)+'px',
		'position': 'absolute'
	});
	
	var imageWipeIn = dojo.byId('ImageWipeIn');
	var image = dojo.byId('Image');
	var leftBorder = (dojo.window.getBox().w-1000)/2;
	dojo.style(imageWipeIn, 'paddingLeft', (leftBorder+15)+'px');
	var imageWipeInCoords = dojo.position(imageWipeIn);
	var imageCoords = dojo.position(image);
	var figure = dojo.byId('Figure');
	
	dojo.fx.combine([
		dojo.fx.slideTo({
			duration: 2000,
			node: image,
			left: {start: -imageWipeInCoords.w, end: 0},
			top: {start: imageWipeInCoords.y, end : imageWipeInCoords.y}
		}),
		dojo.fx.slideTo({
			duration: 2000,
			node: figure,
			left: {start: 40, end: imageWipeInCoords.w+40},
			top: {start: imageWipeInCoords.h+210, end: imageWipeInCoords.h+210},
			onEnd: function() {
				jump(figure, 128, 153, 1000, function() {
					//dojo.removeClass(figure, 'right');
					//dojo.addClass(figure, 'left');
					jump(figure, 127, 154, 1000, function() {
						//dojo.removeClass(figure, 'left');
						//dojo.addClass(figure, 'right');
						jump(figure, 127, 154, 1000, function() {
							var figureCoords = dojo.position(figure);
							dojo.fx.combine([
								dojo.fx.slideTo({
									duration: 1000,
									node: menu,
									top: {start: MenuWipeInCoords.y-MenuWipeInCoords.h, end: MenuWipeInCoords.y},
									left: {start: MenuWipeInCoords.x, end: MenuWipeInCoords.x}
								}),
								dojo.fx.slideTo({
									duration: 1000,
									node: figure,
									top: {start: figureCoords.y, end: figureCoords.y+MenuWipeInCoords.h},
									left: {start: figureCoords.x, end: figureCoords.x}
								})
							]).play();
						});
					});
				});
			}
		})
	]).play();
};

var jump = function(pNode, pX, pY, pDuration, pCallback) {
	//easing function
	var easingJump = function (n) {
		n = n - 1;
		var s = 1.70158;
		return -Math.sin(n * (Math.PI / 2)) * ((s + 1) * n + s) + 1;
	}

	var coords = dojo.position(pNode);
	 dojo.fx.combine([
		 dojo.animateProperty({
			duration: pDuration,
			node: pNode,
			easing: dojo.fx.easing.linear,
			properties: {
				left: {start: coords.x, end: coords.x+pX, unit: 'px'}
			}
		}),
		dojo.animateProperty({
			duration: pDuration,
			node: pNode,
			easing: easingJump,
			properties: {
				top: {start: coords.y, end: coords.y-pY, unit: 'px'}
			},
			onEnd: dojo.isFunction(pCallback)? pCallback : function() {}
		})
	]).play();
};

dojo.ready(function() {
	animate();
});
