summaryrefslogtreecommitdiff
path: root/www/js/api.js
diff options
context:
space:
mode:
Diffstat (limited to 'www/js/api.js')
-rw-r--r--www/js/api.js66
1 files changed, 31 insertions, 35 deletions
diff --git a/www/js/api.js b/www/js/api.js
index 1cf9fbe..edc37b6 100644
--- a/www/js/api.js
+++ b/www/js/api.js
@@ -29,7 +29,7 @@ window.html5ks.api = {
play: function (channel, name, ignore, fade) {
this.stop(channel);
var deferred = when.defer(),
- audio = new Audio();
+ audio = html5ks.elements.audio[channel];
if (channel === "music" || channel === "ambient") {
audio.loop = true;
}
@@ -38,15 +38,15 @@ window.html5ks.api = {
audio.load();
audio.volume = fade ? 0 : 1;
audio.play();
- audio.addEventListener("playing", function playing() {
+ audio.onplaying = function () {
deferred.resolve();
if (fade) {
html5ks.api.set_volume(1, fade, channel);
}
- }, false);
- audio.addEventListener("error", function error() {
+ };
+ audio.onerror = function () {
deferred.reject(this.error);
- }, false);
+ };
return deferred.promise;
},
@@ -88,30 +88,25 @@ window.html5ks.api = {
video.play();
var done = function () {
video.style.display = "none";
- // clear event listeners
- var oldVideo = document.getElementById("vid");
- oldVideo.pause();
- var newVideo = video.cloneNode(true);
- oldVideo.parentNode.replaceChild(newVideo, oldVideo);
- html5ks.elements.video = newVideo;
+ video.pause();
deferred.resolve();
};
document.addEventListener("keyup", function keyupListener(e) {
+ document.removeEventListener("keyup", keyupListener, false);
if (e.keyCode === 27) {
done();
e.preventDefault();
- e.stopPropagation();
}
}, false);
- video.addEventListener("click", function clickListener(e) {
+ video.onclick = function (e) {
if (e.button === 0 && skippable) {
done();
}
- }, false);
- video.addEventListener("ended", done, false);
- video.addEventListener("error", function () {
+ };
+ video.onended = done;
+ video.onerror = function () {
deferred.reject(this.error);
- }, false);
+ };
return deferred.promise;
},
@@ -207,7 +202,7 @@ window.html5ks.api = {
bgleft: { xpos: 0.4, xanchor: 0.5, ypos: 1.0, yanchor: 1.0 },
bgright: { xpos: 0.6, xanchor: 0.5, ypos: 1.0, yanchor: 1.0 }
};
- var pos = positions[location] || positions.center;
+ var pos = positions[location];
// TODO: implement transitions
if (pos) {
el.style.left = pos.xpos * 800 + "px";
@@ -229,13 +224,16 @@ window.html5ks.api = {
var image = html5ks.data.images[nom];
switch (typeof image) {
case "string":
- el = document.createElement("div");
- el.style.backgroundColor = image;
- el.style.width = "100%";
- el.style.height = "100%";
- el.src = "";
- deferred.resolve();
- return deferred.promise;
+ if (image.substring(0, 1) === "#") {
+ el = document.createElement("div");
+ el.style.backgroundColor = image;
+ el.style.width = "100%";
+ el.style.height = "100%";
+ el.src = "";
+ deferred.resolve();
+ return deferred.promise;
+ }
+ break;
case "undefined":
switch (name) {
case "bg":
@@ -326,10 +324,12 @@ window.html5ks.api = {
if (!char) {
char = {
name: name,
- what_prefix: "“",
- what_suffix: "”"
};
}
+ if (typeof char.what_prefix === "undefined") {
+ char.what_prefix = "“";
+ char.what_suffix = "”";
+ }
if (!extend && char.what_prefix) {
text = char.what_prefix + text;
}
@@ -433,13 +433,8 @@ window.html5ks.api = {
return deferred.promise;
},
- menu: function (label) {
- var deferred = when.defer(),
- imenu = html5ks.data.script[label],
- char = imenu[1],
- str = imenu[2],
- choices = imenu[3];
- this.character(char, str, null, true);
+ menu: function (choices) {
+ var deferred = when.defer();
var menu = html5ks.elements.choices,
frag = document.createDocumentFragment(),
choice = document.createElement("div");
@@ -448,13 +443,14 @@ window.html5ks.api = {
for (var i in choices) {
choice.innerHTML = i;
+ choice.id = choices[i];
frag.appendChild(choice);
choice = choice.cloneNode(false);
}
menu.addEventListener("click", function (e) {
html5ks.elements.choices.innerHTML = "";
- deferred.resolve(choices[e.target.innerHTML]);
+ deferred.resolve(e.target.id);
}, false);
html5ks.elements.choices.appendChild(frag);