/*
###############################################
#### ALL CONTENTS OF THIS FILE � WILL SKY  ####
#### WEB: WWW.WILLSKY.DE                   ####
#### E-MAIL: WEB@WILLSKY.DE				   ####
###############################################
*/

var navItemsAr = Array();
var objMorph = Array();
var posMorph = Array();
var imgMorph = Array();
var zoom = 1;
var oldZoom = 1;

var _width = 306;
var _height = 206;
var _margin = 30;

var curWidth = 306;
var curHeight = 206;
var curMargin = 30;
	
window.addEvent('domready', function() {
	//	Navigation Mouseover
	var albumsAR = $$('div.link-container');
	albumsAR.each(function(el){
		$(el).addEvent('mouseover', function(){
			$(el).getElement('span.image-overlay').set('tween', {duration: 300});
			$(el).getElement('span.image-overlay').tween('opacity', 1);
		});
		
		$(el).addEvent('mouseout', function(){
			$(el).getElement('span.image-overlay').set('tween', {duration: 1000});
			$(el).getElement('span.image-overlay').tween('opacity', 0);
		});
	});
	//setNavigation();
	if ($('main-nav') != undefined || navItemsAr.length == 0)
		navItemsAr = $('main-nav').getElements('div.link-container');
	resizeNav(calcZoom());
});

window.addEvent('resize', function(){
	resizeNav(calcZoom());
});

function setNavigation(){
	if ($('main-nav') != undefined || navItemsAr.length == 0) {
		navItemsAr = $('main-nav').getElements('div.link-container');

		var realTop = $('header').getSize().y + Number($('header').getStyle('margin-bottom').replace('px',''));
		var top = realTop;
		var left = 10;
			
		navItemsAr.each(function(el, ind){
			el.setStyle('top', top + 'px');
			el.setStyle('left', left + 'px');
			el.setStyle('z-index', 10 + ind);
			if (top + (curHeight * 2) + curMargin < window.getSize().y - realTop){
				top += curHeight + curMargin;
			}else{
				top = realTop;
				left = left + curWidth + curMargin;
				if (left + curWidth + 10 > window.getSize().x)
					$('main-nav').setStyle('width', left + 'px');
			}
		});
	}	
}

function calcZoom(){
	var frameHeight = window.getSize().y - + $('header').getSize().y - $('footer').getSize().y - Number($('header').getStyle('margin-bottom').replace('px',''));
	var baseHeight = _height * 3 + _margin * 3;
	var ratio = frameHeight / baseHeight;
	
	if (ratio >= 1){
		zoom = 1;
	}else if(ratio > 0.5){
		zoom = ratio.toFixed(2);
	}else 
		zoom = 0.5;

	
	return zoom;
		
}

function resizeNav(ratio){
	if ($('main-nav') != undefined || navItemsAr.length == 0) {
	
		var realTop = $('header').getSize().y + Number($('header').getStyle('margin-bottom').replace('px',''));
		var top = realTop;
		var left = 10;

		if (ratio < oldZoom - (0.02 * oldZoom) || ratio > oldZoom + (0.02 * oldZoom)){
			//alert (ratio + ' - ' + oldZoom);
			navItemsAr.each(function(el, ind){
				if (objMorph[ind] != null)
					objMorph[ind].cancel();
				objMorph[ind] = new Fx.Morph(el, {
					duration: 750,
					transition: Fx.Transitions.Linear
				});
				
				curWidth = _width * ratio;
				curHeight = _height * ratio;
				curMargin = _margin * ratio;
			
				objMorph[ind].start({
					'margin-right': curMargin + 'px',
					'margin-bottom': curMargin + 'px',
					width: curWidth.toFixed(0) + 'px',
					height: curHeight.toFixed(0) + 'px'
				});
				
				
				if (imgMorph[ind] != null)
					imgMorph[ind].cancel();
				imgMorph[ind] = new Fx.Morph(el.getElement('img'), {
					duration: 750,
					transition: Fx.Transitions.Linear
				});
				
				imgMorph[ind].start({
					'height': curHeight + 'px',
					'width': curWidth + 'px'
				});
				
				
				el.getElement('span.image-overlay').setStyles({
					'top': -curHeight.toFixed(0) +'px',
					'width': curWidth.toFixed(0) - 20+ 'px',
					'height': curHeight.toFixed(0) - 20 + 'px'
				});
			});
			oldZoom = ratio;

		}	
		
		navItemsAr.each(function(el, ind){	
			if (posMorph[ind] != null)
				posMorph[ind].cancel();
			posMorph[ind] = new Fx.Morph(el, {
				duration: 750,
				transition: Fx.Transitions.Linear
			});
			
			if (posMorph[ind] != null)
				posMorph[ind].cancel();
			posMorph[ind].start({
				top: top + 'px',
				left: left + 'px'				
			});
						
			if (top + (curHeight * 2) + curMargin * 2 < window.getSize().y){
				top += curHeight + curMargin;
			}else{
				top = realTop;
				left = left + curWidth + curMargin;
			}
			el.getElement('span.image-overlay').setStyle('font-size', 50 * ratio + 'px');
		});

		Cufon.refresh('#main-nav .image-overlay');
	}
}
