var slider;
var scroller;
var curHeight = 0;
var mainHeight = 0;
var mainWidth = 0;
var initFx = false;
var loadedImages = [];
var lastActive;
var homeLinkTween;
var menuTween;
var init = false;
var menuBusy = false;
var flashSliderDone = false;
var flashSliderBackDone = false;
var arrowFx1, arrowFx2, arrowFx3, arrowFx4, arrowFx5, arrowFx6;

window.addEvent('domready', function(){
	
	mainHeight = $('main').getStyle('height').toInt();
	mainWidth = $('main').getStyle('width').toInt();
	
	if(Browser.Engine.gecko){
		ffBugsFix();
	}
	
	initMenu();
	
	
	if ($defined($('mainScroll'))) {
		initScroll();
	}
		
	if($defined($('introBox')) && !Browser.Engine.trident4){
		introShow();
	}
	
	if($('homeBox').hasClass('fixedMenu')){
		$('homeBox').setStyles({'display':'block','opacity':0});
		$('homeBox').tween('opacity',[0,1]);
	}
	
	if($defined($('mainLanguageBar'))){
		initLanguageBar();
	}
	
	
}); 
	


function ffBugsFix(){
	if($defined($('maxNavPage'))){
		$('maxNavPage').setStyle('padding-top',1);
	}
}




function initMenu(){
	if ($('homeBox').hasClass('fixedMenu')&&!$defined($('introBox'))) {
		$('homeBox').setStyle('display', 'block');
		$('languageMenu').setStyle('display', 'block');
	}
	else {
		$('languageMenu').setStyle('opacity', 0);
		$('languageMenu').setStyle('visibility', 'visible');
		$('homeBox').setStyle('opacity', 0);
	}
	initHomeBox();
	homeLinkMorph = new Fx.Morph($('homeLink'),{duration: 500});
	menuMorph = new Fx.Morph($('homeBox'));
	languageTween = new Fx.Tween($('languageMenu'));

	$('homeLink').addEvent('mouseenter',function(e){
		homeLinkMorph.start({'top': 16,'opacity':0.8});
		if (!$('homeBox').hasClass('fixedMenu')) {
			if (!menuBusy && $('homeBox').getStyle('display')=='none') {
				menuBusy = true;
				//languageTween.start('opacity',[0,1]);
				$('homeBox').setStyle('display', 'block');
				menuMorph.start({
					'opacity': [0, 0.8],
					'height': [0, 510]
				}).chain(function(){
					menuBusy = false;
				});
			}
		}
	});
	$('homeLink').addEvent('mouseleave',function(e){
		homeLinkMorph.cancel();
		homeLinkMorph.start({'top': 42,'opacity':1});
	});
	

	if (!$('homeBox').hasClass('fixedMenu')) {
		$('homeBox').addEvent('mouseleave', function(e){
			if (!menuBusy && $('homeBox').getStyle('display')=='block') {
				menuBusy = true;
				//languageTween.start('opacity',[1,0]);
				menuMorph.cancel();
				menuMorph.start({
					'opacity': [0.8, 0],
					'height': [510, 0]
				}).chain(function(){
					$('homeBox').setStyle('display', 'none');
					menuBusy = false;
				});
			}
		});
	}
}




function initHomeBox(){

	$$('.homeLink').each(function(item){
		item.setStyle('opacity', 1);
		if(!Browser.Engine.trident4){
			var menuMorph = new Fx.Morph(item, {
				duration: 'short'
			});
			item.addEvent('mouseenter', function(){
				menuMorph.cancel();
				menuMorph.start({'opacity': 0.5});
			});
			item.addEvent('mouseleave', function(){
				menuMorph.cancel();
				menuMorph.start({'opacity': 1});
			});
		}
	});
	
}



function initLanguageBar(){
	$$('.mainLanguageItem').each(function(item){
		var langFx = new Fx.Morph(item);
		item.setStyle('opacity',1);
		item.addEvent('mouseenter',function(){
			langFx.cancel();
			langFx.start({'opacity': 0.5, 'margin-top': -10});
		});
		item.addEvent('mouseleave',function(){
			langFx.cancel();
			langFx.start({'opacity': 1, 'margin-top': 0});
		});
	});
	
}



