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

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

... and the example collection (initial version)

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