(function(c){var a=["DOMMouseScroll","mousewheel"];c.event.special.mousewheel={setup:function(){if(this.addEventListener){for(var d=a.length;d;){this.addEventListener(a[--d],b,false)}}else{this.onmousewheel=b}},teardown:function(){if(this.removeEventListener){for(var d=a.length;d;){this.removeEventListener(a[--d],b,false)}}else{this.onmousewheel=null}}};c.fn.extend({mousewheel:function(d){return d?this.bind("mousewheel",d):this.trigger("mousewheel")},unmousewheel:function(d){return this.unbind("mousewheel",d)}});function b(f){var d=[].slice.call(arguments,1),g=0,e=true;f=c.event.fix(f||window.event);f.type="mousewheel";if(f.wheelDelta){g=f.wheelDelta/120}if(f.detail){g=-f.detail/3}d.unshift(f,g);return c.event.handle.apply(this,d)}})(jQuery);

$(function () {

	var jMenu = $("#menuwrap");
	var jSBar = $("<div />").addClass("scrollbar");
	var jSBaw = $("<div />").addClass("scrollbarwrap");
	var jWrap = $("<div />").addClass("scrollwrap");
	var nHidden = 0, nShowed = 0, nGlide = 0, nPos = 0;
	var fWheel = function (e, d) {
		e.preventDefault();
		var top;
		if(d<0 && nPos<nHidden) nPos = Math.min(nHidden, nPos-(10*d));
		if(d>0 && nPos>0      ) nPos = Math.max(0,       nPos-(10*d));
		top = 5 + Math.floor(nGlide * (Math.abs(nPos)/nHidden));
		jWrap.css("top", -nPos);
		jSBar.css("top", top);
	}
	nHidden = jMenu.height();
	jMenu.addClass("scrolled").mousewheel(fWheel).wrapInner(jWrap).append(jSBar).append(jSBaw);
	jWrap = jMenu.find(".scrollwrap");
	nShowed = jMenu.height();
	nGlide  = nShowed - jSBar.height();
	nHidden -= nShowed;
	jSBaw.height(nShowed+2);

	var sGame    = null;
	var jGame    = $("#game");
	var jGameIfw = $("#game-ifw");
	var jGameIf  = $("#game-if");
	var jGames   = $(".game");
	var fStartGame = function (name) {
		var fShow = function () {
			_gaq.push(['_trackEvent', 'PageActions', 'PlayGame', sGame]);
			_gaq.push(['_trackPageview', '/games/'+sGame+'/config']);
			jGameIf.css({ display: "none" }).attr("src", "load/"+sGame).css({ display: "block" });
		};
		jGames.removeClass("game-sel");
		if(sGame==null) {
			jGameIfw.css({ display: "block" });
			jGameIf.css({ display: "block", height: 0 }).animate({ height: 360 }, fShow);
		} else {
			jGameIf.attr("src", null).animate({ height: 0 }).animate({ height: 360 }, fShow);
		}
		sGame = name;
	}
	jGames.each(function (i, e) {
		var jThis = $(e);
		var jAnc  = jThis.find("a");
		var sHRef = jAnc.attr("href");
		var sName = sHRef.substr(1+sHRef.lastIndexOf("!"));
		jAnc.click(function (e) {
			e.stopPropagation();
			jGame.find("h1").html(jThis.find("h3 a").html());
			jGame.find("#game_expl").html("<p>"+jThis.find("p").html()+"</p>");
			fStartGame(sName);
			jThis.addClass("game-sel")
		})
		jThis.click((function (jAnc) {
			return function (e) {
				location.href = "#!"+sName;
				jAnc.click();
			}
		})(jAnc.eq(0))).css({ cursor: "pointer" });
	});
	if(jGameIf.attr("src")) {
		sGame = "#";
		jGameIfw.css({ display: "block" });
		jGameIf.css({ display: "block" });
	}
	if((pos = location.href.indexOf("#!"))!=-1) {
		var anc = location.href.substr(pos+2);
		jGames.find("a[href$='"+anc+"']").eq(0).click();
	}
});
