comparison webapp/src/main/webapp/jquery/jquery.digilib.js @ 989:f4757bf6ab65

new arrows plugin for scroll arrows next to the image. also new mechanism for specifying insets.
author robcast
date Fri, 03 Feb 2012 18:12:47 +0100
parents f58a6ed1464b
children 2feb71b40e10
comparison
equal deleted inserted replaced
988:b6261d3d68c2 989:f4757bf6ab65
36 36
37 (function($) { 37 (function($) {
38 38
39 var defaults = { 39 var defaults = {
40 // version of this script 40 // version of this script
41 'version' : 'jquery.digilib.js 2.1.2b1', 41 'version' : 'jquery.digilib.js 2.1.2b2',
42 // logo url 42 // logo url
43 'logoUrl' : 'img/digilib-logo-text1.png', 43 'logoUrl' : 'img/digilib-logo-text1.png',
44 // homepage url (behind logo) 44 // homepage url (behind logo)
45 'homeUrl' : 'http://digilib.berlios.de', 45 'homeUrl' : 'http://digilib.berlios.de',
46 // base URL to digilib (e.g. 'http://digilib.mpiwg-berlin.mpg.de/digitallibrary') 46 // base URL to digilib (e.g. 'http://digilib.mpiwg-berlin.mpg.de/digitallibrary')
86 'previewImgHeight' : 200, 86 'previewImgHeight' : 200,
87 // maximum width or height of preview background image for drag-scroll 87 // maximum width or height of preview background image for drag-scroll
88 'maxBgSize' : 10000, 88 'maxBgSize' : 10000,
89 // parameters used by background image 89 // parameters used by background image
90 'previewImgParamNames' : ['fn','pn','dw','dh','mo','rot'], 90 'previewImgParamNames' : ['fn','pn','dw','dh','mo','rot'],
91 // reserved space in full page display (default value accounts for vertical scrollbar) 91 // reserved space in full page display (default value accounts for body margins)
92 'scalerInset' : 10 92 'scalerInsets' : { 'x' : 16, 'y': 20 }
93 }; 93 };
94 94
95 // list of plugins 95 // list of plugins
96 var plugins = {}; 96 var plugins = {};
97 // object to export functions to plugins 97 // object to export functions to plugins
177 } else { 177 } else {
178 // data exists 178 // data exists
179 elemSettings = data.settings; 179 elemSettings = data.settings;
180 } 180 }
181 unpackParams(data); 181 unpackParams(data);
182 // list of current insets (dynamic for buttons etc.)
183 data.currentInsets = {'static' : elemSettings.scalerInsets};
182 // check if browser knows *background-size 184 // check if browser knows *background-size
183 for (var bs in {'':1, '-moz-':1, '-webkit-':1, '-o-':1}) { 185 for (var bs in {'':1, '-moz-':1, '-webkit-':1, '-o-':1}) {
184 if ($elem.css(bs+'background-size')) { 186 if ($elem.css(bs+'background-size')) {
185 data.hasBgSize = true; 187 data.hasBgSize = true;
186 data.bgSizeName = bs+'background-size'; 188 data.bgSizeName = bs+'background-size';
913 915
914 /** 916 /**
915 * returns maximum size for scaler img in fullscreen mode. 917 * returns maximum size for scaler img in fullscreen mode.
916 */ 918 */
917 var getFullscreenImgSize = function (data) { 919 var getFullscreenImgSize = function (data) {
918 var mode = data.settings.interactionMode; 920 //var mode = data.settings.interactionMode;
919 var $win = $(window); 921 var $win = $(window);
920 var winH = $win.height(); 922 var winH = $win.height();
921 var winW = $win.width(); 923 var winW = $win.width();
922 var $body = $('body'); 924 // add all current insets
923 // include standard body margins and check plausibility 925 var insets = { 'x' : 0, 'y' : 0};
924 var borderW = $body.outerWidth(true) - $body.width(); 926 for (var n in data.currentInsets) {
925 if (borderW === 0 || borderW > 100) { 927 insets.x += data.currentInsets[n].x;
926 console.debug("fixing border width for getFullscreenImgSize!"); 928 insets.y += data.currentInsets[n].y;
927 borderW = data.settings.scalerInset; 929 };
928 } 930 // accounting for left/right border, body margins and additional requirements
929 var borderH = $body.outerHeight(true) - $body.height(); 931 var imgW = winW - insets.x;
930 if (borderH === 0 || borderH > 100) { 932 var imgH = winH - insets.y;
931 console.debug("fixing border height for getFullscreenImgSize!"); 933 console.debug('screen w/h:', winW, winH, 'window.width', $win.width(), 'img w/h:', imgW, imgH);
932 borderH = 5;
933 }
934 var buttonsW = 0;
935 if (data.buttons != null) {
936 // get button width from settings
937 buttonsW = data.settings.buttonSettings[mode].buttonSetWidth * data.settings.visibleButtonSets;
938 }
939 // account for left/right border, body margins and additional requirements
940 var imgW = winW - borderW - buttonsW;
941 var imgH = winH - borderH;
942 console.debug('screen w/h:', winW, winH, 'window.width', $win.width(), 'border:', borderW, 'buttonsW:', buttonsW, 'img w/h:', imgW, imgH);
943 return geom.size(imgW, imgH); 934 return geom.size(imgW, imgH);
944 }; 935 };
945 936
946 /** 937 /**
947 * returns a rectangle.with the fullscreen dimensions 938 * returns a rectangle.with the fullscreen dimensions