(function($){
	var show = $('#show'),
		open = $('#show-opn'),
		bgs = show.find('div.show-bgs'),
		txt = show.find('div.show-txt'),
		btn = show.find('div.show-btn a'),
		tot = btn.not('.btn').length,
		top = show.offset().top,
		max = 500,
		min = String($.cookie('show')).match(/false/i)? 0 : max;

	// Slot machine
	(function(){
		var html = '<div class="slot-badge"></div><div class="slot-1"></div><div class="slot-2"></div><div class="slot-3"></div>',
			self = bgs.find('div.show-4').append(html), badge = self.find('div.slot-badge'), slots = self.find('div').not(badge),
			timer = 0, speed = 0, step = 0, steps = 400, loop = 400, tot = slots.length, bgpos = [];
		
		function spin(){
			if((step += 5) === steps){self.removeClass('blur');return clearInterval(timer)}
			for(var i=0;i<tot;i++)slots[i].style.backgroundPosition = '15px -' + (bgpos[i] = (bgpos[i] + step) % loop) + 'px';
		}
		self.add(badge).on('click', function(){
			self.addClass('blur');badge.hide();
			step = parseInt(clearTimeout(timer)) || 0;
			bgpos = slots.map(function(){return (parseInt(Math.random() * 10) + 1) * 40}).get();
			timer = setInterval(spin, 16);
		});
	})();

	//Redesign functionality
	txt.find('div.show-3 h1').on('click', function(){
		bgs.find('div.show-3').css('backgroundImage', function(i, v){
			return v.replace(/(\d)(\.jpg)/g, function(m, int, ext){
				return ((parseInt(int)+1) % 4) + ext;
			})
		});
	});

	//Map functionality
	if(window.google)$(window).on('load', function(){
		var info=new google.maps.InfoWindow(),
			gray=new google.maps.StyledMapType([{featureType:"landscape.natural",stylers:[{visibility:"on"}]},{featureType:"poi",stylers:[{visibility:"on"},{lightness:49}]},{featureType:"road.arterial",elementType:"labels",stylers:[{visibility:"on"},{lightness:41}]},{featureType:"road.local",elementType:"geometry",stylers:[{visibility:"simplified"},{lightness:-4}]},{featureType:"water",stylers:[{hue:"#00ffff"},{lightness:19}]},{featureType:"road.local",elementType:"labels",stylers:[{lightness:40},{visibility:"on"}]},{featureType:"landscape.natural",stylers:[{visibility:"off"}]},{featureType:"road.arterial",stylers:[{visibility:"simplified"},{hue:"#f5f5f5"},{saturation:-99},{lightness:70}]},{elementType:"labels",stylers:[{gamma:0.75},{lightness:6}]},{featureType:"landscape.man_made",stylers:[{lightness:99}]},{featureType:"landscape.natural",stylers:[{lightness:100}]}],{name:'gray'});
		
		$('textarea.map').each(function(){
			var opt = $.parseJSON(this.value), 
				div = $('<div>').css({width:'100%',height:'100%'}).appendTo(bgs.find('div.show-6')),
				map = new google.maps.Map(div[0], {
					mapTypeControlOptions: {mapTypeIds: [google.maps.MapTypeId.ROADMAP,'gray']},
					center: new google.maps.LatLng(opt.center.lat, opt.center.lng), 
					zoom: opt.zoom,
					mapTypeControl: false, 
					zoomControl: true, 
					zoomControlOptions: {style: google.maps.ZoomControlStyle.SMALL}
				});
			map.mapTypes.set('gray', gray);
			map.setMapTypeId('gray');
			
			$.each(opt.pois,function(i, opt){
				opt.mark=new google.maps.Marker({map: map, position: new google.maps.LatLng(opt.point.lat, opt.point.lng), cont: opt.body});
				google.maps.event.addListener(opt.mark, 'click', function(){
					info.setContent('<div class="show-info">' + opt.body + '</div>');
					info.open(map, opt.mark);
				});
			});
		});
	});

	//Show-button
	open.on('click', function(){
		$.cookie('show', 'true');
		$('body,html').animate({scrollTop: 0});
		show.animate({height:min = max});
		open.css('top', -999);
	});

	//Scroll-to-hide
	$(window).on('scroll', function(){
		var y = (document.documentElement.scrollTop || window.pageYOffset || 0) * (max/top);
		if(min)show.css('height', min = Math.min(max, Math.max(0, max - parseInt(y))));
		if(min !== false && min <= 0)$.cookie('show', min = !open.css('top', -20));
	});

	//Key-to-swap
	$(document).on('keydown', function(e){
		if(min&&e.keyCode<41&&e.keyCode>36){
			var i = btn.filter('.cur').index() + (e.keyCode>38?2:0);
			btn.eq((i%tot || tot) - 1).trigger('click');
		}
	});

	//Click-to-swap
	btn.on('click', function(e){
		e.preventDefault();
		var i = this.className.indexOf('btn') < 0? btn.index(this) : (btn.filter('.cur').index()+1) % tot;
		btn.removeClass('cur').eq(i).addClass('cur');
		txt.animate({left:(i*-200) - 50 + '%'}, 1000);
		bgs.animate({left:(i*-100) + '%'}, 1000);		
	});

	//Initialize
	$(window).trigger('scroll');
	show.css('height', min? max : 0);

	//Quick-fix contact-link
	if(!navigator.userAgent.match(/iPhone/i))$('li.page-item-2336 a').on('click', function(e){
		e.preventDefault();
		btn.eq(-2).add(open).trigger('click');
	});
})(jQuery);
