diff client/digitallibrary/jquery/jquery.digilib.js @ 681:0583d0a38de5 jquery

reset button plus action
author hertzhaft
date Wed, 26 Jan 2011 22:34:26 +0100
parents d18b4170182f
children 2493d64eae64
line wrap: on
line diff
--- a/client/digitallibrary/jquery/jquery.digilib.js	Wed Jan 26 20:37:45 2011 +0100
+++ b/client/digitallibrary/jquery/jquery.digilib.js	Wed Jan 26 22:34:26 2011 +0100
@@ -89,7 +89,7 @@
             img : "help.png"
             },
         reset : {
-            onclick : "javascript:resetImage()",
+            onclick : "reset",
             tooltip : "reset image",
             img : "reset.png"
             },
@@ -208,14 +208,14 @@
                 // path to button images (must end with a slash)
                 'imagePath' : 'img/fullscreen/',
                 //'standardSet' : ["reference","zoomin","zoomout","zoomarea","zoomfull","pagewidth","back","fwd","page","bird","SEP","help","reset","options"],
-                'standardSet' : ["reference","zoomin","zoomout","zoomarea","zoomfull","pagewidth","mark","delmark","hmir","vmir","back","fwd","page","rot","brgt","cont","rgb","quality","size","calibrationx","scale","bird","help","options"],
-                'specialSet' : ["mark","delmark","hmir","vmir","rot","brgt","cont","rgb","quality","size","calibrationx","scale","SEP","options"],
+                'standardSet' : ["reference","zoomin","zoomout","zoomarea","zoomfull","pagewidth","mark","delmark","hmir","vmir","back","fwd","page","rot","brgt","cont","rgb","quality","size","calibrationx","scale","bird","help","reset","options"],
+                'specialSet' : ["mark","delmark","hmir","vmir","rot","brgt","cont","rgb","quality","size","calibrationx","scale","options"],
                 'buttonSets' : ['standardSet', 'specialSet']
                 },
             'embedded' : {
                 'imagePath' : 'img/embedded/16/',
-                'standardSet' : ["reference","zoomin","zoomout","zoomarea","zoomfull","hmir","vmir","back","fwd","page","rot","brgt","cont","rgb","quality","size","scale","bird","help","options"],
-                'specialSet' : ["mark","delmark","hmir","vmir","rot","brgt","cont","rgb","quality","size","calibrationx","scale","SEP","options"],
+                'standardSet' : ["reference","zoomin","zoomout","zoomarea","zoomfull","hmir","vmir","back","fwd","page","rot","brgt","cont","rgb","quality","size","scale","bird","help","reset","options"],
+                'specialSet' : ["mark","delmark","hmir","vmir","rot","brgt","cont","rgb","quality","size","calibrationx","scale","options"],
                 'buttonSets' : ['standardSet', 'specialSet']
                 }
             },
@@ -265,20 +265,21 @@
             return this.each(function() {
                 var $elem = $(this);
                 var data = $elem.data('digilib');
-                var elemSettings;
+                var params, elemSettings;
                 // if the plugin hasn't been initialized yet
                 if (!data) {
                     // merge query parameters
                     if (isFullscreen) {
-                        elemSettings = $.extend({}, settings, queryParams);
+                        params = queryParams;
                     } else {
-                        elemSettings = $.extend({}, settings, parseImgParams($elem));
-                    }
+                        params = parseImgParams($elem);
+                    };
                     // store $(this) element in the settings
+                    elemSettings = $.extend({}, settings, params);
                     data =  {
                             $elem : $elem,
                             settings : elemSettings,
-                            queryParams : queryParams
+                            queryParams : params
                     };
                     // store in data element
                     $elem.data('digilib', data);
@@ -439,6 +440,27 @@
             }
             data.settings.cont = factor;
             redisplay(data);
+        },
+
+        reset : function (data) {
+            var settings = data.settings;
+            var paramNames = settings.digilibParamNames;
+            var params = data.queryParams;
+            resetData(data);
+            // delete all digilib parameters
+            for (var i = 0; i < paramNames.length; i++) {
+                var paramName = paramNames[i];
+                delete settings[paramName];
+                };
+            // fullscreen: restore only fn/pn parameters 
+            if (settings.interactionMode === 'fullscreen') {
+                settings['fn'] = params.fn;
+                settings['pn'] = params.pn;
+            // embedded: restore original parameters 
+            } else {
+                $.extend(settings, params);
+                };
+            redisplay(data);
         }
     };
 
@@ -599,12 +621,13 @@
             }
             settings.mo = mo;
         }
-        // digilib option birdview
-        if (settings.isBirdDivVisible) {
-            data.dlOpts.birdview = 1;
-        } else {
-            delete data.dlOpts.birdview;
-        }
+        // digilib option birdview TODO: replace with cookie
+        //if (settings.isBirdDivVisible) {
+        //    data.dlOpts.birdview = 1;
+        //} else {
+        //    delete data.dlOpts.birdview;
+        //}
+
         // digilib options
         if (data.dlOpts) {
             var clop = '';
@@ -618,6 +641,14 @@
         }
     };
 
+    // clear digilib data for reset
+    var resetData = function (data) {
+        if (data.zoomArea) delete data.zoomArea;
+        if (data.marks) delete data.marks;
+        if (data.scalerFlags) delete data.scalerFlags;
+        if (data.dlOpts) delete data.dlOpts;
+    };
+
     // (re)load the img from a new scaler URL
     var redisplay = function (data) {
         var settings = data.settings; 
@@ -1142,5 +1173,5 @@
             $.error( 'action ' + action + ' does not exist on jQuery.digilib' );
         }
     };
-    
+
 })(jQuery);
\ No newline at end of file