107 lines
2.6 KiB
JavaScript
Executable File
107 lines
2.6 KiB
JavaScript
Executable File
(function (w, d) {
|
|
'use strict';
|
|
|
|
var _v = '0.9',
|
|
_id = -1;
|
|
|
|
function PKAE() {
|
|
var q = this; // keeping track of current context
|
|
|
|
q.el = null; // reference of main html element
|
|
q.id = ++_id; // auto incremental id
|
|
q._deps = {}; // dependencies
|
|
|
|
w.PKAudioList[q.id] = q;
|
|
|
|
var events = {};
|
|
|
|
q.fireEvent = function (eventName, value, value2) {
|
|
var group = events[eventName];
|
|
if (!group) return (false);
|
|
|
|
var l = group.length;
|
|
while (l-- > 0) {
|
|
group[l] && group[l](value, value2);
|
|
}
|
|
};
|
|
|
|
q.listenFor = function (eventName, callback) {
|
|
if (!events[eventName])
|
|
events[eventName] = [callback];
|
|
else
|
|
events[eventName].unshift(callback);
|
|
};
|
|
|
|
q.stopListeningFor = function (eventName, callback) {
|
|
var group = events[eventName];
|
|
if (!group) return (false);
|
|
|
|
var l = group.length;
|
|
while (l-- > 0) {
|
|
if (group[l] && group[l] === callback) {
|
|
group[l] = null; break;
|
|
}
|
|
}
|
|
};
|
|
|
|
q.stopListeningForName = function (eventName) {
|
|
var group = events[eventName];
|
|
if (!group) return (false);
|
|
events[eventName] = null;
|
|
};
|
|
|
|
q.init = function (el_id) {
|
|
var el = d.getElementById(el_id);
|
|
if (!el) {
|
|
console.log('invalid element');
|
|
return;
|
|
}
|
|
q.el = el;
|
|
|
|
// init libraries
|
|
q.ui = new q._deps.ui(q); q._deps.uifx(q);
|
|
q.engine = new q._deps.engine(q);
|
|
q.state = new q._deps.state(4, q);
|
|
q.rec = new q._deps.rec(q);
|
|
q.fls = new q._deps.fls(q);
|
|
|
|
if (w.location.href.split('local=')[1]) {
|
|
var sess = w.location.href.split('local=')[1];
|
|
|
|
q.fls.Init(function () {
|
|
q.fls.GetSession(sess, function (e) {
|
|
if (e && e.id === sess) {
|
|
q.engine.LoadDB(e);
|
|
}
|
|
});
|
|
});
|
|
}
|
|
|
|
// Check for audioUrl parameter to load audio from URL
|
|
if (w.location.href.split('audioUrl=')[1]) {
|
|
var audioUrl = decodeURIComponent(w.location.href.split('audioUrl=')[1].split('&')[0]);
|
|
|
|
setTimeout(function () {
|
|
if (audioUrl) {
|
|
q.engine.LoadURL(audioUrl);
|
|
}
|
|
}, 500);
|
|
}
|
|
|
|
return (q);
|
|
};
|
|
|
|
// check if we are mobile and hide tooltips on hover
|
|
q.isMobile = (/iphone|ipod|ipad|android/).test
|
|
(navigator.userAgent.toLowerCase());
|
|
};
|
|
|
|
!w.PKAudioList && (w.PKAudioList = []);
|
|
|
|
// ideally we do not want a global singleto refferencing our audio tool
|
|
// but since this is a limited demo we can safely do it.
|
|
w.PKAudioEditor = new PKAE();
|
|
|
|
PKAudioList.push(w.PKAudioEditor); // keeping track in the audiolist array of our instance
|
|
|
|
})(window, document); |