/*
	jQuery Fancy Navigation plugin
	(for Zicht website)
	2008, Paul van Dam
*/

(function($){
$.fn.fancynav = function (options) {
	
	var opt = {
		leftOffset: 30,
		topOffset: 20,
		prevButtonId: 'fancynav_prev',
		nextButtonId: 'fancynav_next',
		animSpeed: 250
	};

	if (options) jQuery.extend(opt, options);

	return this.each (function () {

		var self = this;
		var centerElement = $('a.active',self);
		
		// Show relevant links and position them
		$('a',self).hide();
		centerElement
			.css({
				left: (opt.leftOffset*2)+'px',
				top: (opt.topOffset*2)+'px'
			}).show()
			.prev().css({
				left: opt.leftOffset+'px',
				top: opt.topOffset+'px'
			}).show()
			.end().next().css({
				left: (opt.leftOffset*3)+'px',
				top: (opt.topOffset*3)+'px'
			}).show();

		if ($('a',self).length > 3) { // only if there are more than 3 items
			// bind events to specified buttons
			$('#'+opt.prevButtonId).click(movePrev);
			$('#'+opt.nextButtonId).click(moveNext);

			// bind mousewheel event to container
			$(self).mousewheel(function(e, delta){
				if (delta < 0) moveNext();
				if (delta > 0) movePrev();
				return false;
			});
		}

		// Move handling
		var _moveRunning = false;

		function movePrev() {
			if (_moveRunning) return false;
			_moveRunning = true;

			var prevElement = centerElement.prev();
			var nextElement = centerElement.next();
			var newElement = prevElement.prev();

			prevElement.animate({
				top: '+='+opt.topOffset+'px',
				left: '+='+opt.leftOffset+'px'
			},opt.animSpeed);

			centerElement.animate({
				top: '+='+opt.topOffset+'px',
				left: '+='+opt.leftOffset+'px'
			},opt.animSpeed);

			nextElement.animate({
				top: '+='+opt.topOffset+'px',
				left: '+='+opt.leftOffset+'px',
				opacity: 0
			},opt.animSpeed,function(){
				$(this).hide();
			});
			
			// If no element found, move last to begin
			if (newElement.length == 0)
				newElement = $('a:last',$(self)).prependTo($(self));

			newElement.css({
				display: 'none',
				opacity: 0,
				left: '0px',
				top: '0px'
			}).show().animate({
				top: '+='+opt.topOffset+'px',
				left: '+='+opt.leftOffset+'px',
				opacity: 1
			},opt.animSpeed,'swing',function(){_moveRunning = false});

			centerElement = prevElement;

			return false;
		};

		function moveNext() {
			if (_moveRunning) return false;
			_moveRunning = true;

			var prevElement = centerElement.prev();
			var nextElement = centerElement.next();
			var newElement = nextElement.next();

			prevElement.animate({
				top: '-='+opt.topOffset+'px',
				left: '-='+opt.leftOffset+'px',
				opacity: 0
			},opt.animSpeed,function(){
				$(this).hide();
			});

			centerElement.animate({
				top: '-='+opt.topOffset+'px',
				left: '-='+opt.leftOffset+'px'
			},opt.animSpeed);

			nextElement.animate({
				top: '-='+opt.topOffset+'px',
				left: '-='+opt.leftOffset+'px'
			},opt.animSpeed);
			
			// If no element found, move first to end
			if (newElement.length == 0)
				newElement = $('a:first',$(self)).appendTo($(self));

			newElement.css({
				opacity: 0,
				left: (opt.leftOffset*4)+'px',
				top: (opt.topOffset*4)+'px'
			}).show().animate({
				top: '-='+opt.topOffset+'px',
				left: '-='+opt.leftOffset+'px',
				opacity: 1
			},opt.animSpeed,'swing',function(){_moveRunning = false});

			centerElement = nextElement;

			return false;
		};

	});
};
})(jQuery);

// Mousewheel plugin 3.00
// Fixed Opera scroll direction
(function($){$.event.special.mousewheel={setup:function(){var handler=$.event.special.mousewheel.handler;if($.browser.mozilla)$(this).bind('mousemove.mousewheel',function(event){$.data(this,'mwcursorposdata',{pageX:event.pageX,pageY:event.pageY,clientX:event.clientX,clientY:event.clientY});});if(this.addEventListener)this.addEventListener(($.browser.mozilla?'DOMMouseScroll':'mousewheel'),handler,false);else
this.onmousewheel=handler;},teardown:function(){var handler=$.event.special.mousewheel.handler;$(this).unbind('mousemove.mousewheel');if(this.removeEventListener)this.removeEventListener(($.browser.mozilla?'DOMMouseScroll':'mousewheel'),handler,false);else
this.onmousewheel=function(){};$.removeData(this,'mwcursorposdata');},handler:function(event){var args=Array.prototype.slice.call(arguments,1);event=$.event.fix(event||window.event);$.extend(event,$.data(this,'mwcursorposdata')||{});var delta=0,returnValue=true;if(event.wheelDelta)delta=event.wheelDelta/120;if(event.detail)delta=-event.detail/3;if($.browser.opera)delta=event.wheelDelta;event.data=event.data||{};event.type="mousewheel";args.unshift(delta);args.unshift(event);return $.event.handle.apply(this,args);}};$.fn.extend({mousewheel:function(fn){return fn?this.bind("mousewheel",fn):this.trigger("mousewheel");},unmousewheel:function(fn){return this.unbind("mousewheel",fn);}});})(jQuery);