$(document).ready(function() {
	function getHashParams() {

	    var hashParams = {};
	    var e,
		a = /\+/g,  // Regex for replacing addition symbol with a space
		r = /([^&;=]+)=?([^&;]*)/g,
		d = function (s) { return decodeURIComponent(s.replace(a, " ")); },
		q = window.location.hash.substring(1);

	    while (e = r.exec(q))
	       hashParams[d(e[1])] = d(e[2]);

	    return hashParams;
	};

	function fxFn(currSlideElement, nextSlideElement, options, afterCallback, forwardFlag) {
		console.log(forwardFlag);
	};

	if($('.gallery').children().get().length < 2)
	{
		$('.gallery-button-next').hide();
		$('.gallery-button-prev').hide();
		return;
	}
	
	var cycleParams = {
		fx: 'scrollBothWays',
		speed:  300,
		timeout: 0,
		next:   '.gallery-button-next',
		prev:   '.gallery-button-prev',
		easeIn:   'easeOutQuad',
		easeOut:  'easeOutQuad',
		continuous: 0,
		pause: 0,
		fit: 1,
		onPrevNextEvent: function(isNext, slideIndex, slideElement) {
			window.location.hash = "project=" + slideIndex;
//			console.log(slideIndex);
		},
		after: function(currSlideElement, nextSlideElement, options, forwardFlag) {
			$(currSlideElement).removeClass('current-slide');
			$(nextSlideElement).addClass('current-slide');
		}

	};

	var fragmentParams = getHashParams();

	if(fragmentParams['project'])
		cycleParams.startingSlide = fragmentParams['project'];

	$('.gallery').cycle(cycleParams);
});

$.fn.cycle.transitions.scrollBothWays = function($cont, $slides, opts) {

	$cont.css('overflow','hidden');

	opts.before.push($.fn.cycle.commonReset);


	// custom transition fn (trying to get it to scroll forward and backward)

	opts.fxFn = function(curr, next, opts, cb, fwd) {

		var w = $cont.width();
		opts.cssFirst = { left: 0 };
		opts.animIn	  = { left: 0 };
		

		if(fwd){
			opts.cssBefore= { left: w, top: 0 };
			opts.animOut  = { left: 0-w };
		}else{
			opts.cssBefore= { left: -w, top: 0 };
			opts.animOut  = { left: w };
		};

		var $l = $(curr), $n = $(next);

		var speedIn = opts.speedIn, speedOut = opts.speedOut, easeIn = opts.easeIn, easeOut = opts.easeOut, animOut = opts.animOut, animIn = opts.animIn;

		$n.css(opts.cssBefore);
		
		var fn = function() {$n.show();$n.animate(animIn, speedIn, easeIn, cb);};

		$l.animate(animOut, speedOut, easeOut, function() {

			// After animation, destroy video player content by removing and 
			// re-adding their IFRAME HTML. Otherwise they will may playing
			// in the background.

			var oldhtml = $l.html();
			if(oldhtml.indexOf('iframe') != -1) {
				$l.html('iframe destroyer');
				$l.html(oldhtml);
			}

			if (opts.cssAfter) $l.css(opts.cssAfter);

			if (!opts.sync) fn();

		});

		if (opts.sync) fn();

	};

};

