annotate slides.js @ 0:e5b70f7cd8a6 draft default tip

hg commit
author Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
date Wed, 28 Mar 2012 10:41:57 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
1 /*
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
2 Google HTML5 slides template
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
3
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
4 Authors: Luke Mahé (code)
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
5 Marcin Wichary (code and design)
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
6
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
7 Dominic Mazzoni (browser compatibility)
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
8 Charles Chen (ChromeVox support)
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
9
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
10 URL: http://code.google.com/p/html5slides/
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
11 */
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
12
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
13 var PERMANENT_URL_PREFIX = './';
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
14
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
15 var SLIDE_CLASSES = ['far-past', 'past', 'current', 'next', 'far-next'];
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
16
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
17 var PM_TOUCH_SENSITIVITY = 15;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
18
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
19 var curSlide;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
20
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
21 /* ---------------------------------------------------------------------- */
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
22 /* classList polyfill by Eli Grey
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
23 * (http://purl.eligrey.com/github/classList.js/blob/master/classList.js) */
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
24
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
25 if (typeof document !== "undefined" && !("classList" in document.createElement("a"))) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
26
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
27 (function (view) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
28
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
29 var
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
30 classListProp = "classList"
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
31 , protoProp = "prototype"
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
32 , elemCtrProto = (view.HTMLElement || view.Element)[protoProp]
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
33 , objCtr = Object
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
34 strTrim = String[protoProp].trim || function () {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
35 return this.replace(/^\s+|\s+$/g, "");
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
36 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
37 , arrIndexOf = Array[protoProp].indexOf || function (item) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
38 for (var i = 0, len = this.length; i < len; i++) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
39 if (i in this && this[i] === item) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
40 return i;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
41 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
42 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
43 return -1;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
44 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
45 // Vendors: please allow content code to instantiate DOMExceptions
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
46 , DOMEx = function (type, message) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
47 this.name = type;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
48 this.code = DOMException[type];
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
49 this.message = message;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
50 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
51 , checkTokenAndGetIndex = function (classList, token) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
52 if (token === "") {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
53 throw new DOMEx(
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
54 "SYNTAX_ERR"
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
55 , "An invalid or illegal string was specified"
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
56 );
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
57 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
58 if (/\s/.test(token)) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
59 throw new DOMEx(
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
60 "INVALID_CHARACTER_ERR"
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
61 , "String contains an invalid character"
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
62 );
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
63 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
64 return arrIndexOf.call(classList, token);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
65 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
66 , ClassList = function (elem) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
67 var
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
68 trimmedClasses = strTrim.call(elem.className)
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
69 , classes = trimmedClasses ? trimmedClasses.split(/\s+/) : []
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
70 ;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
71 for (var i = 0, len = classes.length; i < len; i++) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
72 this.push(classes[i]);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
73 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
74 this._updateClassName = function () {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
75 elem.className = this.toString();
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
76 };
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
77 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
78 , classListProto = ClassList[protoProp] = []
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
79 , classListGetter = function () {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
80 return new ClassList(this);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
81 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
82 ;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
83 // Most DOMException implementations don't allow calling DOMException's toString()
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
84 // on non-DOMExceptions. Error's toString() is sufficient here.
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
85 DOMEx[protoProp] = Error[protoProp];
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
86 classListProto.item = function (i) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
87 return this[i] || null;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
88 };
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
89 classListProto.contains = function (token) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
90 token += "";
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
91 return checkTokenAndGetIndex(this, token) !== -1;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
92 };
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
93 classListProto.add = function (token) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
94 token += "";
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
95 if (checkTokenAndGetIndex(this, token) === -1) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
96 this.push(token);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
97 this._updateClassName();
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
98 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
99 };
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
100 classListProto.remove = function (token) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
101 token += "";
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
102 var index = checkTokenAndGetIndex(this, token);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
103 if (index !== -1) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
104 this.splice(index, 1);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
105 this._updateClassName();
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
106 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
107 };
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
108 classListProto.toggle = function (token) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
109 token += "";
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
110 if (checkTokenAndGetIndex(this, token) === -1) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
111 this.add(token);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
112 } else {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
113 this.remove(token);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
114 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
115 };
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
116 classListProto.toString = function () {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
117 return this.join(" ");
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
118 };
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
119
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
120 if (objCtr.defineProperty) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
121 var classListPropDesc = {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
122 get: classListGetter
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
123 , enumerable: true
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
124 , configurable: true
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
125 };
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
126 try {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
127 objCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
128 } catch (ex) { // IE 8 doesn't support enumerable:true
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
129 if (ex.number === -0x7FF5EC54) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
130 classListPropDesc.enumerable = false;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
131 objCtr.defineProperty(elemCtrProto, classListProp, classListPropDesc);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
132 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
133 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
134 } else if (objCtr[protoProp].__defineGetter__) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
135 elemCtrProto.__defineGetter__(classListProp, classListGetter);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
136 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
137
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
138 }(self));
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
139
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
140 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
141 /* ---------------------------------------------------------------------- */
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
142
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
143 /* Slide movement */
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
144
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
145 function getSlideEl(no) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
146 if ((no < 0) || (no >= slideEls.length)) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
147 return null;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
148 } else {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
149 return slideEls[no];
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
150 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
151 };
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
152
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
153 function updateSlideClass(slideNo, className) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
154 var el = getSlideEl(slideNo);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
155
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
156 if (!el) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
157 return;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
158 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
159
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
160 if (className) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
161 el.classList.add(className);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
162 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
163
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
164 for (var i in SLIDE_CLASSES) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
165 if (className != SLIDE_CLASSES[i]) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
166 el.classList.remove(SLIDE_CLASSES[i]);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
167 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
168 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
169 };
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
170
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
171 function updateSlides() {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
172 for (var i = 0; i < slideEls.length; i++) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
173 switch (i) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
174 case curSlide - 2:
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
175 updateSlideClass(i, 'far-past');
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
176 break;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
177 case curSlide - 1:
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
178 updateSlideClass(i, 'past');
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
179 break;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
180 case curSlide:
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
181 updateSlideClass(i, 'current');
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
182 break;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
183 case curSlide + 1:
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
184 updateSlideClass(i, 'next');
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
185 break;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
186 case curSlide + 2:
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
187 updateSlideClass(i, 'far-next');
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
188 break;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
189 default:
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
190 updateSlideClass(i);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
191 break;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
192 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
193 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
194
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
195 triggerLeaveEvent(curSlide - 1);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
196 triggerEnterEvent(curSlide);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
197
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
198 window.setTimeout(function() {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
199 // Hide after the slide
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
200 disableSlideFrames(curSlide - 2);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
201 }, 301);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
202
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
203 enableSlideFrames(curSlide - 1);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
204 enableSlideFrames(curSlide + 2);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
205
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
206 if (isChromeVoxActive()) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
207 speakAndSyncToNode(slideEls[curSlide]);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
208 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
209
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
210 updateHash();
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
211 };
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
212
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
213 function buildNextItem() {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
214 var toBuild = slideEls[curSlide].querySelectorAll('.to-build');
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
215
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
216 if (!toBuild.length) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
217 return false;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
218 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
219
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
220 toBuild[0].classList.remove('to-build', '');
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
221
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
222 if (isChromeVoxActive()) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
223 speakAndSyncToNode(toBuild[0]);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
224 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
225
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
226 return true;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
227 };
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
228
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
229 function prevSlide() {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
230 if (curSlide > 0) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
231 curSlide--;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
232
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
233 updateSlides();
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
234 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
235 };
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
236
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
237 function nextSlide() {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
238 if (buildNextItem()) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
239 return;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
240 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
241
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
242 if (curSlide < slideEls.length - 1) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
243 curSlide++;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
244
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
245 updateSlides();
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
246 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
247 };
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
248
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
249 /* Slide events */
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
250
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
251 function triggerEnterEvent(no) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
252 var el = getSlideEl(no);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
253 if (!el) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
254 return;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
255 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
256
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
257 var onEnter = el.getAttribute('onslideenter');
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
258 if (onEnter) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
259 new Function(onEnter).call(el);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
260 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
261
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
262 var evt = document.createEvent('Event');
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
263 evt.initEvent('slideenter', true, true);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
264 evt.slideNumber = no + 1; // Make it readable
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
265
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
266 el.dispatchEvent(evt);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
267 };
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
268
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
269 function triggerLeaveEvent(no) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
270 var el = getSlideEl(no);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
271 if (!el) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
272 return;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
273 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
274
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
275 var onLeave = el.getAttribute('onslideleave');
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
276 if (onLeave) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
277 new Function(onLeave).call(el);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
278 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
279
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
280 var evt = document.createEvent('Event');
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
281 evt.initEvent('slideleave', true, true);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
282 evt.slideNumber = no + 1; // Make it readable
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
283
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
284 el.dispatchEvent(evt);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
285 };
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
286
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
287 /* Touch events */
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
288
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
289 function handleTouchStart(event) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
290 if (event.touches.length == 1) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
291 touchDX = 0;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
292 touchDY = 0;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
293
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
294 touchStartX = event.touches[0].pageX;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
295 touchStartY = event.touches[0].pageY;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
296
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
297 document.body.addEventListener('touchmove', handleTouchMove, true);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
298 document.body.addEventListener('touchend', handleTouchEnd, true);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
299 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
300 };
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
301
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
302 function handleTouchMove(event) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
303 if (event.touches.length > 1) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
304 cancelTouch();
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
305 } else {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
306 touchDX = event.touches[0].pageX - touchStartX;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
307 touchDY = event.touches[0].pageY - touchStartY;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
308 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
309 };
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
310
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
311 function handleTouchEnd(event) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
312 var dx = Math.abs(touchDX);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
313 var dy = Math.abs(touchDY);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
314
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
315 if ((dx > PM_TOUCH_SENSITIVITY) && (dy < (dx * 2 / 3))) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
316 if (touchDX > 0) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
317 prevSlide();
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
318 } else {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
319 nextSlide();
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
320 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
321 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
322
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
323 cancelTouch();
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
324 };
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
325
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
326 function cancelTouch() {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
327 document.body.removeEventListener('touchmove', handleTouchMove, true);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
328 document.body.removeEventListener('touchend', handleTouchEnd, true);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
329 };
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
330
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
331 /* Preloading frames */
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
332
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
333 function disableSlideFrames(no) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
334 var el = getSlideEl(no);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
335 if (!el) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
336 return;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
337 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
338
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
339 var frames = el.getElementsByTagName('iframe');
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
340 for (var i = 0, frame; frame = frames[i]; i++) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
341 disableFrame(frame);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
342 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
343 };
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
344
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
345 function enableSlideFrames(no) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
346 var el = getSlideEl(no);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
347 if (!el) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
348 return;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
349 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
350
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
351 var frames = el.getElementsByTagName('iframe');
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
352 for (var i = 0, frame; frame = frames[i]; i++) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
353 enableFrame(frame);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
354 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
355 };
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
356
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
357 function disableFrame(frame) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
358 frame.src = 'about:blank';
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
359 };
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
360
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
361 function enableFrame(frame) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
362 var src = frame._src;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
363
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
364 if (frame.src != src && src != 'about:blank') {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
365 frame.src = src;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
366 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
367 };
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
368
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
369 function setupFrames() {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
370 var frames = document.querySelectorAll('iframe');
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
371 for (var i = 0, frame; frame = frames[i]; i++) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
372 frame._src = frame.src;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
373 disableFrame(frame);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
374 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
375
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
376 enableSlideFrames(curSlide);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
377 enableSlideFrames(curSlide + 1);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
378 enableSlideFrames(curSlide + 2);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
379 };
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
380
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
381 function setupInteraction() {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
382 /* Clicking and tapping */
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
383
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
384 var el = document.createElement('div');
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
385 el.className = 'slide-area';
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
386 el.id = 'prev-slide-area';
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
387 el.addEventListener('click', prevSlide, false);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
388 document.querySelector('section.slides').appendChild(el);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
389
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
390 var el = document.createElement('div');
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
391 el.className = 'slide-area';
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
392 el.id = 'next-slide-area';
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
393 el.addEventListener('click', nextSlide, false);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
394 document.querySelector('section.slides').appendChild(el);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
395
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
396 /* Swiping */
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
397
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
398 document.body.addEventListener('touchstart', handleTouchStart, false);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
399 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
400
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
401 /* ChromeVox support */
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
402
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
403 function isChromeVoxActive() {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
404 if (typeof(cvox) == 'undefined') {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
405 return false;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
406 } else {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
407 return true;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
408 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
409 };
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
410
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
411 function speakAndSyncToNode(node) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
412 if (!isChromeVoxActive()) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
413 return;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
414 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
415
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
416 cvox.ChromeVox.navigationManager.switchToStrategy(
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
417 cvox.ChromeVoxNavigationManager.STRATEGIES.LINEARDOM, 0, true);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
418 cvox.ChromeVox.navigationManager.syncToNode(node);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
419 cvox.ChromeVoxUserCommands.finishNavCommand('');
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
420 var target = node;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
421 while (target.firstChild) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
422 target = target.firstChild;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
423 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
424 cvox.ChromeVox.navigationManager.syncToNode(target);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
425 };
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
426
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
427 function speakNextItem() {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
428 if (!isChromeVoxActive()) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
429 return;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
430 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
431
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
432 cvox.ChromeVox.navigationManager.switchToStrategy(
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
433 cvox.ChromeVoxNavigationManager.STRATEGIES.LINEARDOM, 0, true);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
434 cvox.ChromeVox.navigationManager.next(true);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
435 if (!cvox.DomUtil.isDescendantOfNode(
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
436 cvox.ChromeVox.navigationManager.getCurrentNode(), slideEls[curSlide])){
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
437 var target = slideEls[curSlide];
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
438 while (target.firstChild) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
439 target = target.firstChild;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
440 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
441 cvox.ChromeVox.navigationManager.syncToNode(target);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
442 cvox.ChromeVox.navigationManager.next(true);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
443 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
444 cvox.ChromeVoxUserCommands.finishNavCommand('');
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
445 };
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
446
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
447 function speakPrevItem() {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
448 if (!isChromeVoxActive()) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
449 return;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
450 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
451
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
452 cvox.ChromeVox.navigationManager.switchToStrategy(
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
453 cvox.ChromeVoxNavigationManager.STRATEGIES.LINEARDOM, 0, true);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
454 cvox.ChromeVox.navigationManager.previous(true);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
455 if (!cvox.DomUtil.isDescendantOfNode(
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
456 cvox.ChromeVox.navigationManager.getCurrentNode(), slideEls[curSlide])){
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
457 var target = slideEls[curSlide];
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
458 while (target.lastChild){
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
459 target = target.lastChild;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
460 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
461 cvox.ChromeVox.navigationManager.syncToNode(target);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
462 cvox.ChromeVox.navigationManager.previous(true);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
463 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
464 cvox.ChromeVoxUserCommands.finishNavCommand('');
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
465 };
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
466
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
467 /* Hash functions */
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
468
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
469 function getCurSlideFromHash() {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
470 var slideNo = parseInt(location.hash.substr(1));
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
471
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
472 if (slideNo) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
473 curSlide = slideNo - 1;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
474 } else {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
475 curSlide = 0;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
476 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
477 };
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
478
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
479 function updateHash() {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
480 location.replace('#' + (curSlide + 1));
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
481 };
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
482
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
483 /* Event listeners */
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
484
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
485 function handleBodyKeyDown(event) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
486 switch (event.keyCode) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
487 case 39: // right arrow
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
488 case 13: // Enter
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
489 case 32: // space
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
490 case 34: // PgDn
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
491 nextSlide();
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
492 event.preventDefault();
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
493 break;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
494
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
495 case 37: // left arrow
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
496 case 8: // Backspace
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
497 case 33: // PgUp
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
498 prevSlide();
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
499 event.preventDefault();
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
500 break;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
501
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
502 case 40: // down arrow
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
503 if (isChromeVoxActive()) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
504 speakNextItem();
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
505 } else {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
506 nextSlide();
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
507 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
508 event.preventDefault();
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
509 break;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
510
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
511 case 38: // up arrow
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
512 if (isChromeVoxActive()) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
513 speakPrevItem();
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
514 } else {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
515 prevSlide();
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
516 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
517 event.preventDefault();
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
518 break;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
519 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
520 };
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
521
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
522 function addEventListeners() {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
523 document.addEventListener('keydown', handleBodyKeyDown, false);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
524 };
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
525
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
526 /* Initialization */
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
527
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
528 function addPrettify() {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
529 var els = document.querySelectorAll('pre');
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
530 for (var i = 0, el; el = els[i]; i++) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
531 if (!el.classList.contains('noprettyprint')) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
532 el.classList.add('prettyprint');
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
533 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
534 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
535
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
536 var el = document.createElement('script');
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
537 el.type = 'text/javascript';
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
538 el.src = PERMANENT_URL_PREFIX + 'prettify.js';
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
539 el.onload = function() {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
540 prettyPrint();
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
541 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
542 document.body.appendChild(el);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
543 };
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
544
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
545 function addFontStyle() {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
546 /*
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
547 var el = document.createElement('link');
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
548 el.rel = 'stylesheet';
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
549 el.type = 'text/css';
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
550 el.href = 'http://fonts.googleapis.com/css?family=' +
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
551 'Open+Sans:regular,semibold,italic,italicsemibold|Droid+Sans+Mono';
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
552
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
553 document.body.appendChild(el);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
554 */
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
555 };
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
556
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
557 function addGeneralStyle() {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
558 var el = document.createElement('link');
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
559 el.rel = 'stylesheet';
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
560 el.type = 'text/css';
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
561 el.href = PERMANENT_URL_PREFIX + 'styles.css';
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
562 document.body.appendChild(el);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
563
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
564 var el = document.createElement('meta');
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
565 el.name = 'viewport';
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
566 el.content = 'width=1100,height=750';
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
567 document.querySelector('head').appendChild(el);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
568
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
569 var el = document.createElement('meta');
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
570 el.name = 'apple-mobile-web-app-capable';
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
571 el.content = 'yes';
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
572 document.querySelector('head').appendChild(el);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
573 };
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
574
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
575 function makeBuildLists() {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
576 for (var i = curSlide, slide; slide = slideEls[i]; i++) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
577 var items = slide.querySelectorAll('.build > *');
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
578 for (var j = 0, item; item = items[j]; j++) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
579 if (item.classList) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
580 item.classList.add('to-build');
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
581 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
582 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
583 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
584 };
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
585
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
586 function handleDomLoaded() {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
587 slideEls = document.querySelectorAll('section.slides > article');
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
588
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
589 setupFrames();
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
590
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
591 addFontStyle();
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
592 addGeneralStyle();
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
593 addPrettify();
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
594 addEventListeners();
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
595
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
596 updateSlides();
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
597
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
598 setupInteraction();
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
599 makeBuildLists();
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
600
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
601 document.body.classList.add('loaded');
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
602 };
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
603
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
604 function initialize() {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
605 getCurSlideFromHash();
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
606
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
607 if (window['_DEBUG']) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
608 PERMANENT_URL_PREFIX = '../';
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
609 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
610
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
611 if (window['_DCL']) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
612 handleDomLoaded();
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
613 } else {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
614 document.addEventListener('DOMContentLoaded', handleDomLoaded, false);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
615 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
616 }
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
617
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
618 // If ?debug exists then load the script relative instead of absolute
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
619 if (!window['_DEBUG'] && document.location.href.indexOf('?debug') !== -1) {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
620 document.addEventListener('DOMContentLoaded', function() {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
621 // Avoid missing the DomContentLoaded event
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
622 window['_DCL'] = true
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
623 }, false);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
624
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
625 window['_DEBUG'] = true;
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
626 var script = document.createElement('script');
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
627 script.type = 'text/javascript';
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
628 script.src = '../slides.js';
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
629 var s = document.getElementsByTagName('script')[0];
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
630 s.parentNode.insertBefore(script, s);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
631
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
632 // Remove this script
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
633 s.parentNode.removeChild(s);
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
634 } else {
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
635 initialize();
e5b70f7cd8a6 hg commit
Shoshi TAMAKI <shoshi@cr.ie.u-ryukyu.ac.jp>
parents:
diff changeset
636 }