604
|
1 /*
|
|
2 * digilib jQuery plugin
|
|
3 *
|
|
4 */
|
|
5
|
|
6 (function($) {
|
605
|
7
|
|
8 var defaults = {
|
|
9 /* base URL to Scaler servlet */
|
|
10 'scalerUrl' : 'http://digilib.mpiwg-berlin.mpg.de/digitallibrary/servlet/Scaler',
|
|
11 /* digilib image path i.e. fn */
|
|
12 'imagePath' : '',
|
|
13 /* mode of operation.
|
|
14 * fullscreen: takes parameters from page URL, keeps state in page URL
|
|
15 * embedded: takes parameters from Javascript options, keeps state inside object
|
|
16 */
|
|
17 'interactionMode' : 'fullscreen'
|
|
18 };
|
|
19
|
|
20 /* parameters from the query string */
|
|
21 var params = {};
|
604
|
22
|
|
23 var methods = {
|
|
24 init : function(options) {
|
|
25 return this.each(function() {
|
605
|
26 var $elem = $(this);
|
|
27 var data = $elem.data('digilib');
|
604
|
28 // If the plugin hasn't been initialized yet
|
|
29 if (!data) {
|
605
|
30 // settings for this digilib instance are merged from defaults and options
|
|
31 var settings = $.extend({}, defaults, options);
|
|
32 // merge query parameters
|
|
33 settings = $.extend(settings, parseParams(settings.interactionMode));
|
|
34 // store in data element
|
|
35 $elem.data('digilib', {
|
|
36 target : $elem,
|
|
37 settings : settings
|
604
|
38 });
|
|
39 }
|
|
40 });
|
|
41 },
|
|
42 destroy : function() {
|
|
43 return this.each(function(){
|
|
44 var $this = $(this);
|
|
45 var data = $this.data('digilib');
|
|
46 // Namespacing FTW
|
605
|
47 $(window).unbind('.digilib'); // unbinds all digilibs(?)
|
604
|
48 data.digilib.remove();
|
|
49 $this.removeData('digilib');
|
|
50 });
|
|
51 }
|
605
|
52 };
|
604
|
53
|
605
|
54 // returns object with parameters from the query string or an embedded img-tag (depending on interactionMode)
|
|
55 var parseParams = function(interactionMode) {
|
|
56 alert("parseParams() not implemented");
|
|
57 };
|
604
|
58
|
605
|
59 // hook plugin into jquery
|
|
60 $.fn.digilib = function(method) {
|
|
61 if (methods[method]) {
|
|
62 return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
|
|
63 } else if (typeof(method) === 'object' || !method) {
|
|
64 return methods.init.apply(this, arguments);
|
|
65 } else {
|
|
66 $.error( 'Method ' + method + ' does not exist on jQuery.digilib' );
|
|
67 }
|
|
68 };
|
604
|
69
|
|
70 })(jQuery); |