function updateScrollSlider(){
	curHeight = $('mainScroll').getStyle('height').toInt();
	var step = ($('mainScroll').getStyle('top').toInt()*1000/(curHeight-mainHeight))*-1;
	updateScroll(scroller.step);
	
}

function updateScroll(step){	
	curHeight = $('mainScroll').getStyle('height').toInt();
	var newTop = (step*(curHeight-mainHeight)/1000)*-1;
	newTop = (curHeight<=mainHeight) ? 0 : newTop;
	$('mainScroll').setStyle('top', newTop);

}


function updateScrollerPos(){
	if ($defined(slider)) {
		if (slider.step==510||slider.step==252||slider.step==167||slider.step==124||slider.step==99) {
			var top = $('mainScroll').getStyle('top').toInt() * -1;
			var h = slider.step+5;
			var newTop = -1;
			if (top % h < slider.step/4 || top % h > slider.step-(slider.step/4)) {
				newTop = (Math.round(top / h) * h);
				curHeight = $('mainScroll').getStyle('height').toInt();
				scroller.set(newTop * 1000 / (curHeight - mainHeight));
				$('mainScroll').setStyle('top',newTop*-1);
			}
			if(slider.step==510 && newTop!=-1){
				var lImg = loadedImages[newTop/515];
				selectItem(lImg.getParent());
			}
		}
	}
}




function initScroll(){
	new MultiBox('mb');
	/*	
	$$('.galleryImg').each(function(item){
		item.setStyle('opacity', 0);
		item.addEvent('click', function(e){
			new Event(e).stop();
			selectItem(item);
		});
		
		item.addEvent('dblclick',function(e){
			selectItem(item);
			var strId = item.getProperty("id");
			strId = strId.replace(/thumb/,"");
			
			if(slider.step==510){
				slider.set(0);
				scroller.set(0);
			} else {
				zoomIn(strId);
			}
			
			if(flashSliderDone==false){
				flashSliderDone = true;
				if(!Browser.Engine.trident4){
					startArrowsBack();
				}
			}
		});
	});
	
	*/
	
	$$('.galleryImg').each(function(item){
		item.setStyle('opacity', 0);
		item.addEvent('mouseenter', function(e){
			new Event(e).stop();
			selectItem(item);
		});
		
		item.addEvent('click',function(e){
			selectItem(item);
			var strId = item.getProperty("id");
			strId = strId.replace(/thumb/,"");
			
			if(slider.step==510){
				slider.set(0);
				scroller.set(0);
				flashSliderBackDone = true;
			} else {
				zoomIn(strId);
			}
			
			if(flashSliderDone==false){
				flashSliderDone = true;
				if(!Browser.Engine.trident4){
					startArrowsBack();
				}
			}
		});
	});
	
	
	arrowFx1 = new Fx.Tween('arrow1');
	arrowFx2 = new Fx.Tween('arrow2');
	arrowFx3 = new Fx.Tween('arrow3');
	arrowFx4 = new Fx.Tween('arrow4');
	arrowFx5 = new Fx.Tween('arrow5');
	arrowFx6 = new Fx.Tween('arrow6');
	
	
	loadImages();
	
	
	
	
	
	
	scroller = new Slider($('scrollerBox'), $('scroller'), {
		steps: 1000,
		wheel: true,
		mode: 'vertical',
		onComplete: function(step){
			updateScrollerPos();
		},
		onChange: function(step){
			updateScroll(step);
		}
	}).set(0);
	
	
	
	slider = new Slider($('sliderBox'), $('slider'), {
		steps: mainHeight,
		range: [99],
		onComplete: function(step){
			if (!initFx) {
				var newStep = (510 - step < 180) ? 510 : step;
				newStep = (252 - step < 52 && 252 - step > -78) ? 252 : newStep;
				newStep = (167 - step < 29 && 167 - step >= -33) ? 167 : newStep;
				newStep = (124 - step < 14 && 124 - step >= -14) ? 124 : newStep;
				newStep = (step - 99 <= 11) ? 99 : newStep;
				this.set(newStep);
			}
			
		},
		onChange: function(step){
			$$('.galleryImg').setStyles({
				'width': step * 1.8,
				'height': step
			});
			if (!initFx) {
				updateScrollSlider();
			}
		}
	}).set(510);
	
	$('sliderKnob').addEvent('mouseenter',function(e){
		if(flashSliderDone == false || flashSliderBackDone == false) {
			new Request.HTML({url: 'pages/firstUse.php'}).send();
		}
		flashSliderDone = true;
		flashSliderBackDone = true;
	});
	
	
		
}


