annotate client/digitallibrary/jquery/jquery.digilib.js @ 598:81723e7efe82 jquery

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