var pageHeight 		= 0;
var curtain			= true;

var morphs			= [];
var animating		= [];

var slideshow 		= [];
var previous		= 0;

var pixelmanya = {
	init: function(){
		new SmoothScroll({ duration: 1000 }, window);
		
		pixelmanya.myLinks();
		
		if (curtain) pixelmanya.hidePortfolio();
		if ($('work') && $('work').getChildren('.exampleDuo').length > 0) pixelmanya.myWorks();
		if ($$('.imageSlideshow').length > 0) pixelmanya.initMySlideshow();
	},
	
	ready: function(){
		if (curtain) pixelmanya.showPortfolio();
	},
	
	hidePortfolio: function(){
		$('loader').setStyle('visibility', 'visible');
		
		var page 		= $('page');
		pageHeight 		= page.getCoordinates().height+30;
		
		page.setStyles({
			top: 100,
			width: 940,
			height: 0,
			overflow: 'hidden'
		}).setOpacity(0);
	},
	
	showPortfolio: function(){
		var page = $('page');
		
		(function(){
			$('loader').fade('out');
			
			pageMorph = new Fx.Morph(page, {
				duration: 2500,
				transition: Fx.Transitions.Circ.easeInOut
			}).start({
				'height': pageHeight,
				'opacity': [0,1]
			});
			
			pageMorph.complete = function(){
				pageMorph.cancel();
				pixelmanya.mySlideshow();
			}
		}).delay(1200);
	},
	
	myWorks: function(){
		var example				= $$('#work .example');
		var descriptionWrapper 	= $$('#work .description');

		function initialize(descriptionWrapper){
			descriptionWrapper.each(function(el){
				var id = el.getParent().get('id').replace('work-', '');
			
				el.setStyles({
					top: 300
				});
				
				morphs['morph-'+id] = new Fx.Morph('description-'+id, {
					duration: 350,
					transition: Fx.Transitions.Circ.easeOut,
					link: 'chain'
				});				
			});
			
			return true;
		}

		function animate(example, mode) {
			var id = 'morph-'+example.get('id').replace('work-', '');

			switch (mode) {
				case 'in':
					morphs[id].start({
						'top': 0
					});
				break;
				case 'out':
					morphs[id].cancel();
					morphs[id].start({
						'top': 300
					});
				break;
			}
		}

		if (initialize(descriptionWrapper)) {
			example.addEvents({
				'mouseenter': function(){
					animate(this, 'in');				
				},
				'mouseleave': function(){	
					animate(this, 'out');
				}
			});
		}
	},
	
	myLinks: function(){
		var links = $$('a.red, a.blue, a.lightGrey, h1 a');
		
		links.set('morph', {
			duration: 400
		}).addEvents({
			'mouseenter': function(){
				if (!this.retrieve('normal')) this.store('normal', this.get('class'));
				
				this.morph('a.over');
			},
			'mouseleave': function(){
				switch (this.retrieve('normal')) {
					case 'red':
						this.morph({
							color: '#d34328',
							border: 0
						});
					break;
					case 'blue':
						this.morph({
							color: '#3964c3',
							border: 0
						});
					break;
					case 'lightGrey':
						this.morph({
							color: '#999',
							border: 0
						});
					break;
					default:
						this.morph({
							color: '#ddd',
							border: 0
						});
					break;
				}
			}
		});
	},

	initMySlideshow: function(){
		var s = 0;
		var path = 'assets/images/work-examples/';
		
		function preload(slideshow) {
			var pImages = [];
			
			$each(slideshow, function(obj){
				for (var z = 1; z <= obj.total; z++) {
					pImages.push(path+obj.name+'-'+z+'.'+obj.sfx);
				}
			});
			
			new Asset.images(pImages, {
				onComplete: function(){
					return true;
				}
			});
		}
		
		$$('.imageSlideshow').each(function(img){
			var parent 			= img.getParent('.example');
			var work 			= parent.get('id');
			var image			= parent.getElement('img');
			var currentImage 	= image.get('src').replace(path, '').split('.');
			var total			= img.get('rel').split(':')[1];
			var number 			= currentImage[0].split('-');

			if (total > 1) {
				slideshow[s]	= {
									'work': work,
									'total': total,
									'current': number[1],
									'name': currentImage[0].split('-')[0],
									'sfx': currentImage[1]
								};
				s++;					
			}
			
		});

		preload(slideshow);
	},
	
	mySlideshow: function(){
		var path = 'assets/images/work-examples/';
		
		if (slideshow.length > 0) {
			function swap(obj, file, next, index){
				var id	  	= obj.work.replace('work', 'currentImage');
				var imgEl	= $$('#'+id+' img.currentImage');
				
				imgEl.set('morph', {
					duration: 400, 
					transition: Fx.Transitions.Quad.easeInOut
				}).morph({ 
					position: 'relative',
					margin: '300px 0 0 0',
					opacity: [1, 0.3] 
				});
				
				(function(){  
					imgEl.set('src', path + file).set('morph', {
						duration: 400, 
						transition: Fx.Transitions.Quad.easeInOut
					}).morph({
						position: 'relative',
						margin: '0 0 0 0',
						opacity: [0.3, 1] 
					});
					
					obj.current = next;
				}).delay(400);
			}
			
			var iteration = function(){
				var random 	= slideshow.getRandom();
				
				var obj 	= random;
				
				var next 	= obj.current.toInt() + 1;
				
				if (next <= slideshow.length || next >= slideshow.length) {
					if (next <= obj.total) {
						var file = (obj.name + '-' + next + '.' + obj.sfx).toString();
					} else {
						var next = 1;
						var file = (obj.name + '-' + next + '.' + obj.sfx).toString();
					}
					
					swap(obj, file, next, random);
				}

			}.periodical(3000);
		}
	}
};

window.addEvent('domready', pixelmanya.init);
window.addEvent('load', pixelmanya.ready);