source: main/trunk/greenstone3/web/interfaces/oran/js/zoomer.js@ 25177

Last change on this file since 25177 was 25177, checked in by sjm84, 12 years ago

Some major upgrades to the document view

  • Property svn:executable set to *
File size: 2.8 KB
Line 
1(function ($)
2{
3 $.anythingZoomer =
4 {
5 defaults:
6 {
7 smallArea: "#small",
8 largeArea: "#large",
9 zoomPort: "#overlay",
10 mover: "#mover",
11 expansionSize: 30,
12 speedMultiplier: 1.5
13 }
14 }
15 $.fn.extend(
16 {
17 anythingZoomer: function (config)
18 {
19 var config = $.extend({}, $.anythingZoomer.defaults, config);
20 var wrap = $(this);
21 var smallArea = $(config.smallArea);
22 var largeArea = $(config.largeArea);
23 var zoomPort = $(config.zoomPort);
24 var mover = $(config.mover);
25 var expansionSize = config.expansionSize;
26 var speedMultiplier = config.speedMultiplier;
27 var over = false;
28
29 function setup(smallArea, largeArea, wrap, zoomPort, mover, expansionSize, speedMultiplier)
30 {
31 smallArea.show();
32 zoomPort.fadeIn();
33 mover.css(
34 {
35 width: mover.data("origWidth"),
36 height: mover.data("origHeight"),
37 overflow: "hidden",
38 position: "absolute"
39 })
40 wrap.css(
41 {
42 //width: "auto"
43 }).mousemove(function (e)
44 {
45 var x = e.pageX - smallArea.offset().left;
46 var y = e.pageY - smallArea.offset().top;
47 if ((x < -expansionSize) || (x > smallArea.width() + expansionSize) || (y < -expansionSize) || (y > smallArea.height() + expansionSize))
48 {
49 if (over)
50 {
51 mover.fadeOut(50);
52 over = false;
53 }
54 return;
55 }
56 else
57 {
58 if (!over)
59 {
60 mover.fadeIn();
61 over = true;
62 }
63 }
64 mover.css(
65 {
66 top: y - (mover.height() / 2),
67 left: x - (mover.width() / 2)
68 });
69 largeArea.css(
70 {
71 left: (-(e.pageX - smallArea.offset().left) * speedMultiplier) + (mover.width() / 2),
72 top: (-(e.pageY - smallArea.offset().top) * speedMultiplier) + (mover.height() / 2),
73 });
74 }).dblclick(function ()
75 {
76 expand(smallArea, largeArea, wrap, zoomPort, mover, expansionSize, speedMultiplier);
77 });
78 };
79
80 function expand(smallArea, largeArea, wrap, zoomPort, mover, expansionSize, speedMultiplier)
81 {
82 smallArea.hide();
83 zoomPort.hide();
84 mover.fadeIn().data("origWidth", mover.width()).data("origHeight", mover.height()).css(
85 {
86 position: "static",
87 height: "auto",
88 width: "auto",
89 overflow: "visible"
90 });
91 wrap.css(
92 {
93 width: "100%"
94 }).unbind().dblclick(function ()
95 {
96 setup(smallArea, largeArea, wrap, zoomPort, mover, expansionSize, speedMultiplier);
97 });
98 largeArea.css(
99 {
100 left: 0,
101 top: 0,
102 width: largeArea.data("origWidth")
103 });
104 };
105 mover.data("origWidth", mover.width()).data("origHeight", mover.height());
106 // Because the largeArea is often hidden, the width() function returns zero, take width from CSS instead
107 largeArea.data("origWidth", largeArea.css("width"));
108 setup(smallArea, largeArea, wrap, zoomPort, mover, expansionSize, speedMultiplier);
109 return this;
110 }
111 });
112})(jQuery);
Note: See TracBrowser for help on using the repository browser.