annotate client/digitallibrary/jquery/jquery.digilib.js @ 605:aee94e4a8c48 jquery

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