function selectItem(item){
	var img = item.getElement('.visibleImg');
	if ((lastActive != img && initFx==false) || init==false) {
		if(init==true){
			if (!Browser.Engine.trident4) {
				$(lastActive).morph({
					'border-color': '#fff',
					'border-width': 0,
					'margin-top': 0,
					'margin-left': 0
				});
			}
		}
		init = true;
		if(!Browser.Engine.trident4){
			img.morph({
				'border-color': '#CE30A0',
				'border-width': 3,
				'margin-top': -3,
				'margin-left': -3
			});
		}
		$('descriptionText').set('text', item.getElement('.hiddenImg').getProperty('alt'));
		
		$('linkUrl').setProperty('href', item.getElement('.hiddenLink').getProperty('href'));
		
		if(!Browser.Engine.trident){
			$('linkUrl').set('text', item.getElement('.hiddenLink').get('text'));
		} else {
			$('linkUrl').innerText = item.getElement('.hiddenLink').innerText;
		}
		
		if (item.getElement('.extraText').getElement('.extraP').get('html')=="") {
			$('infoLink').setStyle('visibility', 'hidden');
		}
		else {
			$('infoLink').setProperty('href', '#'+item.getElement('.extraText').getProperty('id'));
			$('infoLink').setProperty('title', $('descriptionText').get('text'));
			$('infoLink').setStyle('visibility', 'visible');
		}
		lastActive = img;
	}
}


function moveSlider(){
	initFx = true;
	
	var setSlider = function(){
		slider.set(this);
		if (this == 99) {
			initFx = false;
			if (!Browser.Engine.trident4) {
				startArrows();
			}
		}
	};
	
	if(Browser.Engine.trident4){
		setSlider.delay(0,99);
	} else {
		for (var i = 2500; i >= 500; i -= 50) {
			setSlider.delay(3000 - i, (i / 5) - 1);
		}
	}
}

function zoomIn(selected){
	slider.set(510);
	
	curHeight = $('mainScroll').getStyle('height').toInt();
	var calcTop = (selected-1)*-515;
	var step = (calcTop*1000/(curHeight-mainHeight))*-1;
	scroller.set(step);
	
	
}


function loadImages(){
	var imgArray = new Array();
	var i=0;
	$$('.galleryImg img').each(function(item){
		imgArray[i]=item.getProperty("src");
		i++;
	});
	
	var myImages = new Asset.images(imgArray, {
		onProgress: function(cImg,iImg) {
			this.addClass('visibleImg');
			loadedImages[iImg] = this;
			var thumb = $('thumb'+(iImg+1));
			this.inject(thumb);
			thumb.fade('in');
			if(iImg==0){
				$('loader').setStyle('display','none');
				moveSlider();
				lastActive = loadedImages[0];
			}
		},
		onComplete: function(){
		}
		
	});
	
}





function hideExtraElements(){
	if ($defined($('sliderKnob'))) {$('sliderKnob').setStyle('opacity', 0);}
	if($defined($('scrollerKnob'))){$('scrollerKnob').setStyle('opacity',0);}
	if ($defined($('languageMenu'))) {$('languageMenu').setStyle('opacity', 0);}
	if ($defined($('paginationBox'))) {$('paginationBox').setStyle('opacity', 0);}
	if($('homeBox').hasClass('fixedMenu')){$('homeBox').setStyle('opacity',0);}
	$('homeLink').setStyle('opacity',0);
	$('homeBox').setStyle('opacity',0);
}


function showExtraElements(){
	if($defined($('sliderKnob'))){$('sliderKnob').tween('opacity',1);}
	if($defined($('scrollerKnob'))){$('scrollerKnob').tween('opacity',1);}
	if($defined($('languageMenu'))){$('languageMenu').tween('opacity', 1);}
	if ($defined($('paginationBox'))) {$('paginationBox').tween('opacity', 1);}
	if($('homeBox').hasClass('fixedMenu')){$('homeBox').setStyle('display', 'block');$('homeBox').tween('opacity',1);}
	$('homeLink').tween('opacity',1);
}



