diff client/digitallibrary/jquery/jquery.digilib.js @ 691:fe2bb8f926be jquery

merge with f5f2b262be07f41fa6c8d2f60332b198eaa2d603
author robcast
date Wed, 26 Jan 2011 23:43:39 +0100
parents 7c8d5bfc5243 f5f2b262be07
children ab8054bba8d3
line wrap: on
line diff
--- a/client/digitallibrary/jquery/jquery.digilib.js	Wed Jan 26 23:25:41 2011 +0100
+++ b/client/digitallibrary/jquery/jquery.digilib.js	Wed Jan 26 23:43:39 2011 +0100
@@ -34,7 +34,7 @@
 (function($) {
     var buttons = {
         reference : {
-            onclick : "javascript:getRefWin()",
+            onclick : "reference",
             tooltip : "get a reference URL",
             img : "reference.png"
             },
@@ -89,7 +89,7 @@
             img : "help.png"
             },
         reset : {
-            onclick : "javascript:resetImage()",
+            onclick : "reset",
             tooltip : "reset image",
             img : "reset.png"
             },
@@ -212,15 +212,14 @@
             'fullscreen' : {
                 // path to button images (must end with a slash)
                 'imagePath' : 'img/fullscreen/',
-                //'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"],
                 'standardSet' : ["reference","zoomin","zoomout","zoomarea","zoomfull","pagewidth","back","fwd","page","bird","SEP","help","reset","moreoptions"],
                 'specialSet' : ["mark","delmark","hmir","vmir","rot","brgt","cont","rgb","quality","size","calibrationx","scale","SEP","lessoptions"],
                 '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']
                 }
             },
@@ -270,20 +269,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);
@@ -478,6 +478,38 @@
                         function () {$newSet.show();});
                 data.visibleButtonSets += 1;
             }
+        },
+
+        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);
+        },
+
+        reference : function (data) {
+            var settings = data.settings;
+            var url;
+            if (settings.interactionMode === 'fullscreen') {
+                url = getDigilibUrl(data);
+            } else {
+                url = getScalerUrl(data);
+                };
+            window.prompt("URL reference to the current view", url);
         }
     };
 
@@ -638,12 +670,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 = '';
@@ -657,6 +690,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;