diff client/digitallibrary/jquery/jquery.digilib.js @ 785:b9a75079aece jquery

geometry as first digilib plugin. special case that only exports classes.
author robcast
date Wed, 16 Feb 2011 14:31:50 +0100
parents dde58c15bbd2
children 868c2e795aca
line wrap: on
line diff
--- a/client/digitallibrary/jquery/jquery.digilib.js	Tue Feb 15 11:02:31 2011 +0100
+++ b/client/digitallibrary/jquery/jquery.digilib.js	Wed Feb 16 14:31:50 2011 +0100
@@ -21,8 +21,6 @@
  * digilib jQuery plugin
 **/ 
 
-/*requires dlGeometry.js */
-
 /*jslint browser: true, debug: true, forin: true
 */
 
@@ -250,17 +248,26 @@
         // maximum width of background image for drag-scroll
         'maxBgSize' : 10000,
         // space to be left free in full page display, default value is for scrollbar
-        'scalerInset' : 10,
+        'scalerInset' : 10
         };
 
     // affine geometry classes
-    var geom = dlGeometry();
+    var geom;
 
-    var FULL_AREA = geom.rectangle(0, 0, 1, 1);
+    var FULL_AREA;
 
     var actions = {
         // init: digilib initialization
         init : function(options) {
+            // import geometry classes TODO: move to general plugin mechanism?
+            if ($.fn.digilib.geometry == null) {
+                console.error("You should use jquery.digilib.geometry");
+                geom = dlGeometry();
+            } else {
+                geom = $.fn.digilib.geometry;
+            }
+            FULL_AREA  = geom.rectangle(0, 0, 1, 1);
+            
             // settings for this digilib instance are merged from defaults and options
             var settings = $.extend({}, defaults, options);
             var isFullscreen = settings.interactionMode === 'fullscreen';
@@ -292,22 +299,22 @@
                         params = queryParams;
                     } else {
                         params = parseImgParams($elem);
-                        if (jQuery.cookie) {
+                        if ($.cookie) {
                             // retrieve params from cookie
                             var ck = "digilib-embed:fn:" + escape(params.fn) + ":pn:" + (params.pn || '1');
-                            var cs = jQuery.cookie(ck);
+                            var cs = $.cookie(ck);
                             console.debug("get cookie=", ck, " value=", cs);
                             if (cs) {
                                 var cp = parseQueryString(cs);
                                 // ignore fn and pn from cookie TODO: should we keep pn?
                                 delete cp.fn;
                                 delete cp.pn;
-                                jQuery.extend(params, cp);
+                                $.extend(params, cp);
                             }
                         }
                     }
                     // store $(this) element in the settings
-                    elemSettings = jQuery.extend({}, settings, params);
+                    elemSettings = $.extend({}, settings, params);
                     data = {
                             $elem : $elem,
                             settings : elemSettings,
@@ -702,7 +709,7 @@
                 dw : settings.birdDivWidth,
                 dh : settings.birdDivHeight
         };
-        var birdSettings = jQuery.extend({}, settings, birdDivOptions);
+        var birdSettings = $.extend({}, settings, birdDivOptions);
         // use only the relevant parameters
         if (moreParams == null) {
             var params = getParamString(birdSettings, settings.birdDivParams, defaults);
@@ -740,7 +747,7 @@
         var url = settings.scalerBaseUrl.substring(0, p) + '/ImgInfo-json.jsp';
         url += '?' + getParamString(settings, ['fn', 'pn'], defaults);
         // TODO: better error handling
-        jQuery.getJSON(url, function (json) {
+        $.getJSON(url, function (json) {
             console.debug("got json data=", json);
             data.imgInfo = json;
             if (complete != null) {
@@ -835,18 +842,18 @@
                     }
                 clop += o + '=' + data.dlOpts[o];
                 }
-            if (jQuery.cookie) {
+            if ($.cookie) {
                 var ck = "digilib:fn:" + escape(settings.fn) + ":pn:" + settings.pn;
                 console.debug("set cookie=", ck, " value=", clop);
-                jQuery.cookie(ck, clop);
+                $.cookie(ck, clop);
                 }
         }
-        if (settings.interactionMode !== 'fullscreen' && jQuery.cookie) {
+        if (settings.interactionMode !== 'fullscreen' && $.cookie) {
             // store normal parameters in cookie for embedded mode
             var qs = getParamString(settings, settings.digilibParamNames, defaults);
             var ck = "digilib-embed:fn:" + escape(settings.fn) + ":pn:" + settings.pn;
             console.debug("set cookie=", ck, " value=", qs);
-            jQuery.cookie(ck, qs);
+            $.cookie(ck, qs);
         }
     };
 
@@ -854,10 +861,10 @@
         // clop (digilib options)
         var opts = {};
         var settings = data.settings;
-        if (jQuery.cookie) {
+        if ($.cookie) {
             // read from cookie
             var ck = "digilib:fn:" + escape(settings.fn) + ":pn:" + settings.pn;
-            var cp = jQuery.cookie(ck);
+            var cp = $.cookie(ck);
             console.debug("get cookie=", ck, " value=", cp);
             // in query string format
             opts = parseQueryString(cp);
@@ -1754,7 +1761,7 @@
         }
 
     // hook plugin into jquery
-    $.fn.digilib = function(action) {
+    $.fn.digilib = function (action) {
         // plugin extension mechanism
         if (action === 'extendPlugin') {
             // for each digilib $elem extend data.settings with obj.options