predikator-leparlo/assets/app.js

115 lines
3.2 KiB
JavaScript
Raw Permalink Normal View History

2015-06-12 16:18:39 +02:00
'use strict';
/*global jQuery*/
/**
* Made by http://linkedin.com/in/karolyi
*/
(function ($) {
2015-06-14 16:12:39 +02:00
var zapAudio;
var hissAudio;
2015-06-12 16:18:39 +02:00
var ledTimeoutId;
var litLedId = 0;
var swingDirection;
var maxMenuCount;
var actualMenuId = 1;
var jqMenuLeds;
2015-06-12 18:16:13 +02:00
var jqMenuLamps;
var jqMenuUl;
var jqMenuBgs;
var jqContentPages;
2015-06-12 16:18:39 +02:00
2015-06-14 16:12:39 +02:00
var playHiss = function () {
if (hissAudio.pause && hissAudio.play) {
hissAudio.pause();
hissAudio.play();
}
$('#smoke-1').smoke('start');
};
2015-06-12 18:16:13 +02:00
var onClickMenu = function () {
2015-06-12 16:18:39 +02:00
var jqLiMenuElement = $(this);
actualMenuId = parseInt(jqLiMenuElement.data('menuid'), 10);
2015-06-14 16:12:39 +02:00
if (zapAudio.pause && zapAudio.play) {
zapAudio.pause();
zapAudio.play();
2015-06-12 16:18:39 +02:00
}
2015-06-14 16:12:39 +02:00
setTimeout(playHiss, 1800);
2015-06-12 16:18:39 +02:00
swingLedsToMenu();
2015-06-12 18:16:13 +02:00
var jqThisLamp = jqLiMenuElement.find('.lamp');
var jqThisMenuBg = jqLiMenuElement.find('.menubg');
var jqThisContentPage = jqContentPages.filter(
'.page-' + jqLiMenuElement.data('menuid'));
jqMenuLamps.not(jqThisLamp)
.find('img')
.attr('src', '/images/lampa_inactive.png');
jqThisLamp.find('img').attr('src', '/images/lampa_animation.gif');
jqMenuBgs.not(jqThisMenuBg).removeClass('active');
jqThisMenuBg.addClass('active');
jqContentPages.not(jqThisContentPage).removeClass('active');
jqThisContentPage.addClass('active');
2015-06-12 16:18:39 +02:00
};
var swingLedsToMenu = function () {
2015-06-12 22:47:03 +02:00
swingDirection = 'forward';
2015-06-12 16:18:39 +02:00
if (ledTimeoutId) {
// Clear if there's any running swing
clearTimeout(ledTimeoutId);
ledTimeoutId = null;
}
litLedId = 0;
lightUpNextLed();
};
var lightUpNextLed = function () {
var doNextCycle = false;
litLedId += swingDirection === 'forward' ? 1 : -1;
if (
(actualMenuId === maxMenuCount && litLedId === maxMenuCount) ||
(swingDirection == 'backward' && litLedId === actualMenuId)) {
doNextCycle = false;
} else {
doNextCycle = true;
}
if (swingDirection === 'forward' && litLedId === maxMenuCount && doNextCycle) {
swingDirection = 'backward';
}
jqMenuLeds.removeClass('active');
var jqMenuLedToLight = $(jqMenuLeds.get(litLedId - 1));
jqMenuLedToLight.addClass('active');
if (doNextCycle) {
2015-06-12 22:47:03 +02:00
ledTimeoutId = setTimeout(lightUpNextLed, 100);
2015-06-12 16:18:39 +02:00
} else {
ledTimeoutId = null;
}
};
var onReadyDocument = function () {
// Startup functions
$('.mainContent').height($(window).height());
2015-06-14 16:12:39 +02:00
zapAudio = $('#audio-zap')[0];
hissAudio = $('#audio-hiss')[0];
2015-06-12 16:18:39 +02:00
$('#menu-chooser li').click(onClickMenu);
jqMenuLeds = $('#menu-chooser li .gomb');
2015-06-12 18:16:13 +02:00
jqMenuLamps = $('#menu-chooser li .lamp');
jqMenuBgs = $('#menu-chooser li .menubg');
jqMenuUl = $('#menu-chooser');
jqContentPages = $('.content-center-wrapper .page');
2015-06-12 16:18:39 +02:00
maxMenuCount = jqMenuLeds.length;
2015-06-12 22:47:03 +02:00
$('.page, .gallery-wrapper').perfectScrollbar({
2015-06-12 21:17:43 +02:00
suppressScrollX: true
});
2015-06-12 22:47:03 +02:00
swingLedsToMenu();
2015-06-13 19:29:08 +02:00
$('#smoke-1').smoke({
2015-06-14 16:12:39 +02:00
autoStart: false,
2015-06-13 20:28:48 +02:00
smokeTime: 1000,
spawnAfter: 10,
emitterX: 10,
emitterY: 48,
particleLifeTime: 2000,
flyAngle: 80,
2015-06-13 19:29:08 +02:00
velXMultiplier: 2
});
2015-06-12 16:18:39 +02:00
};
$(document).ready(onReadyDocument);
})(jQuery);