source: main/trunk/model-sites-dev/mozarts-laptop/collect/digital-music-stand/script/musicstand-main.js@ 30456

Last change on this file since 30456 was 30456, checked in by davidb, 8 years ago

Changes to work with the newer direct-edit JS script that was put into Greenstone3

  • Property svn:executable set to *
File size: 7.6 KB
Line 
1
2var cgiGotoPage;
3if (gs.cgiParams["gp"]) {
4 cgiGotoPage = gs.cgiParams["gp"];
5}
6else {
7 cgiGotoPage = 1;
8}
9
10var expeditee;
11if (gs.cgiParams["expeditee"]) {
12 expeditee = true;
13}
14else {
15 expeditee = false;
16}
17
18
19var musicStand
20 = new MusicStand(httpdocument, gs.cgiParams["c"], gs.cgiParams["d"], gs.documentMetadata["assocfilepath"],
21 gs.cgiParams["numPages"], cgiGotoPage,
22 gs.cgiParams["pageWidth"], gs.cgiParams["pageHeight"],
23 gs.cgiParams["scaleFactor"]);
24
25musicStand.setStyleColors(gs.variables["postitBgCol"],gs.variables["postitSelCol"]);
26
27musicStand.setPagePrefix(gs.cgiParams["pagePrefix"]);
28musicStand.setPageSuffix(gs.cgiParams["pageSuffix"]);
29
30var annotate = new Annotate(gs.variables.httpCollectionImages);
31
32if (gs.userInformation && gs.userInformation.username) {
33 musicStand.setUsername(gs.username);
34 annotate.setUsername(gs.username);
35}
36
37// de.events.addLoadHandler(function()
38
39$(window).load(function(){
40 try {
41 bodyLoaded();
42 }
43 catch(err) {
44 alert("Failed to initialise: " + err.message);
45 }
46});
47
48
49function getElementsByClass(searchClassPrefix,node,tag) {
50
51 var classElements = new Array();
52 if ( node == null )
53 node = document;
54 if ( tag == null )
55 tag = '*';
56
57 if (node.getElementsByTagName) {
58 var els = node.getElementsByTagName(tag);
59
60 var elsLen = els.length;
61 var pattern = new RegExp('(^|\\s)'+searchClassPrefix);
62 for (var i = 0, j = 0; i < elsLen; i++) {
63 if ( pattern.test(els[i].className) ) {
64 classElements[j] = els[i];
65 j++;
66 }
67 }
68 }
69 return classElements;
70}
71
72
73
74var dotsTimer = null;
75var dotsDelta = 200;
76
77function dotsAnim(numDots)
78{
79 var dots = [ "", ".", "..", "..." ];
80
81 var dotSpan = document.getElementById('loadingdots');
82 dotSpan.innerHTML = "loading " + dots[numDots];
83
84 var nextNumDots = (numDots+1) %4;
85 dotsTimer = setTimeout("dotsAnim("+nextNumDots+")",dotsDelta);
86}
87
88
89function bodyLoaded()
90{
91 // load page 1
92 var thisPageImg = document.getElementById("thispageimg");
93
94 var thisPageUrl = musicStand.httpnextanim(gs.cgiParams["pagePrefix"],gs.cgiParams["pageSuffix"],musicStand.getPageNum());
95
96 var thisImg = document.createElement('img');
97 thisImg.onload = function (evt) {
98 //var annotateCanvasElem = document.getElementById("annotateCanvas");
99 //annotateCanvasElem.style.display = "none";
100
101 //annotate.loadAnnotations(musicStand.getDocOID());
102
103 var thisLoading = document.getElementById("loading");
104 thisLoading.style.display = "none";
105 if (dotsTimer != null) {
106 clearTimeout(dotsTimer);
107 }
108 thisPageImg.src = thisImg.src;
109
110 //annotateCanvasElem.style.display = "block";
111 }
112
113 // alert("url = " + thisPageUrl);
114
115 thisImg.src = thisPageUrl;
116 // thisPageImg.src = thisPageUrl;
117
118 // setup page 2 as next page
119 var nextPageImg = document.getElementById("nextpageimg");
120 var nextPageUrl = musicStand.httpnextanim(gs.cgiParams["pagePrefix"],gs.cgiParams["pageSuffix"],musicStand.getPageNum()+1);
121
122 var nextImg = document.createElement('img');
123 //nextImg.onload = function (evt) {
124 //nextPageImg.onload = function (evt) {
125 //
126 //}
127 nextPageImg.src = nextPageUrl;
128
129 // some browsers clear clip rectangle with new image => set it to what we need
130 var nextpagediv = document.getElementById("nextpagediv");
131 nextpagediv.style.clip = "rect(0px, "+gs.cgiParams["pageWidth"]+"px, "+gs.cgiParams["pageHeight"]+"px, "+gs.cgiParams["pageWidth"]+"px)";
132
133 var prevpagediv = document.getElementById("prevpagediv");
134 prevpagediv.style.clip = "rect(0px, "+gs.cgiParams["pageWidth"]+"px, "+gs.cgiParams["pageHeight"]+"px, "+gs.cgiParams["pageWidth"]+"px)";
135
136 var animedgebleed = document.getElementById("animedgebleed");
137 animedgebleed.style.clip = "rect(0px, "+gs.cgiParams["pageWidth"]+"px, "+gs.cgiParams["pageHeight"]+"px, "+gs.cgiParams["pageWidth"]+"px)";
138
139 // no previous page to set up
140
141 // start loading dots
142 dotsTimer = setTimeout("dotsAnim(0)",dotsDelta);
143
144
145 var thispage = document.getElementById("thispage");
146
147 //YAHOO.util.Event.addListener("thispage", 'mouseover', trackMouse);
148 // YAHOO.util.Event.addListener(document, 'mousemove', trackMouse);
149
150 //de.events.addMouseMoveHandler(trackMouse);
151 de.events.addHandler(document,"mousemove",trackMouse);
152
153 // de.events.prependMouseUpHandler(musicStand.pageMenu);
154
155 //YAHOO.util.Event.addListener(document, 'keydown', keyPress);
156
157 //de.events.prependKeyPressHandler(keyPress);
158 //de.events.addHandler(document,"keypress",keyPress);
159 de.events.addHandler(document,"keystroke",keyPress);
160}
161
162
163var sliderMoving = false;
164
165var prevOnMouseMove = null;
166var prevOnMouseUp = null;
167
168function dragSlider(evt)
169{
170 evt = evt || window.event;
171
172 evt.returnValue = false;
173 if (evt.preventDefault) evt.preventDefault();
174
175 sliderMoving = true;
176 moveSlider(evt);
177
178 prevOnMouseMove = document.onmousemove;
179 prevOnMouseUp = document.onmouseup;
180
181 document.onmousemove = moveSlider;
182 document.onmouseup = releaseSlider;
183}
184
185
186
187function moveSlider(evt)
188{
189 if (!sliderMoving) return;
190
191 evt = evt || window.event;
192
193 evt.returnValue = false;
194 if (evt.preventDefault) evt.preventDefault();
195
196 var mousePos = getMouseCoords(evt);
197
198 var sliderContainer = document.getElementById('slidercontainer');
199 var sliderContainerYTop = getAbsoluteTop(sliderContainer);
200 var sliderContainerHeight = getRectHeight(sliderContainer) -1;
201
202 var slider = document.getElementById('sliderpos');
203 var sliderHeight = getRectHeight(slider);
204
205 var halfSliderHeight = sliderHeight/2;
206 var newSliderTop = (mousePos.y - sliderContainerYTop) - halfSliderHeight;
207
208 if ((newSliderTop >= 0)
209 && (newSliderTop < (sliderContainerHeight-halfSliderHeight))) {
210 slider.style.top = newSliderTop + "px";
211 var speedBreak = newSliderTop;
212 musicStand.setSpeedBreak(speedBreak);
213
214 var trackabove = document.getElementById('slidertrackabove');
215 trackabove.style.height = speedBreak + "px";
216
217 var trackbelow = document.getElementById('slidertrackbelow');
218 trackbelow.style.top = speedBreak + "px";
219 trackbelow.style.height = (gs.cgiParams["pageHeight"] - speedBreak) + "px";
220
221 }
222
223}
224
225
226function releaseSlider(evt)
227{
228 if (!sliderMoving) return;
229
230 document.onmousemove = prevOnMouseMove;
231 document.onmouseup = prevOnMouseUp;
232
233 sliderMoving = false;
234
235 var slider = document.getElementById('sliderpos');
236 var sliderposTop = parseInt(slider.style.top);
237
238 if (sliderposTop>0) {
239 sliderposTop /= musicStand.getScaleFactor();
240 }
241
242
243 var docid = musicStand.getDocRoot() + "." + musicStand.getPageNum();
244
245 var username = musicStand.getUsername();
246 var metaname = (username!=null) ? username + "-sliderposTop" : "sliderposTop";
247 //gsapi.setLiveMetadata(docid,metaname,sliderposTop);
248 //alert("Need to set slider");
249}
250
251
252function updateSlider(sliderposTop)
253{
254 if (sliderposTop>0) {
255 sliderposTop *= musicStand.getScaleFactor();
256
257 }
258 var speedBreak = sliderposTop;
259 musicStand.setSpeedBreak(speedBreak);
260
261 var sliderpos = document.getElementById('sliderpos');
262 sliderpos.style.top = speedBreak + "px";
263 sliderpos.style.left = "-8px";
264
265 var trackabove = document.getElementById('slidertrackabove');
266 trackabove.style.height = speedBreak + "px";
267
268 var trackbelow = document.getElementById('slidertrackbelow');
269 trackbelow.style.top = speedBreak + "px";
270 trackbelow.style.height = (gs.cgiParams["pageHeight"] - speedBreak) + "px";
271}
272
Note: See TracBrowser for help on using the repository browser.