/**
 * @author frukt
 */

function initMainMenu() {

	var element;

	// first level menu
	jQuery('#main-menu ul li.element').bind('mouseenter', function(){
		jQuery(this).addClass('hover');
		jQuery(this).children('ul').fadeIn(150);
	});
	
	jQuery('#main-menu ul li.element').bind('mouseleave', function(){
		jQuery(this).removeClass('hover');
		jQuery(this).children('ul').fadeOut(300);
	});
	
	// submenus
	jQuery('#main-menu ul li ul li').bind('mouseenter', function(){
		jQuery(this).data('state', 'open');
		jQuery(this).children('a').addClass('open');
		jQuery(this).children('ul').fadeIn(150);
	});
	
	jQuery('#main-menu ul li ul li').bind('mouseleave', function(){
		element = jQuery(this);
		element.data('state', 'closed');
		element.children('a').removeClass('open');
		setTimeout(function(){
			if (element.data('state') == 'closed'){
				element.children('ul').fadeOut(300);
			}
		}, 500);
	});
}

function initQuickGallery() {

	var transitionTime = 1800;
	var fadeInTime = 800;
	var fadeOutTime = 400;
	var imageSwitchTimer;
	var imageSwitchInterval = 10000;
	
	function changeTitle(imageTitle) {
		jQuery('#image-title').fadeOut(fadeOutTime, function(){
			jQuery(this).text(imageTitle);
			jQuery(this).fadeIn(fadeInTime);
		});
	}
	
	function createImage(){
		jQuery('<img src="" alt="" />').attr('src', imageList[currentImage].path).attr('alt', imageList[currentImage].title).appendTo('#image-wrap').bind('load', function(){
			jQuery(this).fadeIn(transitionTime, function(){
				// change title
				changeTitle(jQuery(this).attr('alt'));
				// remove previous images
				var imagesCount = jQuery('#image-wrap img').length;
				if (imagesCount > 1) {
					for (key = 0; key < imagesCount - 1; key++) {
						jQuery('#image-wrap img:eq('+key+')').remove();
					}
				}
			});
		});
	}
	
	function initImageRotator(){
		if (imageSwitchTimer) {
			clearInterval(imageSwitchTimer);
		}
		imageSwitchTimer = setInterval(function(){
			jQuery('#show-next').trigger('click');
		}, imageSwitchInterval);
	}

	if (imageList.length > 0) {

		var currentImage = 0;
		var lastImage = imageList.length - 1;

		// create first image
		createImage();

		jQuery('.navigation-bar').fadeIn(fadeInTime);

		// previous
		jQuery('#show-prev').bind('click', function(event){
			currentImage == 0 ? currentImage = lastImage : currentImage--;
			createImage();
			initImageRotator();
			return false;
		});

		// next
		jQuery('#show-next').bind('click', function(event){
			currentImage == lastImage ? currentImage = 0 : currentImage++;
			createImage();
			initImageRotator();
			return false;
		});
		
		// init imagerotator
		initImageRotator();

	}
}

function initMainGallery(){
	var imageHolder = '#gallery-image';
	var scroller = '#scroller';
	var scrollable = '#scroller ul';
	var buttonPrev = '#scroll-prev';
	var buttonNext = '#scroll-next';
	var scrollableOuterWidth = 0;
	var currentImage = 0;
	
	var scrollTime = 1200;
	
	function manageGallery(image) {

		// remove active class
		jQuery('a.active', scrollable).removeClass('active');
		
		// manage buttons
		if (image == 0) {
			jQuery(buttonNext).removeClass('disabled');
			jQuery(buttonPrev).addClass('disabled');
		} else if (image == lastImageId) {
			jQuery(buttonPrev).removeClass('disabled');
			jQuery(buttonNext).addClass('disabled');
		} else {
			jQuery('button.disabled', '.gallery-navbar').removeClass('disabled');
		}

		// note: image is actually an <a>
		var image = jQuery('a', scrollable).get(image);
		var imagePosition = parseInt(jQuery(image).position().left) - parseInt(jQuery(scrollable).position().left);
		if (imagePosition > maximumScroll) { scrollAmount = maximumScroll; } else { scrollAmount = imagePosition; }
		
		jQuery('img', '#gallery-image').attr('src', jQuery(image).attr('href'));
		jQuery(image).addClass('active');
		jQuery(scroller).animate({scrollLeft: scrollAmount}, scrollTime);
																	
	}

	// set outer width of scrollable
	jQuery('li', scrollable).each(function(){ scrollableOuterWidth += parseInt(jQuery(this).outerWidth()); });
	jQuery(scrollable).width(scrollableOuterWidth); 

	// calculate maximum amount of scroll (will be used later in scrollTo function
	var maximumScroll = scrollableOuterWidth - jQuery(scroller).width();
	maximumScroll < 0 ? 0 : maximumScroll;
	// find number of images in scroller
	var lastImageId = parseInt(jQuery('li', scrollable).length) - 1;

	// load first image to gallery
	manageGallery(0);

	// make scroller scrollable
	jQuery(buttonPrev).bind('click', function(event) {
		currentImage > 0 ? currentImage-- : 0;
		if (currentImage >= 0) { manageGallery(currentImage); }
		return false;
	});

	jQuery(buttonNext).bind('click', function(event) {
		currentImage >= lastImageId ? lastImageId : currentImage++;
		if (currentImage <= lastImageId) { manageGallery(currentImage); }
		return false;
	});
	
	// make images viewable
	jQuery('a', scrollable).bind('click', function(event){
		currentImage = jQuery('img', this).attr('id');
		manageGallery(currentImage);
		return false;
	});
	
}