function introShow(){
	if(Browser.Engine.trident){
		$('introBoxLeft').setStyle('right','49.9%');
		$('introRightBkg').setStyle('width','49.9%');
	}
	
	
	var introTween = new Fx.Tween($('introBox'),{duration:3000});
	introTween.start('height',552).chain(function(){
		var leftTween = new Fx.Tween($('introBoxLeft'),{unit:'%',duration:3500});
		var rightTween = new Fx.Tween($('introBoxRight'),{unit:'%',duration:3500});
		var leftBkgMorph = new Fx.Morph($('introLeftBkg'),{unit:'%',duration:3500});
		var rightBkgMorph = new Fx.Morph($('introRightBkg'),{unit:'%',duration:3500});
		var delayTween = function (){	
										leftTween.start('right',50,100);
										leftBkgMorph.start({'right':[50,100],'width':[50,0]});
										rightTween.start('left',50,100);
										rightBkgMorph.start({'left':[50,100],'width':[50, 0]}).chain(function(){
											new Fx.Tween('introBkg',{duration:4000}).start('opacity',1,0);
											//var so = new SWFObject('flash/menu.swf','menuFlash','918','510','8');
											//so.write('mainLanguageBar');
										});
									};
		delayTween.delay(2000);
		
	});
}






function flashSlider(){
	var sliderTween = new Fx.Tween('sliderKnob');
	sliderTween.start('opacity',0).chain(
		function(){sliderTween.start('opacity',1).chain(
			function(){sliderTween.start('opacity',0).chain(
				function(){sliderTween.start('opacity',1);
				/*.chain(
					function(){sliderTween.start('opacity',0).chain(
						function(){sliderTween.start('opacity',1)});
				})*/
			})
		})
	});
}



function startArrows(){
	if($defined($('arrow1'))){
		$('arrow1').setStyles({'opacity':0,'visibility':'visible'});
		$('arrow2').setStyles({'opacity':0,'visibility':'visible'});
		$('arrow3').setStyles({'opacity':0,'visibility':'visible'});
		if(flashSliderDone==false){
			arrowFx1.start('opacity',1).chain(function(){
				arrowFx1.start('opacity',0);
				if(flashSliderBackDone==false){
					arrowFx2.start('opacity',1).chain(function(){
						arrowFx2.start('opacity',0);
						if(flashSliderBackDone==false){
							arrowFx3.start('opacity',1).chain(function(){
								arrowFx3.start('opacity',0);
								startArrows();
							});
						}
					});
				}
			});
		}
	}
}
function startArrowsBack(){
	if($defined($('arrow1'))){
		$('arrow4').setStyles({'opacity':0,'visibility':'visible'});
		$('arrow5').setStyles({'opacity':0,'visibility':'visible'});
		$('arrow6').setStyles({'opacity':0,'visibility':'visible'});
		if(flashSliderBackDone==false){
			arrowFx4.start('opacity',1).chain(function(){
				arrowFx4.start('opacity',0);
				if(flashSliderBackDone==false){
					arrowFx5.start('opacity',1).chain(function(){
						arrowFx5.start('opacity',0);
						if(flashSliderBackDone==false){
							arrowFx6.start('opacity',1).chain(function(){
								arrowFx6.start('opacity',0);
								startArrowsBack();
							});
						}
					});
				}
			});
		}
	}
}


//MOUSE WHEEL CONTROL


function handleMouse(delta) {
        scroller.set(scroller.step-(delta*(610-slider.step)/5))
}


function wheel(event){
        var delta = 0;
        if (!event) 
                event = window.event;
        if (event.wheelDelta) { 
                delta = event.wheelDelta/40;
                if (window.opera)
                        delta = -delta;
        } else if (event.detail) { 
                delta = -event.detail;
        }
         
        if (delta)
                handleMouse(delta);
         
        if (event.preventDefault)
                event.preventDefault();
	event.returnValue = false;
}

if (window.addEventListener)
        window.addEventListener('DOMMouseScroll', wheel, false);
window.onmousewheel = document.onmousewheel = wheel;
