1 | var _imageZoomEnabled = false;
|
---|
2 | var _linkCellMap = new Array();
|
---|
3 | var _onCells = new Array();
|
---|
4 |
|
---|
5 | /* some vars for document editing */
|
---|
6 | /* if true, will look through all the metadata for the document, and add each namespace into the list of metadata sets. If set to false, will only add in the ones defined in setStaticMetadataSets function (defined below) - override this function to make a custom list of sets */
|
---|
7 | var dynamic_metadata_set_list = true;
|
---|
8 | /* if true, will make the editing controls stay visible even on page scrolling */
|
---|
9 | var keep_editing_controls_visible = true;
|
---|
10 | /* Here you can choose which save buttons you like. Choose from 'save', 'rebuild', 'saveandrebuild' */
|
---|
11 | var save_and_rebuild_buttons = ["saveandrebuild"];
|
---|
12 |
|
---|
13 | var save_button_text = "Save changes";
|
---|
14 | var rebuild_button_text = "Rebuild";
|
---|
15 | var save_and_rebuild_button_text = "Save and Rebuild";
|
---|
16 |
|
---|
17 | /*Array to store init states of metadata fields and text*/
|
---|
18 | var editableInitStates = new Array();
|
---|
19 | /*Array to store last states of metadata fields and text*/
|
---|
20 | var editableLastStates = new Array();
|
---|
21 |
|
---|
22 | /* What kind of metadata element selection do we provide?
|
---|
23 | plain: just a text input box
|
---|
24 | fixedlist: a drop down menu with a fixed list of options (provided by the availableMetadataElements list)
|
---|
25 | autocomplete: a text input box with a list of suggestions to choose from (provided by the availableMetadataElements list). Allows additional input other than the fixed list
|
---|
26 | */
|
---|
27 | var new_metadata_field_input_type = "plain";
|
---|
28 | /* Metadata elements to be used in the fixedlist/autocomplete options above */
|
---|
29 | var availableMetadataElements = ["dc.Title", "dc.Subject"];
|
---|
30 | /********************
|
---|
31 | * EXPANSION SCRIPTS *
|
---|
32 | ********************/
|
---|
33 |
|
---|
34 | function getTextForSection(sectionID, callback)
|
---|
35 | {
|
---|
36 | if(!callback)
|
---|
37 | {
|
---|
38 | console.log("Cannot get text as the callback function is not defined");
|
---|
39 | }
|
---|
40 |
|
---|
41 | var template = "";
|
---|
42 | template += '<xsl:template match="/">';
|
---|
43 | template += '<text>';
|
---|
44 | template += '<xsl:for-each select="/page/pageResponse/document//documentNode[@nodeID = \'' + sectionID + '\']">';
|
---|
45 | template += '<xsl:call-template name="sectionContent"/>';
|
---|
46 | template += '</xsl:for-each>';
|
---|
47 | template += '</text>';
|
---|
48 | template += '</xsl:template>';
|
---|
49 |
|
---|
50 | var hlCheckBox = document.getElementById("highlightOption");
|
---|
51 |
|
---|
52 | var hl = "";
|
---|
53 | if(hlCheckBox)
|
---|
54 | {
|
---|
55 | if(hlCheckBox.checked)
|
---|
56 | {
|
---|
57 | hl = "on";
|
---|
58 | }
|
---|
59 | else
|
---|
60 | {
|
---|
61 | hl = "off";
|
---|
62 | }
|
---|
63 | }
|
---|
64 |
|
---|
65 | var url = gs.xsltParams.library_name + "/collection/" + gs.cgiParams.c + "/document/" + sectionID + "?hl=" + hl + "&p.s=TextQuery&ilt=" + template.replace(" ", "%20");
|
---|
66 |
|
---|
67 | $.ajax(url)
|
---|
68 | .success(function(response)
|
---|
69 | {
|
---|
70 | if(response)
|
---|
71 | {
|
---|
72 | var textStart = response.indexOf(">", response.indexOf(">") + 1) + 1;
|
---|
73 | var textEnd = response.lastIndexOf("<");
|
---|
74 |
|
---|
75 | if(textStart == 0 || textEnd == -1 || textEnd <= textStart)
|
---|
76 | {
|
---|
77 | callback("");
|
---|
78 | }
|
---|
79 |
|
---|
80 | var text = response.substring(textStart, textEnd);
|
---|
81 | callback(text);
|
---|
82 | }
|
---|
83 | else
|
---|
84 | {
|
---|
85 | callback(null);
|
---|
86 | }
|
---|
87 | })
|
---|
88 | .error(function()
|
---|
89 | {
|
---|
90 | callback(null);
|
---|
91 | });
|
---|
92 | }
|
---|
93 |
|
---|
94 | function getSubSectionsForSection(sectionID, callback)
|
---|
95 | {
|
---|
96 | if(!callback)
|
---|
97 | {
|
---|
98 | console.log("Cannot get sub sections as the callback function is not defined");
|
---|
99 | }
|
---|
100 |
|
---|
101 | var template = "";
|
---|
102 | template += '<xsl:template match="/">';
|
---|
103 | template += '<sections>';
|
---|
104 | template += '<xsl:for-each select="/page/pageResponse/document//documentNode[@nodeID = \'' + sectionID + '\']/documentNode">';
|
---|
105 | template += '<xsl:call-template name="wrapDocumentNodes"/>';
|
---|
106 | template += '</xsl:for-each>';
|
---|
107 | template += '</sections>';
|
---|
108 | template += '</xsl:template>';
|
---|
109 |
|
---|
110 | var url = gs.xsltParams.library_name + "/collection/" + gs.cgiParams.c + "/document/" + sectionID + "?ilt=" + template.replace(" ", "%20");
|
---|
111 |
|
---|
112 | if(gs.documentMetadata.docType == "paged")
|
---|
113 | {
|
---|
114 | url += "&dt=hierarchy";
|
---|
115 | }
|
---|
116 |
|
---|
117 | $.ajax(url)
|
---|
118 | .success(function(response)
|
---|
119 | {
|
---|
120 | if(response)
|
---|
121 | {
|
---|
122 | var sectionsStart = response.indexOf(">", response.indexOf(">") + 1) + 1;
|
---|
123 | var sectionsEnd = response.lastIndexOf("<");
|
---|
124 |
|
---|
125 | if(sectionsStart == 0 || sectionsEnd == -1 || sectionsEnd <= sectionsStart)
|
---|
126 | {
|
---|
127 | callback(" ");
|
---|
128 | return;
|
---|
129 | }
|
---|
130 |
|
---|
131 | var sections = response.substring(sectionsStart, sectionsEnd);
|
---|
132 | callback(sections);
|
---|
133 | }
|
---|
134 | else
|
---|
135 | {
|
---|
136 | callback(null);
|
---|
137 | }
|
---|
138 | })
|
---|
139 | .error(function()
|
---|
140 | {
|
---|
141 | callback(null);
|
---|
142 | });
|
---|
143 | }
|
---|
144 |
|
---|
145 | function toggleSection(sectionID, callback, tocDisabled)
|
---|
146 | {
|
---|
147 | var docElem = gs.jqGet("doc" + sectionID);
|
---|
148 | var tocElem = gs.jqGet("toc" + sectionID);
|
---|
149 |
|
---|
150 | var tocToggleElem = gs.jqGet("ttoggle" + sectionID);
|
---|
151 | var docToggleElem = gs.jqGet("dtoggle" + sectionID);
|
---|
152 |
|
---|
153 | if(docElem.css("display") == "none")
|
---|
154 | {
|
---|
155 | if(tocToggleElem.length && !tocDisabled)
|
---|
156 | {
|
---|
157 | tocToggleElem.attr("src", gs.imageURLs.collapse);
|
---|
158 | }
|
---|
159 |
|
---|
160 | if(tocElem.length && !tocDisabled)
|
---|
161 | {
|
---|
162 | tocElem.css("display", "block");
|
---|
163 | }
|
---|
164 |
|
---|
165 | if(docElem.hasClass("noText"))
|
---|
166 | {
|
---|
167 | getTextForSection(sectionID, function(text)
|
---|
168 | {
|
---|
169 | if(text)
|
---|
170 | {
|
---|
171 | var nodeID = sectionID.replace(/\./g, "_");
|
---|
172 | if(text.search("wrap" + nodeID) != -1)
|
---|
173 | {
|
---|
174 | $("#zoomOptions").css("display", "");
|
---|
175 | $("#pagedImageOptions").css("display", "");
|
---|
176 | }
|
---|
177 | getSubSectionsForSection(sectionID, function(sections)
|
---|
178 | {
|
---|
179 | if(sections)
|
---|
180 | {
|
---|
181 | var textElem = gs.jqGet("doc" + sectionID);
|
---|
182 | textElem.html(text + sections);
|
---|
183 |
|
---|
184 | docElem.removeClass("noText");
|
---|
185 | docElem.css("display", "block");
|
---|
186 | docToggleElem.attr("src", gs.imageURLs.collapse);
|
---|
187 |
|
---|
188 | if(callback)
|
---|
189 | {
|
---|
190 | callback(true);
|
---|
191 | }
|
---|
192 |
|
---|
193 | if(gs.jqGet("viewSelection").length)
|
---|
194 | {
|
---|
195 | changeView();
|
---|
196 | }
|
---|
197 | }
|
---|
198 | else
|
---|
199 | {
|
---|
200 | docToggleElem.attr("src", gs.imageURLs.expand);
|
---|
201 | if(callback)
|
---|
202 | {
|
---|
203 | callback(false);
|
---|
204 | }
|
---|
205 | }
|
---|
206 | });
|
---|
207 | }
|
---|
208 | else
|
---|
209 | {
|
---|
210 | docToggleElem.attr("src", gs.imageURLs.expand);
|
---|
211 | if(callback)
|
---|
212 | {
|
---|
213 | callback(false);
|
---|
214 | }
|
---|
215 | }
|
---|
216 | });
|
---|
217 |
|
---|
218 | docToggleElem.attr("src", gs.imageURLs.loading);
|
---|
219 | }
|
---|
220 | else
|
---|
221 | {
|
---|
222 | docToggleElem.attr("src", gs.imageURLs.collapse);
|
---|
223 | docElem.css("display", "block");
|
---|
224 |
|
---|
225 | if(callback)
|
---|
226 | {
|
---|
227 | callback(true);
|
---|
228 | }
|
---|
229 | }
|
---|
230 | }
|
---|
231 | else
|
---|
232 | {
|
---|
233 | docElem.css("display", "none");
|
---|
234 |
|
---|
235 | //Use the page image if this is a leaf node and the chapter image if it not
|
---|
236 | docToggleElem.attr("src", gs.imageURLs.expand);
|
---|
237 |
|
---|
238 | if(tocToggleElem.length)
|
---|
239 | {
|
---|
240 | tocToggleElem.attr("src", gs.imageURLs.expand);
|
---|
241 | }
|
---|
242 |
|
---|
243 | if(tocElem.length)
|
---|
244 | {
|
---|
245 | tocElem.css("display", "none");
|
---|
246 | }
|
---|
247 |
|
---|
248 | if(callback)
|
---|
249 | {
|
---|
250 | callback(true);
|
---|
251 | }
|
---|
252 | }
|
---|
253 | }
|
---|
254 |
|
---|
255 | function scrollToTop()
|
---|
256 | {
|
---|
257 | $('html, body').stop().animate({scrollTop: 0}, 1000);
|
---|
258 | }
|
---|
259 |
|
---|
260 | function focusSection(sectionID, level, tocDisabled)
|
---|
261 | {
|
---|
262 | if(!level)
|
---|
263 | {
|
---|
264 | level = 0;
|
---|
265 | }
|
---|
266 |
|
---|
267 | var parts = sectionID.split(".");
|
---|
268 | if(level >= parts.length)
|
---|
269 | {
|
---|
270 | var topVal = $(document.getElementById("doc" + sectionID)).offset().top - 50;
|
---|
271 | $('html, body').stop().animate({scrollTop: topVal}, 1000);
|
---|
272 | return;
|
---|
273 | }
|
---|
274 |
|
---|
275 | var idToExpand = "";
|
---|
276 | for(var i = 0; i < level + 1; i++)
|
---|
277 | {
|
---|
278 | if(i > 0)
|
---|
279 | {
|
---|
280 | idToExpand += ".";
|
---|
281 | }
|
---|
282 |
|
---|
283 | idToExpand += parts[i];
|
---|
284 | }
|
---|
285 |
|
---|
286 | if(!isExpanded(idToExpand))
|
---|
287 | {
|
---|
288 | toggleSection(idToExpand, function(success)
|
---|
289 | {
|
---|
290 | if(success)
|
---|
291 | {
|
---|
292 | focusSection(sectionID, level + 1, tocDisabled);
|
---|
293 | }
|
---|
294 | }, tocDisabled);
|
---|
295 | }
|
---|
296 | else
|
---|
297 | {
|
---|
298 | focusSection(sectionID, level + 1, tocDisabled);
|
---|
299 | }
|
---|
300 | }
|
---|
301 |
|
---|
302 | function expandOrCollapseAll(expand)
|
---|
303 | {
|
---|
304 | var divs = $("div");
|
---|
305 | var startCounter = 0;
|
---|
306 | var endCounter = 0;
|
---|
307 |
|
---|
308 | for(var i = 0; i < divs.length; i++)
|
---|
309 | {
|
---|
310 | if($(divs[i]).attr("id") && $(divs[i]).attr("id").search(/^doc/) != -1)
|
---|
311 | {
|
---|
312 | var id = $(divs[i]).attr("id").replace(/^doc(.*)/, "$1");
|
---|
313 | if(isExpanded(id) != expand)
|
---|
314 | {
|
---|
315 | //Don't collapse the top level
|
---|
316 | if(!expand && id.indexOf(".") == -1)
|
---|
317 | {
|
---|
318 | continue;
|
---|
319 | }
|
---|
320 | startCounter++;
|
---|
321 |
|
---|
322 | var toggleFunction = function(tid)
|
---|
323 | {
|
---|
324 | toggleSection(tid, function(success)
|
---|
325 | {
|
---|
326 | if(success)
|
---|
327 | {
|
---|
328 | endCounter++;
|
---|
329 | }
|
---|
330 | else
|
---|
331 | {
|
---|
332 | setTimeout(function(){toggleFunction(tid)}, 500);
|
---|
333 | }
|
---|
334 | });
|
---|
335 | }
|
---|
336 | toggleFunction(id);
|
---|
337 | }
|
---|
338 | }
|
---|
339 | }
|
---|
340 |
|
---|
341 | if(startCounter != 0)
|
---|
342 | {
|
---|
343 | var checkFunction = function()
|
---|
344 | {
|
---|
345 | if(startCounter == endCounter)
|
---|
346 | {
|
---|
347 | expandOrCollapseAll(expand);
|
---|
348 | }
|
---|
349 | else
|
---|
350 | {
|
---|
351 | setTimeout(checkFunction, 500);
|
---|
352 | }
|
---|
353 | }
|
---|
354 | checkFunction();
|
---|
355 | }
|
---|
356 | }
|
---|
357 |
|
---|
358 | function loadTopLevelPage(callbackFunction, customURL)
|
---|
359 | {
|
---|
360 | var url;
|
---|
361 | if(customURL)
|
---|
362 | {
|
---|
363 | url = customURL;
|
---|
364 | }
|
---|
365 | else
|
---|
366 | {
|
---|
367 | url = gs.xsltParams.library_name + "?a=d&c=" + gs.cgiParams.c + "&excerptid=gs-document";
|
---|
368 | if(gs.cgiParams.d && gs.cgiParams.d.length > 0)
|
---|
369 | {
|
---|
370 | url += "&d=" + gs.cgiParams.d.replace(/([^.]*)\..*/, "$1");
|
---|
371 | }
|
---|
372 | else if(gs.cgiParams.href && gs.cgiParams.href.length > 0)
|
---|
373 | {
|
---|
374 | url += "&d=&alb=1&rl=1&href=" + gs.cgiParams.href;
|
---|
375 | }
|
---|
376 | }
|
---|
377 |
|
---|
378 | $.ajax(url)
|
---|
379 | .success(function(response)
|
---|
380 | {
|
---|
381 | if(response)
|
---|
382 | {
|
---|
383 | var targetElem = $("#gs-document");
|
---|
384 | var docStart = response.indexOf(">") + 1;
|
---|
385 | var docEnd = response.lastIndexOf("<");
|
---|
386 | var doc = response.substring(docStart, docEnd);
|
---|
387 |
|
---|
388 | targetElem.html(doc);
|
---|
389 |
|
---|
390 | if(callbackFunction)
|
---|
391 | {
|
---|
392 | callbackFunction();
|
---|
393 | }
|
---|
394 | }
|
---|
395 | })
|
---|
396 | .error(function()
|
---|
397 | {
|
---|
398 | setTimeout(function(){loadTopLevelPage(callbackFunction, customURL);}, 1000);
|
---|
399 | });
|
---|
400 | }
|
---|
401 |
|
---|
402 | function retrieveFullTableOfContents()
|
---|
403 | {
|
---|
404 | var url = gs.xsltParams.library_name + "/collection/" + gs.cgiParams.c + "?excerptid=tableOfContents&ed=1";
|
---|
405 | if(gs.cgiParams.d && gs.cgiParams.d.length > 0)
|
---|
406 | {
|
---|
407 | url += "&a=d&d=" + gs.cgiParams.d;
|
---|
408 | }
|
---|
409 | else if(gs.cgiParams.href && gs.cgiParams.href.length > 0)
|
---|
410 | {
|
---|
411 | url += "&a=d&d=&alb=1&rl=1&href=" + gs.cgiParams.href;
|
---|
412 | }
|
---|
413 |
|
---|
414 | $.ajax(url)
|
---|
415 | .success(function(newTOCElem)
|
---|
416 | {
|
---|
417 | var tocStart = newTOCElem.indexOf(">") + 1;
|
---|
418 | var tocEnd = newTOCElem.lastIndexOf("<");
|
---|
419 |
|
---|
420 | var newTOC = newTOCElem.substring(tocStart, tocEnd);
|
---|
421 |
|
---|
422 | //Add the "Expand document"/"Collapse document" links
|
---|
423 | newTOC = "<table style=\"width:100%; text-align:center;\"><tr><td><a href=\"javascript:expandOrCollapseAll(true);\">Expand document</a></td><td><a href=\"javascript:expandOrCollapseAll(false);\">Collapse document</a></td></tr></table>" + newTOC;
|
---|
424 |
|
---|
425 | //Collapse the TOC
|
---|
426 | newTOC = newTOC.replace(/display:block/g, "display:none");
|
---|
427 | newTOC = newTOC.replace(/display:none/, "display:block");
|
---|
428 | newTOC = newTOC.replace(/images\/collapse/g, "images/expand");
|
---|
429 |
|
---|
430 | var tocElem = $("#tableOfContents");
|
---|
431 | tocElem.html(newTOC);
|
---|
432 |
|
---|
433 | gs.variables.tocLoaded = true;
|
---|
434 | })
|
---|
435 | .error(function()
|
---|
436 | {
|
---|
437 | setTimeout(retrieveFullTableOfContents, 1000);
|
---|
438 | });
|
---|
439 | }
|
---|
440 |
|
---|
441 | function isExpanded(sectionID)
|
---|
442 | {
|
---|
443 | var docElem = gs.jqGet("doc" + sectionID);
|
---|
444 | if(docElem.css("display") == "block")
|
---|
445 | {
|
---|
446 | return true;
|
---|
447 | }
|
---|
448 | return false;
|
---|
449 | }
|
---|
450 |
|
---|
451 | function minimizeSidebar()
|
---|
452 | {
|
---|
453 | var toc = $("#contentsArea");
|
---|
454 | var maxLink = $("#sidebarMaximizeButton");
|
---|
455 | var minLink = $("#sidebarMinimizeButton");
|
---|
456 |
|
---|
457 | if(toc.length)
|
---|
458 | {
|
---|
459 | toc.css("display", "none");
|
---|
460 | }
|
---|
461 |
|
---|
462 | maxLink.css("display", "block");
|
---|
463 | minLink.css("display", "none");
|
---|
464 | }
|
---|
465 |
|
---|
466 | function maximizeSidebar()
|
---|
467 | {
|
---|
468 | var coverImage = $("#coverImage");
|
---|
469 | var toc = $("#contentsArea");
|
---|
470 | var maxLink = $("#sidebarMaximizeButton");
|
---|
471 | var minLink = $("#sidebarMinimizeButton");
|
---|
472 |
|
---|
473 | if(coverImage.length)
|
---|
474 | {
|
---|
475 | coverImage.css("display", "block");
|
---|
476 | }
|
---|
477 |
|
---|
478 | if(toc.length)
|
---|
479 | {
|
---|
480 | toc.css("display", "block");
|
---|
481 | }
|
---|
482 |
|
---|
483 | maxLink.css("display", "none");
|
---|
484 | minLink.css("display", "block");
|
---|
485 | }
|
---|
486 |
|
---|
487 | function extractFilteredPagesToOwnDocument()
|
---|
488 | {
|
---|
489 | var oids = new Array();
|
---|
490 | var filtered = $(".pageSliderCol:visible a").each(function()
|
---|
491 | {
|
---|
492 | var hrefString = $(this).attr("href");
|
---|
493 | var oidStart = hrefString.indexOf(".") + 1;
|
---|
494 | var oidFinish = hrefString.indexOf("'", oidStart + 1);
|
---|
495 |
|
---|
496 | oids.push(hrefString.substring(oidStart, oidFinish));
|
---|
497 | });
|
---|
498 |
|
---|
499 | var sectionString = "[";
|
---|
500 | for(var i = 0; i < oids.length; i++)
|
---|
501 | {
|
---|
502 | sectionString += "\"" + oids[i] + "\"";
|
---|
503 | if(i < oids.length - 1)
|
---|
504 | {
|
---|
505 | sectionString += ",";
|
---|
506 | }
|
---|
507 | }
|
---|
508 | sectionString += "]";
|
---|
509 |
|
---|
510 | var url = "cgi-bin/document-extract.pl?a=extract-archives-doc&c=" + gs.cgiParams.c + "&d=" + gs.cgiParams.d + "&json-sections=" + sectionString + "&site=" + gs.xsltParams.site_name;// + "&json-metadata=[{"metaname":"dc.Title","metavalue":"All Black Rugy Success","metamode":"accumulate"]"
|
---|
511 | $("#extractDocButton").attr("disabled", "disabled").html("Exracting document...");
|
---|
512 | $.ajax(url)
|
---|
513 | .success(function(response)
|
---|
514 | {
|
---|
515 | $("#extractDocButton").html("Building collection...");
|
---|
516 | gs.functions.buildCollections([gs.cgiParams.c], function()
|
---|
517 | {
|
---|
518 | $("#extractDocButton").removeAttr("disabled").html("Extract these pages to document");
|
---|
519 | });
|
---|
520 | })
|
---|
521 | .error(function()
|
---|
522 | {
|
---|
523 | $("#extractDocButton").removeAttr("disabled").html("Extract these pages to document");
|
---|
524 | });
|
---|
525 | }
|
---|
526 |
|
---|
527 | /**********************
|
---|
528 | * PAGED-IMAGE SCRIPTS *
|
---|
529 | **********************/
|
---|
530 |
|
---|
531 | function changeView()
|
---|
532 | {
|
---|
533 | var viewList = $("#viewSelection");
|
---|
534 | var currentVal = viewList.val();
|
---|
535 |
|
---|
536 | var view;
|
---|
537 | if(currentVal == "Image view")
|
---|
538 | {
|
---|
539 | setImageVisible(true);
|
---|
540 | setTextVisible(false);
|
---|
541 | view = "image";
|
---|
542 | }
|
---|
543 | else if(currentVal == "Text view")
|
---|
544 | {
|
---|
545 | setImageVisible(false);
|
---|
546 | setTextVisible(true);
|
---|
547 | view = "text";
|
---|
548 | }
|
---|
549 | else
|
---|
550 | {
|
---|
551 | setImageVisible(true);
|
---|
552 | setTextVisible(true);
|
---|
553 | view = "";
|
---|
554 | }
|
---|
555 |
|
---|
556 | var url = gs.xsltParams.library_name + "?a=d&view=" + view + "&c=" + gs.cgiParams.c;
|
---|
557 | $.ajax(url);
|
---|
558 | }
|
---|
559 |
|
---|
560 | function setImageVisible(visible)
|
---|
561 | {
|
---|
562 | $("div").each(function()
|
---|
563 | {
|
---|
564 | if($(this).attr("id") && $(this).attr("id").search(/^image/) != -1)
|
---|
565 | {
|
---|
566 | $(this).css("display", (visible ? "block" : "none"));
|
---|
567 | }
|
---|
568 | });
|
---|
569 | }
|
---|
570 |
|
---|
571 | function setTextVisible(visible)
|
---|
572 | {
|
---|
573 | $("div").each(function()
|
---|
574 | {
|
---|
575 | if($(this).attr("id") && $(this).attr("id").search(/^text/) != -1)
|
---|
576 | {
|
---|
577 | $(this).css("display", (visible ? "block" : "none"));
|
---|
578 | }
|
---|
579 | });
|
---|
580 | }
|
---|
581 |
|
---|
582 | function retrieveTableOfContentsAndTitles()
|
---|
583 | {
|
---|
584 | var ilt = "";
|
---|
585 | ilt += '<xsl:template match="/">';
|
---|
586 | ilt += '<xsl:for-each select="/page/pageResponse/document/documentNode">';
|
---|
587 | ilt += '<xsl:call-template name="documentNodeTOC"/>';
|
---|
588 | ilt += '</xsl:for-each>';
|
---|
589 | ilt += '</xsl:template>';
|
---|
590 |
|
---|
591 | var url = gs.xsltParams.library_name + "?a=d&ed=1&c=" + gs.cgiParams.c + "&d=" + gs.cgiParams.d + "&ilt=" + ilt.replace(/ /g, "%20");
|
---|
592 |
|
---|
593 | $.ajax(url)
|
---|
594 | .success(function(response)
|
---|
595 | {
|
---|
596 | $("#tableOfContents").html(response);
|
---|
597 | replaceLinksWithSlider();
|
---|
598 | var loading = $("#tocLoadingImage");
|
---|
599 | loading.remove();
|
---|
600 | })
|
---|
601 | .error(function()
|
---|
602 | {
|
---|
603 | setTimeout(function(){retrieveTableOfContentsAndTitles();}, 1000);
|
---|
604 | });
|
---|
605 | }
|
---|
606 |
|
---|
607 | function replaceLinksWithSlider()
|
---|
608 | {
|
---|
609 | var tableOfContents = $("#tableOfContents");
|
---|
610 |
|
---|
611 | var leafSections = new Array();
|
---|
612 | var liElems = tableOfContents.find("li").each(function()
|
---|
613 | {
|
---|
614 | var section = $(this);
|
---|
615 | var add = true;
|
---|
616 | for(var j = 0; j < leafSections.length; j++)
|
---|
617 | {
|
---|
618 | if(leafSections[j] == undefined){continue;}
|
---|
619 |
|
---|
620 | var leaf = $(leafSections[j]);
|
---|
621 | if(leaf.attr("id").search(section.attr("id")) != -1)
|
---|
622 | {
|
---|
623 | add = false;
|
---|
624 | }
|
---|
625 |
|
---|
626 | if(section.attr("id").search(leaf.attr("id")) != -1)
|
---|
627 | {
|
---|
628 | delete leafSections[j];
|
---|
629 | }
|
---|
630 | }
|
---|
631 |
|
---|
632 | if(add)
|
---|
633 | {
|
---|
634 | leafSections.push(section);
|
---|
635 | }
|
---|
636 | });
|
---|
637 |
|
---|
638 | for(var i = 0 ; i < leafSections.length; i++)
|
---|
639 | {
|
---|
640 | if(leafSections[i] == undefined){continue;}
|
---|
641 |
|
---|
642 | leafSections[i].css("display", "none");
|
---|
643 | var links = leafSections[i].find("a");
|
---|
644 |
|
---|
645 | var widget = new SliderWidget(links);
|
---|
646 | leafSections[i].before(widget.getElem());
|
---|
647 | }
|
---|
648 |
|
---|
649 | //Disable all TOC toggles
|
---|
650 | var imgs = $("img").each(function()
|
---|
651 | {
|
---|
652 | var currentImage = $(this);
|
---|
653 | if(currentImage.attr("id") && currentImage.attr("id").search(/^ttoggle/) != -1)
|
---|
654 | {
|
---|
655 | currentImage.attr("onclick", "");
|
---|
656 | currentImage.click(function()
|
---|
657 | {
|
---|
658 | var sliderDiv = currentImage.parents("table").first().next();
|
---|
659 | if(sliderDiv.is(":visible"))
|
---|
660 | {
|
---|
661 | sliderDiv.hide();
|
---|
662 | }
|
---|
663 | else
|
---|
664 | {
|
---|
665 | sliderDiv.show();
|
---|
666 | }
|
---|
667 | });
|
---|
668 | }
|
---|
669 | else if(currentImage.attr("id") && currentImage.attr("id").search(/^dtoggle/) != -1)
|
---|
670 | {
|
---|
671 | currentImage.attr("onclick", currentImage.attr("onclick").replace(/\)/, ", null, true)"));
|
---|
672 | }
|
---|
673 | });
|
---|
674 | }
|
---|
675 |
|
---|
676 | function SliderWidget(_links)
|
---|
677 | {
|
---|
678 | //****************
|
---|
679 | //MEMBER VARIABLES
|
---|
680 | //****************
|
---|
681 |
|
---|
682 | //The container for the widget
|
---|
683 | var _mainDiv = $("<div>");
|
---|
684 | _mainDiv.attr("class", "ui-widget-content pageSlider");
|
---|
685 |
|
---|
686 | //The table of images
|
---|
687 | var _linkTable = $("<table>");
|
---|
688 | _mainDiv.append(_linkTable);
|
---|
689 |
|
---|
690 | //The image row of the table
|
---|
691 | var _linkRow = $("<tr>");
|
---|
692 | _linkTable.append(_linkRow);
|
---|
693 |
|
---|
694 | //The list of titles we can search through
|
---|
695 | var _titles = new Array();
|
---|
696 |
|
---|
697 | //Keep track of the slider position
|
---|
698 | var _prevScroll = 0;
|
---|
699 |
|
---|
700 | //****************
|
---|
701 | //PUBLIC FUNCTIONS
|
---|
702 | //****************
|
---|
703 |
|
---|
704 | //Function that returns the widget element
|
---|
705 | this.getElem = function()
|
---|
706 | {
|
---|
707 | return _mainDiv;
|
---|
708 | }
|
---|
709 |
|
---|
710 | //*****************
|
---|
711 | //PRIVATE FUNCTIONS
|
---|
712 | //*****************
|
---|
713 |
|
---|
714 | var setUpFilterBox = function()
|
---|
715 | {
|
---|
716 | var filter = $("#filterText");
|
---|
717 | filter.keyup(function()
|
---|
718 | {
|
---|
719 | var fullValue = filter.val();
|
---|
720 | var values = fullValue.split(",");
|
---|
721 |
|
---|
722 | var matchingTitles = new Array();
|
---|
723 |
|
---|
724 | for (var l = 0; l < values.length; l++)
|
---|
725 | {
|
---|
726 | var currentValue = values[l].replace(/^ +/g, "").replace(/ +$/g, "");
|
---|
727 | var isRange = (currentValue.search(/\d+-\d+/) != -1)
|
---|
728 |
|
---|
729 | var found = false;
|
---|
730 | for(var i = 0; i < _titles.length; i++)
|
---|
731 | {
|
---|
732 | if(_titles[i][0] == currentValue)
|
---|
733 | {
|
---|
734 | found = true;
|
---|
735 | }
|
---|
736 | }
|
---|
737 |
|
---|
738 | if(!found && isRange)
|
---|
739 | {
|
---|
740 | var firstNumber = currentValue.replace(/(\d+)-\d+/, "$1");
|
---|
741 | var secondNumber = currentValue.replace(/\d+-(\d+)/, "$1");
|
---|
742 |
|
---|
743 | if(firstNumber <= secondNumber)
|
---|
744 | {
|
---|
745 | for(var i = firstNumber; i <= secondNumber; i++)
|
---|
746 | {
|
---|
747 | var numString = i + "";
|
---|
748 | for(var j = 0; j < _titles.length; j++)
|
---|
749 | {
|
---|
750 | var currentTitle = _titles[j];
|
---|
751 | if(currentTitle[0].search(numString) != -1)
|
---|
752 | {
|
---|
753 | matchingTitles.push(currentTitle);
|
---|
754 | }
|
---|
755 | }
|
---|
756 | }
|
---|
757 | }
|
---|
758 | }
|
---|
759 | else
|
---|
760 | {
|
---|
761 | for(var i = 0; i < _titles.length; i++)
|
---|
762 | {
|
---|
763 | var currentTitle = _titles[i];
|
---|
764 | if(currentTitle[0].search(currentValue.replace(/\./g, "\\.")) != -1)
|
---|
765 | {
|
---|
766 | matchingTitles.push(currentTitle);
|
---|
767 | }
|
---|
768 | }
|
---|
769 | }
|
---|
770 | }
|
---|
771 |
|
---|
772 | for(var i = 0; i < _titles.length; i++)
|
---|
773 | {
|
---|
774 | $(_titles[i][1].cell).css("display", "none");
|
---|
775 | }
|
---|
776 |
|
---|
777 | for(var i = 0; i < matchingTitles.length; i++)
|
---|
778 | {
|
---|
779 | $(matchingTitles[i][1].cell).css("display", "table-cell");
|
---|
780 | }
|
---|
781 | });
|
---|
782 | }
|
---|
783 |
|
---|
784 | var getImage = function(page, attemptNumber)
|
---|
785 | {
|
---|
786 | var href = page.getAttribute("href");
|
---|
787 | var startHREF = href.indexOf("'") + 1;
|
---|
788 | var endHREF = href.indexOf("'", startHREF);
|
---|
789 | var nodeID = href.substring(startHREF, endHREF);
|
---|
790 | href = gs.xsltParams.library_name + "/collection/" + gs.cgiParams.c + "/document/" + nodeID;
|
---|
791 |
|
---|
792 | var template = '';
|
---|
793 | template += '<xsl:template match="/">';
|
---|
794 | template += '<gsf:metadata name=\"Thumb\"/>';
|
---|
795 | template += '<html>';
|
---|
796 | template += '<img>';
|
---|
797 | template += '<xsl:attribute name="src">';
|
---|
798 | template += "<xsl:value-of disable-output-escaping=\"yes\" select=\"/page/pageResponse/collection/metadataList/metadata[@name = 'httpPath']\"/>";
|
---|
799 | template += '<xsl:text>/index/assoc/</xsl:text>';
|
---|
800 | template += "<xsl:value-of disable-output-escaping=\"yes\" select=\"/page/pageResponse/document/metadataList/metadata[@name = 'assocfilepath']\"/>";
|
---|
801 | template += '<xsl:text>/</xsl:text>';
|
---|
802 | template += "<xsl:value-of disable-output-escaping=\"yes\" select=\"/page/pageResponse/document//documentNode[@nodeID = '" + nodeID + "']/metadataList/metadata[@name = 'Thumb']\"/>";
|
---|
803 | template += '</xsl:attribute>';
|
---|
804 | template += '</img>';
|
---|
805 | template += '<p>';
|
---|
806 | template += "<xsl:value-of disable-output-escaping=\"yes\" select=\"/page/pageResponse/document/documentNode/metadataList/metadata[@name = 'Title']\"/>";
|
---|
807 | template += '</p>';
|
---|
808 | template += '</html>';
|
---|
809 | template += '</xsl:template>';
|
---|
810 |
|
---|
811 | var url = href + "?ilt=" + template.replace(" ", "%20");
|
---|
812 | $.ajax(url)
|
---|
813 | .success(function(text)
|
---|
814 | {
|
---|
815 | var hrefStart = text.indexOf("src=\"") + 5;
|
---|
816 | if(hrefStart == -1)
|
---|
817 | {
|
---|
818 | page.isLoading = false;
|
---|
819 | page.noImage = true;
|
---|
820 | $(page.image).attr("src", gs.imageURLs.blank);
|
---|
821 | return;
|
---|
822 | }
|
---|
823 | var hrefEnd = text.indexOf("\"", hrefStart);
|
---|
824 | var href = text.substring(hrefStart, hrefEnd);
|
---|
825 |
|
---|
826 | var image = $("<img>");
|
---|
827 | image.load(function()
|
---|
828 | {
|
---|
829 | $(page.link).html("");
|
---|
830 | $(page.link).append(image);
|
---|
831 | page.isLoading = false;
|
---|
832 | page.imageLoaded = true;
|
---|
833 | });
|
---|
834 | image.error(function()
|
---|
835 | {
|
---|
836 | if(!attemptNumber || attemptNumber < 3)
|
---|
837 | {
|
---|
838 | setTimeout(function(){getImage(page, ((!attemptNumber) ? 1 : attemptNumber + 1));}, 500);
|
---|
839 | }
|
---|
840 | else
|
---|
841 | {
|
---|
842 | page.isLoading = false;
|
---|
843 | page.noImage = true;
|
---|
844 | image.attr("src", gs.imageURLs.blank);
|
---|
845 | }
|
---|
846 | });
|
---|
847 | image.attr("src", href);
|
---|
848 |
|
---|
849 | var titleStart = text.indexOf("<p>") + 3;
|
---|
850 | var titleEnd = text.indexOf("</p>");
|
---|
851 | var title = text.substring(titleStart, titleEnd);
|
---|
852 | })
|
---|
853 | .error(function()
|
---|
854 | {
|
---|
855 | page.failed = true;
|
---|
856 | if(!attemptNumber || attemptNumber < 3)
|
---|
857 | {
|
---|
858 | setTimeout(function(){getImage(page, ((!attemptNumber) ? 1 : attemptNumber + 1));}, 500);
|
---|
859 | }
|
---|
860 | else
|
---|
861 | {
|
---|
862 | var image = $("<img>", {"src": gs.imageURLs.blank});
|
---|
863 | $(page.link).html("");
|
---|
864 | $(page.link).append(image);
|
---|
865 | page.isLoading = false;
|
---|
866 | page.noImage = true;
|
---|
867 | }
|
---|
868 | });
|
---|
869 | }
|
---|
870 |
|
---|
871 | var startCheckFunction = function()
|
---|
872 | {
|
---|
873 | var checkFunction = function(forced)
|
---|
874 | {
|
---|
875 | //Don't bother checking if we haven't scrolled very far
|
---|
876 | if(Math.abs(_mainDiv.scrollLeft() - _prevScroll) > 100 || forced)
|
---|
877 | {
|
---|
878 | _prevScroll = _mainDiv.scrollLeft();
|
---|
879 | _checking = true;
|
---|
880 | var widgetLeft = _mainDiv.offset().left;
|
---|
881 | var widgetRight = widgetLeft + _mainDiv.width();
|
---|
882 |
|
---|
883 | var visiblePages = new Array();
|
---|
884 | for(var i = 0; i < _links.length; i++)
|
---|
885 | {
|
---|
886 | var current = _links[i].cell;
|
---|
887 | var currentLeft = current.offset().left;
|
---|
888 | var currentRight = currentLeft + current.width();
|
---|
889 |
|
---|
890 | if(currentRight > widgetLeft && currentLeft < widgetRight)
|
---|
891 | {
|
---|
892 | visiblePages.push(_links[i]);
|
---|
893 | }
|
---|
894 | }
|
---|
895 |
|
---|
896 | for(var i = 0; i < visiblePages.length; i++)
|
---|
897 | {
|
---|
898 | var page = visiblePages[i];
|
---|
899 | if(!page || page.imageLoaded || page.noImage || page.isLoading)
|
---|
900 | {
|
---|
901 | continue;
|
---|
902 | }
|
---|
903 |
|
---|
904 | page.isLoading = true;
|
---|
905 | getImage(page);
|
---|
906 | }
|
---|
907 | _checking = false;
|
---|
908 | }
|
---|
909 | }
|
---|
910 |
|
---|
911 | setTimeout(checkFunction, 250);
|
---|
912 | setInterval(function(){checkFunction(true)}, 2000);
|
---|
913 | _mainDiv.scroll(checkFunction);
|
---|
914 | }
|
---|
915 |
|
---|
916 | //***********
|
---|
917 | //CONSTRUCTOR
|
---|
918 | //***********
|
---|
919 |
|
---|
920 | for(var i = 0; i < _links.length; i++)
|
---|
921 | {
|
---|
922 | var col = $("<td>");
|
---|
923 | _linkRow.append(col);
|
---|
924 | col.addClass("pageSliderCol");
|
---|
925 | _links[i].cell = col;
|
---|
926 |
|
---|
927 | var link = $("<a>");
|
---|
928 | col.append(link);
|
---|
929 | _links[i].link = link;
|
---|
930 | var href = $(_links[i]).attr("href");
|
---|
931 | link.attr("href", href.replace(/\)/, ", 0, true)"));
|
---|
932 |
|
---|
933 | if(!_linkCellMap[href])
|
---|
934 | {
|
---|
935 | _linkCellMap[href] = new Array();
|
---|
936 | }
|
---|
937 | _linkCellMap[href].push(_links[i]);
|
---|
938 |
|
---|
939 | var loadingText = $("<p>Loading image</p>");
|
---|
940 | link.append(loadingText);
|
---|
941 |
|
---|
942 | var image = $("<img>");
|
---|
943 | link.append(image);
|
---|
944 | image.attr("src", gs.imageURLs.loading);
|
---|
945 | _links[i].image = image;
|
---|
946 |
|
---|
947 | var title = $(_links[i]).html();
|
---|
948 | if(title.search(/^[^ ]+ [^ ]+$/) != -1)
|
---|
949 | {
|
---|
950 | var section = title.replace(/^([^ ]+) [^ ]+$/, "$1");
|
---|
951 | var page = title.replace(/^[^ ]+ ([^ ]+)$/, "$1");
|
---|
952 | if(page.search(/^[0-9]+$/) != -1)
|
---|
953 | {
|
---|
954 | title = page;
|
---|
955 | }
|
---|
956 | }
|
---|
957 | _titles.push([title, _links[i]]);
|
---|
958 |
|
---|
959 | col.append($("<br>"));
|
---|
960 | col.append(title);
|
---|
961 | }
|
---|
962 |
|
---|
963 | setUpFilterBox();
|
---|
964 | startCheckFunction();
|
---|
965 | }
|
---|
966 |
|
---|
967 | /***********************
|
---|
968 | * HIGHLIGHTING SCRIPTS *
|
---|
969 | ***********************/
|
---|
970 | function swapHighlight(imageClicked)
|
---|
971 | {
|
---|
972 | var hlCheckbox = $("#highlightOption");
|
---|
973 | if(imageClicked)
|
---|
974 | {
|
---|
975 | // toggle the state of the checkbox
|
---|
976 | $(hlCheckbox).prop("checked", !$(hlCheckbox).prop("checked"));
|
---|
977 | }
|
---|
978 | var from;
|
---|
979 | var to;
|
---|
980 | if(hlCheckbox.prop("checked"))
|
---|
981 | {
|
---|
982 | from = "noTermHighlight";
|
---|
983 | to = "termHighlight";
|
---|
984 | }
|
---|
985 | else
|
---|
986 | {
|
---|
987 | from = "termHighlight";
|
---|
988 | to = "noTermHighlight";
|
---|
989 | }
|
---|
990 |
|
---|
991 | var spans = $("span").each(function()
|
---|
992 | {
|
---|
993 | if($(this).hasClass(from))
|
---|
994 | {
|
---|
995 | $(this).removeClass(from);
|
---|
996 | $(this).addClass(to);
|
---|
997 | }
|
---|
998 | });
|
---|
999 | }
|
---|
1000 |
|
---|
1001 | /**************************
|
---|
1002 | * REALISTIC BOOKS SCRIPTS *
|
---|
1003 | **************************/
|
---|
1004 |
|
---|
1005 | function bookInit()
|
---|
1006 | {
|
---|
1007 | loadBook();
|
---|
1008 | hideText();
|
---|
1009 | showBook();
|
---|
1010 | swapLinkJavascript(false);
|
---|
1011 | }
|
---|
1012 |
|
---|
1013 | function hideText()
|
---|
1014 | {
|
---|
1015 | $("#gs-document-text").css("visibility", "hidden");
|
---|
1016 | }
|
---|
1017 |
|
---|
1018 | function showText()
|
---|
1019 | {
|
---|
1020 | $("#gs-document-text").css("visibility", "visible");
|
---|
1021 | }
|
---|
1022 |
|
---|
1023 | function hideBook()
|
---|
1024 | {
|
---|
1025 | $("#bookDiv, #bookObject, #bookEmbed").css({"visibility": "hidden", "height": "0px"});
|
---|
1026 | }
|
---|
1027 |
|
---|
1028 | function showBook()
|
---|
1029 | {
|
---|
1030 | $("#bookDiv, #bookObject, #bookEmbed").css({"visibility": "visible", "height": "600px"});
|
---|
1031 | }
|
---|
1032 |
|
---|
1033 | function swapLinkJavascript(rbOn)
|
---|
1034 | {
|
---|
1035 | var option = $("#rbOption");
|
---|
1036 | var optionImage = $("#rbOptionImage");
|
---|
1037 |
|
---|
1038 | if(rbOn)
|
---|
1039 | {
|
---|
1040 | option.attr("onclick", "hideText(); showBook(); swapLinkJavascript(false);");
|
---|
1041 | optionImage.attr("onclick", "hideText(); showBook(); swapLinkJavascript(false);");
|
---|
1042 | $(option).prop("checked", false);
|
---|
1043 | }
|
---|
1044 | else
|
---|
1045 | {
|
---|
1046 | option.attr("onclick", "hideBook(); showText(); swapLinkJavascript(true);");
|
---|
1047 | optionImage.attr("onclick", "hideBook(); showText(); swapLinkJavascript(true);");
|
---|
1048 | $(option).prop("checked", true);
|
---|
1049 | }
|
---|
1050 | }
|
---|
1051 |
|
---|
1052 | function loadBook()
|
---|
1053 | {
|
---|
1054 | var doc_url = document.URL;
|
---|
1055 | doc_url = doc_url.replace(/(&|\?)book=[a-z]+/gi,'');
|
---|
1056 | doc_url += '&book=flashxml';
|
---|
1057 |
|
---|
1058 | var img_cover = gs.collectionMetadata.httpPath + '/index/assoc/' + gs.documentMetadata.assocfilepath + '/cover.jpg';
|
---|
1059 |
|
---|
1060 | var flash_plug_html = ""
|
---|
1061 | flash_plug_html += '<OBJECT align="middle" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" \n';
|
---|
1062 | flash_plug_html += ' height="600px" id="bookObject" swLiveConnect="true" \n';
|
---|
1063 | flash_plug_html += ' codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" \n';
|
---|
1064 | flash_plug_html += ' width="70%">\n';
|
---|
1065 | flash_plug_html += ' <PARAM name="allowScriptAccess" value="always" />\n';
|
---|
1066 | flash_plug_html += ' <PARAM name="movie" value="Book.swf';
|
---|
1067 | flash_plug_html += '?src_image=' + escape(img_cover);
|
---|
1068 | flash_plug_html += '&doc_url=' + escape(doc_url);
|
---|
1069 | flash_plug_html += '" />\n';
|
---|
1070 | flash_plug_html += ' <PARAM name="quality" value="high" />\n';
|
---|
1071 | flash_plug_html += ' <PARAM name="bgcolor" value="#FFFFFF" />\n';
|
---|
1072 | flash_plug_html += ' <EMBED align="middle" \n';
|
---|
1073 | flash_plug_html += ' allowScriptAccess="always" swLiveConnect="true" \n';
|
---|
1074 | flash_plug_html += ' bgcolor="#FFFFFF" height="600px" name="Book" \n';
|
---|
1075 | flash_plug_html += ' pluginspage="http://www.macromedia.com/go/getflashplayer" \n';
|
---|
1076 | flash_plug_html += ' quality="high" id="bookEmbed"\n';
|
---|
1077 | flash_plug_html += ' src="Book.swf';
|
---|
1078 | flash_plug_html += '?src_image=' + escape(img_cover);
|
---|
1079 | flash_plug_html += '&doc_url=' + escape(doc_url);
|
---|
1080 | flash_plug_html += '"\n';
|
---|
1081 | flash_plug_html += ' type="application/x-shockwave-flash" width="70%" />\n';
|
---|
1082 | flash_plug_html += '</OBJECT>\n';
|
---|
1083 | $("#bookdiv").html(flash_plug_html);
|
---|
1084 | }
|
---|
1085 |
|
---|
1086 | /************************
|
---|
1087 | * CHANGES SCRIPTS *
|
---|
1088 | ************************/
|
---|
1089 | function addEditableState(editable,stateArray)
|
---|
1090 | {
|
---|
1091 | stateArray.push({
|
---|
1092 | editableNode : editable,
|
---|
1093 | initHTML : editable.innerHTML
|
---|
1094 | });
|
---|
1095 | }
|
---|
1096 |
|
---|
1097 | function getLastEditableStates()
|
---|
1098 | {
|
---|
1099 | editableLastStates = [];
|
---|
1100 | $(".sectionText").each(function(){addEditableState(this,editableLastStates);});
|
---|
1101 | $(".metaTableCell").each(function(){addEditableState(this,editableLastStates);});
|
---|
1102 |
|
---|
1103 | }
|
---|
1104 |
|
---|
1105 | function changesToUpdate()
|
---|
1106 | {
|
---|
1107 | var resultArray = new Array();
|
---|
1108 | getLastEditableStates();
|
---|
1109 | for (var j in editableLastStates)
|
---|
1110 | {
|
---|
1111 | if (isNodeChanged(editableLastStates[j]))
|
---|
1112 | {
|
---|
1113 | resultArray.push(editableLastStates[j].editableNode);
|
---|
1114 | }
|
---|
1115 | }
|
---|
1116 | return resultArray;
|
---|
1117 | }
|
---|
1118 |
|
---|
1119 | function isNodeChanged(StateToCheck){
|
---|
1120 | for (var i in editableInitStates)
|
---|
1121 | {
|
---|
1122 | if ((StateToCheck.editableNode === editableInitStates[i].editableNode) && StateToCheck.initHTML === editableInitStates[i].initHTML )
|
---|
1123 | {
|
---|
1124 | return false;
|
---|
1125 | }
|
---|
1126 |
|
---|
1127 | }
|
---|
1128 | return true;
|
---|
1129 | }
|
---|
1130 | /************************
|
---|
1131 | * METADATA EDIT SCRIPTS *
|
---|
1132 | ************************/
|
---|
1133 |
|
---|
1134 | function addEditMetadataLink(cell)
|
---|
1135 | {
|
---|
1136 | cell = $(cell);
|
---|
1137 | var id = cell.attr("id").substring(6);
|
---|
1138 | var metaTable = gs.jqGet("meta" + id);
|
---|
1139 |
|
---|
1140 | var row = cell.parent();
|
---|
1141 | var newCell = $("<td>", {"style": "font-size:0.7em; padding:0px 10px", "class": "editMetadataButton"});
|
---|
1142 | var linkSpan = $("<span>", {"class": "ui-state-default ui-corner-all", "style": "padding: 2px; float:left;"});
|
---|
1143 |
|
---|
1144 | var linkLabel = $("<span>edit metadata</span>");
|
---|
1145 | var linkIcon = $("<span>", {"class": "ui-icon ui-icon-folder-collapsed"});
|
---|
1146 | newCell.linkIcon = linkIcon;
|
---|
1147 | newCell.linkLabel = linkLabel;
|
---|
1148 |
|
---|
1149 | var uList = $("<ul>", {"style": "outline: 0 none; margin:0px; padding:0px;"});
|
---|
1150 | var labelItem = $("<li>", {"style": "float:left; list-style:none outside none;"});
|
---|
1151 | var iconItem = $("<li>", {"style": "float:left; list-style:none outside none;"});
|
---|
1152 |
|
---|
1153 | uList.append(iconItem);
|
---|
1154 | uList.append(labelItem);
|
---|
1155 | labelItem.append(linkLabel);
|
---|
1156 | iconItem.append(linkIcon);
|
---|
1157 |
|
---|
1158 | var newLink = $("<a>", {"href": "javascript:;"});
|
---|
1159 | newLink.click(function()
|
---|
1160 | {
|
---|
1161 | if(metaTable.css("display") == "none")
|
---|
1162 | {
|
---|
1163 | linkLabel.html("hide metadata");
|
---|
1164 | linkIcon.attr("class", "ui-icon ui-icon-folder-open");
|
---|
1165 | metaTable.css("display", "block");
|
---|
1166 | metaTable.metaNameField.css("display", "inline");
|
---|
1167 | metaTable.addRowButton.css("display", "inline");
|
---|
1168 | }
|
---|
1169 | else
|
---|
1170 | {
|
---|
1171 | linkLabel.html("edit metadata");
|
---|
1172 | linkIcon.attr("class", "ui-icon ui-icon-folder-collapsed");
|
---|
1173 | metaTable.css("display", "none");
|
---|
1174 | metaTable.metaNameField.css("display", "none");
|
---|
1175 | metaTable.addRowButton.css("display", "none");
|
---|
1176 | }
|
---|
1177 | });
|
---|
1178 |
|
---|
1179 | newLink.append(uList);
|
---|
1180 | linkSpan.append(newLink);
|
---|
1181 | newCell.append(linkSpan);
|
---|
1182 | row.append(newCell);
|
---|
1183 |
|
---|
1184 | addFunctionalityToTable(metaTable);
|
---|
1185 | metaTable.metaNameField.css("display", "none");
|
---|
1186 | metaTable.addRowButton.css("display", "none");
|
---|
1187 | }
|
---|
1188 |
|
---|
1189 | function setEditingFeaturesVisible(visible)
|
---|
1190 | {
|
---|
1191 | if(visible)
|
---|
1192 | {
|
---|
1193 | $("#editContentButton").html("Hide editor");
|
---|
1194 | $("#editContentButtonDiv").attr("class", "ui-state-default ui-corner-all");
|
---|
1195 | }
|
---|
1196 | else
|
---|
1197 | {
|
---|
1198 | $("#editContentButton").html("Edit content");
|
---|
1199 | $("#editContentButtonDiv").attr("class", "");
|
---|
1200 | }
|
---|
1201 |
|
---|
1202 | var visibility = (visible ? "" : "none");
|
---|
1203 | $("#metadataListLabel, #metadataSetList").css("display", visibility);
|
---|
1204 |
|
---|
1205 | $(".editMetadataButton").each(function()
|
---|
1206 | {
|
---|
1207 | $(this).css("display", visibility);
|
---|
1208 | $(this.linkLabel).html("edit metadata");
|
---|
1209 | $(this.linkIcon).attr("class", "ui-icon ui-icon-folder-collapsed");
|
---|
1210 | });
|
---|
1211 |
|
---|
1212 | $("table").each(function()
|
---|
1213 | {
|
---|
1214 | if($(this).attr("id") && $(this).attr("id").search(/^meta/) != -1)
|
---|
1215 | {
|
---|
1216 | $(this).css("display", "none");
|
---|
1217 | $(this.metaNameField).css("display", "none");
|
---|
1218 | $(this.addRowButton).css("display", "none");
|
---|
1219 | }
|
---|
1220 | });
|
---|
1221 | }
|
---|
1222 |
|
---|
1223 | /* override this function in other interface/site/collection if you want
|
---|
1224 | a different set of metadata sets
|
---|
1225 | Use in conjunction with the dynamic_metadata_set_list variable. */
|
---|
1226 | function setStaticMetadataSets(list) {
|
---|
1227 | addOptionToList(list, "All", "All");
|
---|
1228 | }
|
---|
1229 |
|
---|
1230 | function readyPageForEditing()
|
---|
1231 | {
|
---|
1232 |
|
---|
1233 | if($("#metadataSetList").length)
|
---|
1234 | {
|
---|
1235 | var setList = $("#metadataSetList");
|
---|
1236 | if(!setList.css("display") || setList.css("display") == "")
|
---|
1237 | {
|
---|
1238 | setEditingFeaturesVisible(false);
|
---|
1239 | }
|
---|
1240 | else
|
---|
1241 | {
|
---|
1242 | setEditingFeaturesVisible(true);
|
---|
1243 | }
|
---|
1244 | return;
|
---|
1245 | }
|
---|
1246 |
|
---|
1247 | $("#editContentButton").html("Hide Editor");
|
---|
1248 | //wait for 0.5 sec to let ckeditor up
|
---|
1249 | setTimeout(function(){ $(".sectionText").each(function(){addEditableState(this,editableInitStates);}); }, 500);
|
---|
1250 |
|
---|
1251 | var editBar = $("#editBarLeft");
|
---|
1252 |
|
---|
1253 | var visibleMetadataList = $("<select>", {"id": "metadataSetList", "class": "ui-state-default"});
|
---|
1254 | setStaticMetadataSets(visibleMetadataList);
|
---|
1255 |
|
---|
1256 | var metadataListLabel = $("<span>", {"id": "metadataListLabel", "style": "margin-left:20px;"});
|
---|
1257 | metadataListLabel.html("Visible metadata: ");
|
---|
1258 | editBar.append(metadataListLabel);
|
---|
1259 | editBar.append(visibleMetadataList);
|
---|
1260 | visibleMetadataList.change(onVisibleMetadataSetChange);
|
---|
1261 | editBar.append("<br>");
|
---|
1262 | for (var i=0; i< save_and_rebuild_buttons.length; i++) {
|
---|
1263 | var button_type = save_and_rebuild_buttons[i];
|
---|
1264 | if (button_type == "save") {
|
---|
1265 | var saveButton = $("<button>", {"id": "saveButton", "class": "ui-state-default ui-corner-all"});
|
---|
1266 | saveButton.click(save);
|
---|
1267 | saveButton.html(save_button_text);
|
---|
1268 | editBar.append(saveButton);
|
---|
1269 | } else if(button_type == "rebuild") {
|
---|
1270 | var rebuildButton = $("<button>", {"id": "rebuildButton", "class": "ui-state-default ui-corner-all"});
|
---|
1271 | rebuildButton.click(rebuildCurrentCollection);
|
---|
1272 | rebuildButton.html(rebuild_button_text);
|
---|
1273 | editBar.append(rebuildButton);
|
---|
1274 | } else if (button_type == "saveandrebuild") {
|
---|
1275 | var saveAndRebuildButton = $("<button>", {"id": "saveAndRebuildButton", "class": "ui-state-default ui-corner-all"});
|
---|
1276 | saveAndRebuildButton.click(saveAndRebuild);
|
---|
1277 | saveAndRebuildButton.html(save_and_rebuild_button_text);
|
---|
1278 | editBar.append(saveAndRebuildButton);
|
---|
1279 |
|
---|
1280 | }
|
---|
1281 | }
|
---|
1282 | var statusBarDiv = $("<div>");
|
---|
1283 | editBar.append(statusBarDiv);
|
---|
1284 | _statusBar = new StatusBar(statusBarDiv[0]);
|
---|
1285 |
|
---|
1286 | var titleDivs = $(".sectionTitle");
|
---|
1287 | for(var i = 0; i < titleDivs.length; i++)
|
---|
1288 | {
|
---|
1289 | addEditMetadataLink(titleDivs[i]);
|
---|
1290 | }
|
---|
1291 |
|
---|
1292 | _baseURL = gs.xsltParams.library_name;
|
---|
1293 | onVisibleMetadataSetChange(); // make sure that the selected item in the list is active
|
---|
1294 | }
|
---|
1295 |
|
---|
1296 | // override the one in documentmaker_scripts_util
|
---|
1297 | // currently not used if other one is present. need to get the js include order right
|
---|
1298 | function enableSaveButtons(enabled) {
|
---|
1299 | if (enabled) {
|
---|
1300 | $("#saveButton, #rebuildButton, #saveAndRebuildButton").removeAttr("disabled");
|
---|
1301 | } else {
|
---|
1302 | $("#saveButton, #rebuildButton, #saveAndRebuildButton").attr("disabled", "disabled");
|
---|
1303 | }
|
---|
1304 | }
|
---|
1305 |
|
---|
1306 | /* this is a cut down version of save() from documentmaker_scripts_util.js
|
---|
1307 | going back to using save, will delete this once everything working*/
|
---|
1308 | function saveMetadataChangesOld() {
|
---|
1309 |
|
---|
1310 | console.log("Saving metadata changes");
|
---|
1311 |
|
---|
1312 | // get collection name
|
---|
1313 | var collection = gs.cgiParams.c;;
|
---|
1314 |
|
---|
1315 | // get document id
|
---|
1316 | var docID = gs.cgiParams.d;
|
---|
1317 |
|
---|
1318 | var metadataChanges = new Array();
|
---|
1319 | if (_deletedMetadata.length > 0) {
|
---|
1320 |
|
---|
1321 | for(var i = 0; i < _deletedMetadata.length; i++) {
|
---|
1322 |
|
---|
1323 | var currentRow = _deletedMetadata[i];
|
---|
1324 |
|
---|
1325 | //Get metadata name
|
---|
1326 | var cells = currentRow.getElementsByTagName("TD");
|
---|
1327 | var nameCell = cells[0];
|
---|
1328 | var name = nameCell.innerHTML;
|
---|
1329 | var valueCell = cells[1];
|
---|
1330 | var value = valueCell.innerHTML;
|
---|
1331 | metadataChanges.push({type:'delete', docID:docID, name:name, value:value});
|
---|
1332 | removeFromParent(currentRow);
|
---|
1333 | }
|
---|
1334 | }
|
---|
1335 |
|
---|
1336 | /*var changes = null;
|
---|
1337 | //var changes = de.Changes.getChangedEditableSections();
|
---|
1338 | for(var i = 0; i < changes.length; i++) {
|
---|
1339 |
|
---|
1340 | var changedElem = changes[i];
|
---|
1341 |
|
---|
1342 | //Get metadata name
|
---|
1343 | var row = changedElem.parentNode;
|
---|
1344 | var cells = row.getElementsByTagName("TD");
|
---|
1345 | var nameCell = cells[0];
|
---|
1346 | var name = nameCell.innerHTML;
|
---|
1347 | var value = changedElem.innerHTML;
|
---|
1348 | value = value.replace(/ /g, " ");
|
---|
1349 |
|
---|
1350 | var orig = changedElem.originalValue;
|
---|
1351 | if (orig) {
|
---|
1352 | orig = orig.replace(/ /g, " ");
|
---|
1353 | }
|
---|
1354 | metadataChanges.push({collection:collection, docID:docID, name:name, value:value, orig:orig});
|
---|
1355 | changedElem.originalValue = changedElem.innerHTML;
|
---|
1356 |
|
---|
1357 | }
|
---|
1358 | */
|
---|
1359 | if (metadataChanges.length ==0) {
|
---|
1360 | console.log ("... No changes detected. ");
|
---|
1361 | return;
|
---|
1362 | }
|
---|
1363 |
|
---|
1364 | var processChangesLoop = function(index)
|
---|
1365 | {
|
---|
1366 | var change = metadataChanges[index];
|
---|
1367 |
|
---|
1368 | var callbackFunction;
|
---|
1369 | if(index + 1 == metadataChanges.length)
|
---|
1370 | {
|
---|
1371 | callbackFunction = function(){console.log("Completed saving metadata changes. You must rebuild the collection for the changes to take effect.");};
|
---|
1372 | }
|
---|
1373 | else
|
---|
1374 | {
|
---|
1375 | callbackFunction = function(){processChangesLoop(index + 1)};
|
---|
1376 | }
|
---|
1377 | if (change.type == "delete") {
|
---|
1378 | gs.functions.removeArchivesMetadata(collection, gs.xsltParams.site_name, change.docID, change.name, null, change.value, function(){callbackFunction();});
|
---|
1379 | } else {
|
---|
1380 | if(change.orig)
|
---|
1381 | {
|
---|
1382 | gs.functions.setArchivesMetadata(collection, gs.xsltParams.site_name, docID, change.name, null, change.value, change.orig, "override", function(){callbackFunction();});
|
---|
1383 | }
|
---|
1384 | else
|
---|
1385 | {
|
---|
1386 | gs.functions.setArchivesMetadata(collection, gs.xsltParams.site_name, docID, change.name, null, change.value, null, "accumulate", function(){callbackFunction();});
|
---|
1387 | }
|
---|
1388 | }
|
---|
1389 | }
|
---|
1390 | processChangesLoop(0);
|
---|
1391 | /* need to clear the changes from the page */
|
---|
1392 | while (_deletedMetadata.length>0) {
|
---|
1393 | _deletedMetadata.pop();
|
---|
1394 | }
|
---|
1395 |
|
---|
1396 | }
|
---|
1397 |
|
---|
1398 |
|
---|
1399 |
|
---|
1400 |
|
---|
1401 |
|
---|
1402 | /***************
|
---|
1403 | * MENU SCRIPTS *
|
---|
1404 | ***************/
|
---|
1405 | function moveScroller() {
|
---|
1406 | var move = function() {
|
---|
1407 | var editbar = $("#editBar");
|
---|
1408 | var st = $(window).scrollTop();
|
---|
1409 | var fa = $("#float-anchor").offset().top;
|
---|
1410 | if(st > fa) {
|
---|
1411 |
|
---|
1412 | editbar.css({
|
---|
1413 | position: "fixed",
|
---|
1414 | top: "0px",
|
---|
1415 | width: editbar.data("width"),
|
---|
1416 | //width: "30%"
|
---|
1417 | });
|
---|
1418 | } else {
|
---|
1419 | editbar.data("width", editbar.css("width"));
|
---|
1420 | editbar.css({
|
---|
1421 | position: "relative",
|
---|
1422 | top: "",
|
---|
1423 | width: ""
|
---|
1424 | });
|
---|
1425 | }
|
---|
1426 | };
|
---|
1427 | $(window).scroll(move);
|
---|
1428 | move();
|
---|
1429 | }
|
---|
1430 |
|
---|
1431 |
|
---|
1432 | function floatMenu(enabled)
|
---|
1433 | {
|
---|
1434 | var menu = $(".tableOfContentsContainer");
|
---|
1435 | if(enabled)
|
---|
1436 | {
|
---|
1437 | menu.data("position", menu.css("position"));
|
---|
1438 | menu.data("width", menu.css("width"));
|
---|
1439 | menu.data("right", menu.css("right"));
|
---|
1440 | menu.data("top", menu.css("top"));
|
---|
1441 | menu.data("max-height", menu.css("max-height"));
|
---|
1442 | menu.data("overflow", menu.css("overflow"));
|
---|
1443 | menu.data("z-index", menu.css("z-index"));
|
---|
1444 |
|
---|
1445 | menu.css("position", "fixed");
|
---|
1446 | menu.css("width", "300px");
|
---|
1447 | menu.css("right", "0px");
|
---|
1448 | menu.css("top", "100px");
|
---|
1449 | menu.css("max-height", "600px");
|
---|
1450 | menu.css("overflow", "auto");
|
---|
1451 | menu.css("z-index", "200");
|
---|
1452 |
|
---|
1453 | $("#unfloatTOCButton").show();
|
---|
1454 | }
|
---|
1455 | else
|
---|
1456 | {
|
---|
1457 | menu.css("position", menu.data("position"));
|
---|
1458 | menu.css("width", menu.data("width"));
|
---|
1459 | menu.css("right", menu.data("right"));
|
---|
1460 | menu.css("top", menu.data("top"));
|
---|
1461 | menu.css("max-height", menu.data("max-height"));
|
---|
1462 | menu.css("overflow", menu.data("overflow"));
|
---|
1463 | menu.css("z-index", menu.data("z-index"));
|
---|
1464 |
|
---|
1465 | $("#unfloatTOCButton").hide();
|
---|
1466 | $("#floatTOCToggle").prop("checked", false);
|
---|
1467 | }
|
---|
1468 |
|
---|
1469 | var url = gs.xsltParams.library_name + "?a=d&ftoc=" + (enabled ? "1" : "0") + "&c=" + gs.cgiParams.c;
|
---|
1470 |
|
---|
1471 | $.ajax(url);
|
---|
1472 | }
|
---|
1473 |
|
---|
1474 | /********************
|
---|
1475 | * SLIDESHOW SCRIPTS *
|
---|
1476 | ********************/
|
---|
1477 |
|
---|
1478 | function showSlideShow()
|
---|
1479 | {
|
---|
1480 | if(!($("#gs-slideshow").length))
|
---|
1481 | {
|
---|
1482 | var slideshowDiv = $("<div>", {id:"gs-slideshow", style:"height:100%;"});
|
---|
1483 | var loadingImage = $("<img>", {src:gs.imageURLs.loading});
|
---|
1484 | slideshowDiv.append(loadingImage);
|
---|
1485 |
|
---|
1486 | $.blockUI({message: $(slideshowDiv), css:{top: "5%", left: "5%", width: "90%", height: "90%", overflow: "auto", cursor: "auto"}});
|
---|
1487 |
|
---|
1488 | retrieveImagesForSlideShow(function(imageIDArray)
|
---|
1489 | {
|
---|
1490 | loadingImage.hide();
|
---|
1491 | if(imageIDArray && imageIDArray.length > 0)
|
---|
1492 | {
|
---|
1493 | var imageURLs = new Array();
|
---|
1494 | for(var i = 0; i < imageIDArray.length; i++)
|
---|
1495 | {
|
---|
1496 | if(imageIDArray[i].source && imageIDArray[i].source.search(/.*\.(gif|jpg|jpeg|png)$/) != -1)
|
---|
1497 | {
|
---|
1498 | imageURLs.push(gs.collectionMetadata.httpPath + "/index/assoc/" + gs.documentMetadata.assocfilepath + "/" + imageIDArray[i].source);
|
---|
1499 | }
|
---|
1500 | }
|
---|
1501 | new SlideShowWidget(slideshowDiv, imageURLs, imageIDArray);
|
---|
1502 | }
|
---|
1503 | });
|
---|
1504 | }
|
---|
1505 | else
|
---|
1506 | {
|
---|
1507 | $("#gs-slideshow").show();
|
---|
1508 | }
|
---|
1509 | }
|
---|
1510 |
|
---|
1511 | function retrieveImagesForSlideShow(callback)
|
---|
1512 | {
|
---|
1513 | var template = "";
|
---|
1514 | template += '<xsl:template match="/">';
|
---|
1515 | template += '<images>[';
|
---|
1516 | template += '<xsl:for-each select="//documentNode">';
|
---|
1517 | template += '<xsl:text disable-output-escaping="yes">{"source":"</xsl:text><gsf:metadata name="Source"/><xsl:text disable-output-escaping="yes">",</xsl:text>';
|
---|
1518 | template += '<xsl:text disable-output-escaping="yes">"id":"</xsl:text><xsl:value-of select="@nodeID"/><xsl:text disable-output-escaping="yes">"}</xsl:text>';
|
---|
1519 | template += '<xsl:if test="position() != count(//documentNode)">,</xsl:if>';
|
---|
1520 | template += '</xsl:for-each>';
|
---|
1521 | template += ']</images>';
|
---|
1522 | template += '</xsl:template>';
|
---|
1523 |
|
---|
1524 | var url = gs.xsltParams.library_name + "/collection/" + gs.cgiParams.c + "/document/" + gs.cgiParams.d + "?ed=1&ilt=" + template.replace(" ", "%20");
|
---|
1525 |
|
---|
1526 | $.ajax(
|
---|
1527 | {
|
---|
1528 | url:url,
|
---|
1529 | success: function(data)
|
---|
1530 | {
|
---|
1531 | var startIndex = data.indexOf(">", data.indexOf(">") + 1) + 1;
|
---|
1532 | var endIndex = data.lastIndexOf("<");
|
---|
1533 | var arrayString = data.substring(startIndex, endIndex);
|
---|
1534 | var imageIDArray = eval(arrayString);
|
---|
1535 |
|
---|
1536 | callback(imageIDArray);
|
---|
1537 | }
|
---|
1538 | });
|
---|
1539 | }
|
---|
1540 |
|
---|
1541 | function SlideShowWidget(mainDiv, images, idArray)
|
---|
1542 | {
|
---|
1543 | var _inTransition = false;
|
---|
1544 | var _images = new Array();
|
---|
1545 | var _mainDiv = mainDiv;
|
---|
1546 | var _imageDiv = $("<div>", {id:"ssImageDiv", style:"height:95%; overflow:auto;"});
|
---|
1547 | var _navDiv = $("<div>", {style:"height:5%;"});
|
---|
1548 | var _nextButton = $("<img>", {src:gs.imageURLs.next, style:"float:right; cursor:pointer;"});
|
---|
1549 | var _prevButton = $("<img>", {src:gs.imageURLs.prev, style:"float:left; cursor:pointer; display:none;"});
|
---|
1550 | var _closeLink = $("<a href=\"javascript:$.unblockUI()\">Close Slideshow</a>");
|
---|
1551 | var _clearDiv = $("<div>", {style:"clear:both;"});
|
---|
1552 | var _currentIndex = 0;
|
---|
1553 |
|
---|
1554 | _navDiv.append(_nextButton);
|
---|
1555 | _navDiv.append(_closeLink);
|
---|
1556 | _navDiv.append(_prevButton);
|
---|
1557 | _navDiv.append(_clearDiv);
|
---|
1558 | _mainDiv.append(_navDiv);
|
---|
1559 | _mainDiv.append(_imageDiv);
|
---|
1560 |
|
---|
1561 | for(var i = 0; i < images.length; i++)
|
---|
1562 | {
|
---|
1563 | _images.push($("<img>", {src:images[i], "class":"slideshowImage"}));
|
---|
1564 | }
|
---|
1565 |
|
---|
1566 | if(_images.length < 2)
|
---|
1567 | {
|
---|
1568 | _nextButton.css("display", "none");
|
---|
1569 | }
|
---|
1570 |
|
---|
1571 | _imageDiv.append(_images[0]);
|
---|
1572 |
|
---|
1573 | this.nextImage = function()
|
---|
1574 | {
|
---|
1575 | if(!_inTransition)
|
---|
1576 | {
|
---|
1577 | _inTransition = true;
|
---|
1578 | if((_currentIndex + 1) < _images.length)
|
---|
1579 | {
|
---|
1580 | _prevButton.css("display", "");
|
---|
1581 | if(_currentIndex + 1 == _images.length - 1)
|
---|
1582 | {
|
---|
1583 | _nextButton.css("display", "none");
|
---|
1584 | }
|
---|
1585 |
|
---|
1586 | _imageDiv.fadeOut(500, function()
|
---|
1587 | {
|
---|
1588 | _imageDiv.empty();
|
---|
1589 | _imageDiv.append(_images[_currentIndex + 1]);
|
---|
1590 | _currentIndex++;
|
---|
1591 | _imageDiv.fadeIn(500, function()
|
---|
1592 | {
|
---|
1593 | _inTransition = false;
|
---|
1594 | });
|
---|
1595 | });
|
---|
1596 | }
|
---|
1597 | else
|
---|
1598 | {
|
---|
1599 | _inTransition = false;
|
---|
1600 | }
|
---|
1601 | }
|
---|
1602 | }
|
---|
1603 |
|
---|
1604 | this.prevImage = function()
|
---|
1605 | {
|
---|
1606 | if(!_inTransition)
|
---|
1607 | {
|
---|
1608 | _inTransition = true;
|
---|
1609 | if((_currentIndex - 1) >= 0)
|
---|
1610 | {
|
---|
1611 | _nextButton.css("display", "");
|
---|
1612 | if(_currentIndex - 1 == 0)
|
---|
1613 | {
|
---|
1614 | _prevButton.css("display", "none");
|
---|
1615 | }
|
---|
1616 |
|
---|
1617 | _imageDiv.fadeOut(500, function()
|
---|
1618 | {
|
---|
1619 | _imageDiv.empty();
|
---|
1620 | _imageDiv.append(_images[_currentIndex - 1]);
|
---|
1621 | _currentIndex--;
|
---|
1622 | _imageDiv.fadeIn(500, function()
|
---|
1623 | {
|
---|
1624 | _inTransition = false;
|
---|
1625 | });
|
---|
1626 | });
|
---|
1627 | }
|
---|
1628 | else
|
---|
1629 | {
|
---|
1630 | _inTransition = false;
|
---|
1631 | }
|
---|
1632 | }
|
---|
1633 | }
|
---|
1634 |
|
---|
1635 | var getRootFilenameFromURL = function(url)
|
---|
1636 | {
|
---|
1637 | var urlSegments = url.split("/");
|
---|
1638 | var filename = urlSegments[urlSegments.length - 1];
|
---|
1639 | return filename.replace(/_thumb\..*$/, "");
|
---|
1640 | }
|
---|
1641 |
|
---|
1642 | var setLink = function(currentLink, index)
|
---|
1643 | {
|
---|
1644 | $(currentLink).click(function()
|
---|
1645 | {
|
---|
1646 | _inTransition = true;
|
---|
1647 | _currentIndex = index;
|
---|
1648 | _imageDiv.fadeOut(500, function()
|
---|
1649 | {
|
---|
1650 | _imageDiv.empty();
|
---|
1651 | _imageDiv.append(_images[_currentIndex]);
|
---|
1652 | _imageDiv.fadeIn(500, function()
|
---|
1653 | {
|
---|
1654 | _inTransition = false;
|
---|
1655 | });
|
---|
1656 | });
|
---|
1657 | });
|
---|
1658 | }
|
---|
1659 |
|
---|
1660 | var sliderLinks = $(".pageSliderCol a");
|
---|
1661 | for(var i = 0; i < sliderLinks.length; i++)
|
---|
1662 | {
|
---|
1663 | var currentLink = sliderLinks[i];
|
---|
1664 | var id = $(currentLink).attr("href").split("'")[1];
|
---|
1665 |
|
---|
1666 | for(var j = 0; j < idArray.length; j++)
|
---|
1667 | {
|
---|
1668 | if(idArray[j].id == id)
|
---|
1669 | {
|
---|
1670 | var image = idArray[j].source;
|
---|
1671 |
|
---|
1672 | for(var l = 0; l < images.length; l++)
|
---|
1673 | {
|
---|
1674 | var filename = getRootFilenameFromURL(images[l]);
|
---|
1675 | if (filename == image)
|
---|
1676 | {
|
---|
1677 | setLink(currentLink, l);
|
---|
1678 | break;
|
---|
1679 | }
|
---|
1680 | }
|
---|
1681 |
|
---|
1682 | break;
|
---|
1683 | }
|
---|
1684 | }
|
---|
1685 | }
|
---|
1686 |
|
---|
1687 | _nextButton.click(this.nextImage);
|
---|
1688 | _prevButton.click(this.prevImage);
|
---|
1689 | }
|
---|