sweetie 0.1.2 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +0 -1
- data/.rspec +3 -0
- data/.travis.yml +3 -2
- data/Gemfile +5 -0
- data/README.md +73 -16
- data/lib/sweetie.rb +2 -3
- data/lib/sweetie/bitbucket.rb +143 -0
- data/lib/sweetie/conversion.rb +86 -0
- data/lib/sweetie/helper.rb +85 -0
- data/lib/sweetie/version.rb +4 -0
- data/spec/source/bitbucket/user_changeset.json +30 -0
- data/spec/source/bitbucket/user_changeset_expectation.txt +1 -0
- data/spec/source/bitbucket/user_repositories.json +143 -0
- data/spec/sweetie_bitbucket_spec.rb +66 -0
- data/spec/sweetie_conversion_spec.rb +31 -0
- data/sweetie.gemspec +22 -18
- metadata +109 -112
- data/doc/Sweetie.html +0 -125
- data/doc/_index.html +0 -121
- data/doc/class_list.html +0 -47
- data/doc/css/common.css +0 -1
- data/doc/css/full_list.css +0 -53
- data/doc/css/style.css +0 -320
- data/doc/file.README.html +0 -95
- data/doc/file_list.html +0 -49
- data/doc/frames.html +0 -13
- data/doc/index.html +0 -95
- data/doc/js/app.js +0 -205
- data/doc/js/full_list.js +0 -150
- data/doc/js/jquery.js +0 -16
- data/doc/method_list.html +0 -126
- data/doc/top-level-namespace.html +0 -103
- data/spec/source/site/css/config.rb +0 -24
- data/spec/source/site/css/sass/site.sass +0 -180
- data/spec/source/site/css/stylesheets/iphone.css +0 -17
- data/spec/source/site/css/stylesheets/site.css +0 -246
- data/spec/source/site/css/stylesheets/syntax.css +0 -60
- data/spec/source/site/js/FancyZoom.js +0 -761
- data/spec/source/site/js/FancyZoomHTML.js +0 -318
- data/spec/source/site/test/config.rb +0 -24
- data/spec/source/site/test/sass/ie.scss +0 -5
- data/spec/source/site/test/sass/print.scss +0 -3
- data/spec/source/site/test/sass/screen.scss +0 -6
- data/spec/source/site/test/stylesheets/ie.css +0 -5
- data/spec/source/site/test/stylesheets/print.css +0 -3
- data/spec/source/site/test/stylesheets/screen.css +0 -69
- data/spec/sweetie_spec.rb +0 -30
@@ -1,246 +0,0 @@
|
|
1
|
-
/* line 13, ../sass/site.sass */
|
2
|
-
* {
|
3
|
-
margin: 5px 0 0 0;
|
4
|
-
padding: 0;
|
5
|
-
}
|
6
|
-
|
7
|
-
/* line 17, ../sass/site.sass */
|
8
|
-
html, body {
|
9
|
-
height: 100%;
|
10
|
-
}
|
11
|
-
|
12
|
-
/* line 20, ../sass/site.sass */
|
13
|
-
body {
|
14
|
-
background-color: white;
|
15
|
-
font: 400 1em trebuchet ms, arial, clean;
|
16
|
-
text-align: center;
|
17
|
-
}
|
18
|
-
|
19
|
-
/* line 25, ../sass/site.sass */
|
20
|
-
h1, h2, h3, h4, h5, h6 {
|
21
|
-
font-size: 110%;
|
22
|
-
margin: 30px 0 10px 0;
|
23
|
-
text-transform: uppercase;
|
24
|
-
}
|
25
|
-
|
26
|
-
/* line 30, ../sass/site.sass */
|
27
|
-
h3 {
|
28
|
-
margin: 20px 0 10px 0;
|
29
|
-
}
|
30
|
-
|
31
|
-
/* line 33, ../sass/site.sass */
|
32
|
-
h1 {
|
33
|
-
font-size: 120%;
|
34
|
-
}
|
35
|
-
|
36
|
-
/* line 36, ../sass/site.sass */
|
37
|
-
h2, h3, h4, h5, h6 {
|
38
|
-
font-size: 110%;
|
39
|
-
}
|
40
|
-
|
41
|
-
/* line 39, ../sass/site.sass */
|
42
|
-
#sitetitle {
|
43
|
-
font: 400 3.5em arial, sans-serif;
|
44
|
-
letter-spacing: -0.1em;
|
45
|
-
text-transform: uppercase;
|
46
|
-
height: 1.15em;
|
47
|
-
}
|
48
|
-
/* line 44, ../sass/site.sass */
|
49
|
-
#sitetitle a {
|
50
|
-
color: #bdbbbb;
|
51
|
-
text-decoration: none;
|
52
|
-
border-bottom: 0px;
|
53
|
-
}
|
54
|
-
|
55
|
-
/* line 49, ../sass/site.sass */
|
56
|
-
#tagseperator {
|
57
|
-
font-size: 3.5em;
|
58
|
-
color: #bdbbbb;
|
59
|
-
}
|
60
|
-
|
61
|
-
/* line 53, ../sass/site.sass */
|
62
|
-
#tagline {
|
63
|
-
font-size: 0.9em;
|
64
|
-
color: #bdbbbb;
|
65
|
-
}
|
66
|
-
|
67
|
-
/* line 57, ../sass/site.sass */
|
68
|
-
a#navlink, a#archivelink {
|
69
|
-
padding-right: 10px;
|
70
|
-
text-transform: uppercase;
|
71
|
-
border-bottom: 0px dotted #0048a2;
|
72
|
-
}
|
73
|
-
|
74
|
-
/* line 62, ../sass/site.sass */
|
75
|
-
a#navlink:hover {
|
76
|
-
color: #3366cc;
|
77
|
-
}
|
78
|
-
|
79
|
-
/* line 65, ../sass/site.sass */
|
80
|
-
a#archivelink {
|
81
|
-
float: right;
|
82
|
-
}
|
83
|
-
|
84
|
-
/* line 68, ../sass/site.sass */
|
85
|
-
.title {
|
86
|
-
margin-bottom: 10px;
|
87
|
-
}
|
88
|
-
|
89
|
-
/* line 71, ../sass/site.sass */
|
90
|
-
.nav {
|
91
|
-
margin-bottom: 40px;
|
92
|
-
border-bottom: 2px solid #bdbbbb;
|
93
|
-
}
|
94
|
-
|
95
|
-
/* line 75, ../sass/site.sass */
|
96
|
-
p {
|
97
|
-
margin: 1em 0;
|
98
|
-
}
|
99
|
-
|
100
|
-
/* line 78, ../sass/site.sass */
|
101
|
-
a {
|
102
|
-
color: #0048a2;
|
103
|
-
text-decoration: none;
|
104
|
-
border-bottom: 1px dotted #0048a2;
|
105
|
-
}
|
106
|
-
|
107
|
-
/* line 83, ../sass/site.sass */
|
108
|
-
a.blog {
|
109
|
-
border-bottom: 0px;
|
110
|
-
}
|
111
|
-
|
112
|
-
/* line 86, ../sass/site.sass */
|
113
|
-
a.blog-small {
|
114
|
-
border-bottom: 0px;
|
115
|
-
float: left;
|
116
|
-
margin-left: 10px;
|
117
|
-
}
|
118
|
-
|
119
|
-
/* line 91, ../sass/site.sass */
|
120
|
-
a:hover {
|
121
|
-
color: #3366cc;
|
122
|
-
border-bottom: none;
|
123
|
-
}
|
124
|
-
|
125
|
-
/* line 95, ../sass/site.sass */
|
126
|
-
table {
|
127
|
-
font-size: inherit;
|
128
|
-
font: 100%;
|
129
|
-
}
|
130
|
-
|
131
|
-
/* line 99, ../sass/site.sass */
|
132
|
-
img {
|
133
|
-
border: 0px dotted #dddddd;
|
134
|
-
}
|
135
|
-
|
136
|
-
/* line 103, ../sass/site.sass */
|
137
|
-
ul li, ol li {
|
138
|
-
margin-left: 40px;
|
139
|
-
}
|
140
|
-
|
141
|
-
/* my posts */
|
142
|
-
/* line 107, ../sass/site.sass */
|
143
|
-
ul.posts {
|
144
|
-
margin: 1em;
|
145
|
-
list-style-type: none;
|
146
|
-
}
|
147
|
-
/* line 110, ../sass/site.sass */
|
148
|
-
ul.posts li {
|
149
|
-
line-height: 1.6em;
|
150
|
-
}
|
151
|
-
/* line 112, ../sass/site.sass */
|
152
|
-
ul.posts span {
|
153
|
-
font-size: 80%;
|
154
|
-
color: #bdbbbb;
|
155
|
-
}
|
156
|
-
|
157
|
-
/* line 116, ../sass/site.sass */
|
158
|
-
ul.archiv {
|
159
|
-
margin: 1em;
|
160
|
-
list-style-type: none;
|
161
|
-
}
|
162
|
-
/* line 119, ../sass/site.sass */
|
163
|
-
ul.archiv li {
|
164
|
-
line-height: 1.5em;
|
165
|
-
margin-left: 15px;
|
166
|
-
}
|
167
|
-
|
168
|
-
/* line 123, ../sass/site.sass */
|
169
|
-
.site {
|
170
|
-
font-size: 100%;
|
171
|
-
text-align: justify;
|
172
|
-
width: 40em;
|
173
|
-
margin: 0 auto 3em auto;
|
174
|
-
line-height: 1.4em;
|
175
|
-
}
|
176
|
-
/* line 130, ../sass/site.sass */
|
177
|
-
.site .footer {
|
178
|
-
font-size: 70%;
|
179
|
-
border-top: 4px solid #bdbbbb;
|
180
|
-
margin-top: 10px;
|
181
|
-
}
|
182
|
-
/* line 134, ../sass/site.sass */
|
183
|
-
.site .footer a {
|
184
|
-
text-decoration: none;
|
185
|
-
border-bottom: 0px dotted #0048a2;
|
186
|
-
}
|
187
|
-
|
188
|
-
/* Posts */
|
189
|
-
/* line 140, ../sass/site.sass */
|
190
|
-
#post pre, .site pre {
|
191
|
-
border: 1px solid #dddddd;
|
192
|
-
background-color: #eeeeff;
|
193
|
-
font: 15px helvetica, arial, clean, sans-serif;
|
194
|
-
padding: 0 0.4em;
|
195
|
-
white-space: pre-wrap;
|
196
|
-
}
|
197
|
-
/* line 146, ../sass/site.sass */
|
198
|
-
#post code, .site code {
|
199
|
-
font-size: 105%;
|
200
|
-
border: 1px dotted #888888;
|
201
|
-
background-color: #ffff88;
|
202
|
-
padding: 0 0.2em;
|
203
|
-
display: inline-block;
|
204
|
-
}
|
205
|
-
/* line 152, ../sass/site.sass */
|
206
|
-
#post .highlight code, .site .highlight code {
|
207
|
-
border: none;
|
208
|
-
background-color: #eeeeff;
|
209
|
-
}
|
210
|
-
|
211
|
-
/* Miscleanous */
|
212
|
-
/* line 157, ../sass/site.sass */
|
213
|
-
span.tweet {
|
214
|
-
float: right;
|
215
|
-
margin-top: 5px;
|
216
|
-
}
|
217
|
-
/* line 160, ../sass/site.sass */
|
218
|
-
span.tweet a {
|
219
|
-
text-decoration: none;
|
220
|
-
border-bottom: none;
|
221
|
-
font-style: italic;
|
222
|
-
}
|
223
|
-
|
224
|
-
/* line 165, ../sass/site.sass */
|
225
|
-
.author {
|
226
|
-
font-size: 80%;
|
227
|
-
color: #bdbbbb;
|
228
|
-
margin: 0 0 1em 0;
|
229
|
-
float: right;
|
230
|
-
}
|
231
|
-
/* line 170, ../sass/site.sass */
|
232
|
-
.author a {
|
233
|
-
text-decoration: none;
|
234
|
-
border-bottom: none;
|
235
|
-
font-style: italic;
|
236
|
-
}
|
237
|
-
|
238
|
-
/* line 175, ../sass/site.sass */
|
239
|
-
#disqus_thread {
|
240
|
-
margin: 2em 0 0 0;
|
241
|
-
}
|
242
|
-
|
243
|
-
/* line 178, ../sass/site.sass */
|
244
|
-
.clearer {
|
245
|
-
clear: both;
|
246
|
-
}
|
@@ -1,60 +0,0 @@
|
|
1
|
-
.highlight { background: #ffffff; }
|
2
|
-
.highlight .c { color: #999988; font-style: italic } /* Comment */
|
3
|
-
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
|
4
|
-
.highlight .k { font-weight: bold } /* Keyword */
|
5
|
-
.highlight .o { font-weight: bold } /* Operator */
|
6
|
-
.highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */
|
7
|
-
.highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */
|
8
|
-
.highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */
|
9
|
-
.highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
|
10
|
-
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
|
11
|
-
.highlight .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */
|
12
|
-
.highlight .ge { font-style: italic } /* Generic.Emph */
|
13
|
-
.highlight .gr { color: #aa0000 } /* Generic.Error */
|
14
|
-
.highlight .gh { color: #999999 } /* Generic.Heading */
|
15
|
-
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
|
16
|
-
.highlight .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */
|
17
|
-
.highlight .go { color: #888888 } /* Generic.Output */
|
18
|
-
.highlight .gp { color: #555555 } /* Generic.Prompt */
|
19
|
-
.highlight .gs { font-weight: bold } /* Generic.Strong */
|
20
|
-
.highlight .gu { color: #aaaaaa } /* Generic.Subheading */
|
21
|
-
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
|
22
|
-
.highlight .kc { font-weight: bold } /* Keyword.Constant */
|
23
|
-
.highlight .kd { font-weight: bold } /* Keyword.Declaration */
|
24
|
-
.highlight .kp { font-weight: bold } /* Keyword.Pseudo */
|
25
|
-
.highlight .kr { font-weight: bold } /* Keyword.Reserved */
|
26
|
-
.highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */
|
27
|
-
.highlight .m { color: #009999 } /* Literal.Number */
|
28
|
-
.highlight .s { color: #d14 } /* Literal.String */
|
29
|
-
.highlight .na { color: #008080 } /* Name.Attribute */
|
30
|
-
.highlight .nb { color: #0086B3 } /* Name.Builtin */
|
31
|
-
.highlight .nc { color: #445588; font-weight: bold } /* Name.Class */
|
32
|
-
.highlight .no { color: #008080 } /* Name.Constant */
|
33
|
-
.highlight .ni { color: #800080 } /* Name.Entity */
|
34
|
-
.highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */
|
35
|
-
.highlight .nf { color: #990000; font-weight: bold } /* Name.Function */
|
36
|
-
.highlight .nn { color: #555555 } /* Name.Namespace */
|
37
|
-
.highlight .nt { color: #000080 } /* Name.Tag */
|
38
|
-
.highlight .nv { color: #008080 } /* Name.Variable */
|
39
|
-
.highlight .ow { font-weight: bold } /* Operator.Word */
|
40
|
-
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
|
41
|
-
.highlight .mf { color: #009999 } /* Literal.Number.Float */
|
42
|
-
.highlight .mh { color: #009999 } /* Literal.Number.Hex */
|
43
|
-
.highlight .mi { color: #009999 } /* Literal.Number.Integer */
|
44
|
-
.highlight .mo { color: #009999 } /* Literal.Number.Oct */
|
45
|
-
.highlight .sb { color: #d14 } /* Literal.String.Backtick */
|
46
|
-
.highlight .sc { color: #d14 } /* Literal.String.Char */
|
47
|
-
.highlight .sd { color: #d14 } /* Literal.String.Doc */
|
48
|
-
.highlight .s2 { color: #d14 } /* Literal.String.Double */
|
49
|
-
.highlight .se { color: #d14 } /* Literal.String.Escape */
|
50
|
-
.highlight .sh { color: #d14 } /* Literal.String.Heredoc */
|
51
|
-
.highlight .si { color: #d14 } /* Literal.String.Interpol */
|
52
|
-
.highlight .sx { color: #d14 } /* Literal.String.Other */
|
53
|
-
.highlight .sr { color: #009926 } /* Literal.String.Regex */
|
54
|
-
.highlight .s1 { color: #d14 } /* Literal.String.Single */
|
55
|
-
.highlight .ss { color: #990073 } /* Literal.String.Symbol */
|
56
|
-
.highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */
|
57
|
-
.highlight .vc { color: #008080 } /* Name.Variable.Class */
|
58
|
-
.highlight .vg { color: #008080 } /* Name.Variable.Global */
|
59
|
-
.highlight .vi { color: #008080 } /* Name.Variable.Instance */
|
60
|
-
.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */
|
@@ -1,761 +0,0 @@
|
|
1
|
-
// FancyZoom.js - v1.1 - http://www.fancyzoom.com
|
2
|
-
//
|
3
|
-
// Copyright (c) 2008 Cabel Sasser / Panic Inc
|
4
|
-
// All rights reserved.
|
5
|
-
//
|
6
|
-
// Requires: FancyZoomHTML.js
|
7
|
-
// Instructions: Include JS files in page, call setupZoom() in onLoad. That's it!
|
8
|
-
// Any <a href> links to images will be updated to zoom inline.
|
9
|
-
// Add rel="nozoom" to your <a href> to disable zooming for an image.
|
10
|
-
//
|
11
|
-
// Redistribution and use of this effect in source form, with or without modification,
|
12
|
-
// are permitted provided that the following conditions are met:
|
13
|
-
//
|
14
|
-
// * USE OF SOURCE ON COMMERCIAL (FOR-PROFIT) WEBSITE REQUIRES ONE-TIME LICENSE FEE PER DOMAIN.
|
15
|
-
// Reasonably priced! Visit www.fancyzoom.com for licensing instructions. Thanks!
|
16
|
-
//
|
17
|
-
// * Non-commercial (personal) website use is permitted without license/payment!
|
18
|
-
//
|
19
|
-
// * Redistribution of source code must retain the above copyright notice,
|
20
|
-
// this list of conditions and the following disclaimer.
|
21
|
-
//
|
22
|
-
// * Redistribution of source code and derived works cannot be sold without specific
|
23
|
-
// written prior permission.
|
24
|
-
//
|
25
|
-
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
26
|
-
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
27
|
-
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
28
|
-
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
|
29
|
-
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
30
|
-
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
31
|
-
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
32
|
-
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
33
|
-
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
34
|
-
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
35
|
-
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
36
|
-
|
37
|
-
var includeCaption = true; // Turn on the "caption" feature, and write out the caption HTML
|
38
|
-
var zoomTime = 5; // Milliseconds between frames of zoom animation
|
39
|
-
var zoomSteps = 15; // Number of zoom animation frames
|
40
|
-
var includeFade = 1; // Set to 1 to fade the image in / out as it zooms
|
41
|
-
var minBorder = 90; // Amount of padding between large, scaled down images, and the window edges
|
42
|
-
var shadowSettings = '0px 5px 25px rgba(0, 0, 0, '; // Blur, radius, color of shadow for compatible browsers
|
43
|
-
|
44
|
-
var zoomImagesURI = '/images/images-global/zoom/'; // Location of the zoom and shadow images
|
45
|
-
|
46
|
-
// Init. Do not add anything below this line, unless it's something awesome.
|
47
|
-
|
48
|
-
var myWidth = 0, myHeight = 0, myScroll = 0; myScrollWidth = 0; myScrollHeight = 0;
|
49
|
-
var zoomOpen = false, preloadFrame = 1, preloadActive = false, preloadTime = 0, imgPreload = new Image();
|
50
|
-
var preloadAnimTimer = 0;
|
51
|
-
|
52
|
-
var zoomActive = new Array(); var zoomTimer = new Array();
|
53
|
-
var zoomOrigW = new Array(); var zoomOrigH = new Array();
|
54
|
-
var zoomOrigX = new Array(); var zoomOrigY = new Array();
|
55
|
-
|
56
|
-
var zoomID = "ZoomBox";
|
57
|
-
var theID = "ZoomImage";
|
58
|
-
var zoomCaption = "ZoomCaption";
|
59
|
-
var zoomCaptionDiv = "ZoomCapDiv";
|
60
|
-
|
61
|
-
if (navigator.userAgent.indexOf("MSIE") != -1) {
|
62
|
-
var browserIsIE = true;
|
63
|
-
}
|
64
|
-
|
65
|
-
// Zoom: Setup The Page! Called in your <body>'s onLoad handler.
|
66
|
-
|
67
|
-
function setupZoom() {
|
68
|
-
prepZooms();
|
69
|
-
insertZoomHTML();
|
70
|
-
zoomdiv = document.getElementById(zoomID);
|
71
|
-
zoomimg = document.getElementById(theID);
|
72
|
-
}
|
73
|
-
|
74
|
-
// Zoom: Inject Javascript functions into hrefs pointing to images, one by one!
|
75
|
-
// Skip any href that contains a rel="nozoom" tag.
|
76
|
-
// This is done at page load time via an onLoad() handler.
|
77
|
-
|
78
|
-
function prepZooms() {
|
79
|
-
if (! document.getElementsByTagName) {
|
80
|
-
return;
|
81
|
-
}
|
82
|
-
var links = document.getElementsByTagName("a");
|
83
|
-
for (i = 0; i < links.length; i++) {
|
84
|
-
if (links[i].getAttribute("href")) {
|
85
|
-
if (links[i].getAttribute("href").search(/(.*)\.(jpg|jpeg|gif|png|bmp|tif|tiff)/gi) != -1) {
|
86
|
-
if (links[i].getAttribute("rel") != "nozoom") {
|
87
|
-
links[i].onclick = function (event) { return zoomClick(this, event); };
|
88
|
-
links[i].onmouseover = function () { zoomPreload(this); };
|
89
|
-
}
|
90
|
-
}
|
91
|
-
}
|
92
|
-
}
|
93
|
-
}
|
94
|
-
|
95
|
-
// Zoom: Load an image into an image object. When done loading, function sets preloadActive to false,
|
96
|
-
// so other bits know that they can proceed with the zoom.
|
97
|
-
// Preloaded image is stored in imgPreload and swapped out in the zoom function.
|
98
|
-
|
99
|
-
function zoomPreload(from) {
|
100
|
-
|
101
|
-
var theimage = from.getAttribute("href");
|
102
|
-
|
103
|
-
// Only preload if we have to, i.e. the image isn't this image already
|
104
|
-
|
105
|
-
if (imgPreload.src.indexOf(from.getAttribute("href").substr(from.getAttribute("href").lastIndexOf("/"))) == -1) {
|
106
|
-
preloadActive = true;
|
107
|
-
imgPreload = new Image();
|
108
|
-
|
109
|
-
// Set a function to fire when the preload is complete, setting flags along the way.
|
110
|
-
|
111
|
-
imgPreload.onload = function() {
|
112
|
-
preloadActive = false;
|
113
|
-
}
|
114
|
-
|
115
|
-
// Load it!
|
116
|
-
imgPreload.src = theimage;
|
117
|
-
}
|
118
|
-
}
|
119
|
-
|
120
|
-
// Zoom: Start the preloading animation cycle.
|
121
|
-
|
122
|
-
function preloadAnimStart() {
|
123
|
-
preloadTime = new Date();
|
124
|
-
document.getElementById("ZoomSpin").style.left = (myWidth / 2) + 'px';
|
125
|
-
document.getElementById("ZoomSpin").style.top = ((myHeight / 2) + myScroll) + 'px';
|
126
|
-
document.getElementById("ZoomSpin").style.visibility = "visible";
|
127
|
-
preloadFrame = 1;
|
128
|
-
document.getElementById("SpinImage").src = zoomImagesURI+'zoom-spin-'+preloadFrame+'.png';
|
129
|
-
preloadAnimTimer = setInterval("preloadAnim()", 100);
|
130
|
-
}
|
131
|
-
|
132
|
-
// Zoom: Display and ANIMATE the jibber-jabber widget. Once preloadActive is false, bail and zoom it up!
|
133
|
-
|
134
|
-
function preloadAnim(from) {
|
135
|
-
if (preloadActive != false) {
|
136
|
-
document.getElementById("SpinImage").src = zoomImagesURI+'zoom-spin-'+preloadFrame+'.png';
|
137
|
-
preloadFrame++;
|
138
|
-
if (preloadFrame > 12) preloadFrame = 1;
|
139
|
-
} else {
|
140
|
-
document.getElementById("ZoomSpin").style.visibility = "hidden";
|
141
|
-
clearInterval(preloadAnimTimer);
|
142
|
-
preloadAnimTimer = 0;
|
143
|
-
zoomIn(preloadFrom);
|
144
|
-
}
|
145
|
-
}
|
146
|
-
|
147
|
-
// ZOOM CLICK: We got a click! Should we do the zoom? Or wait for the preload to complete?
|
148
|
-
// todo?: Double check that imgPreload src = clicked src
|
149
|
-
|
150
|
-
function zoomClick(from, evt) {
|
151
|
-
|
152
|
-
var shift = getShift(evt);
|
153
|
-
|
154
|
-
// Check for Command / Alt key. If pressed, pass them through -- don't zoom!
|
155
|
-
if (! evt && window.event && (window.event.metaKey || window.event.altKey)) {
|
156
|
-
return true;
|
157
|
-
} else if (evt && (evt.metaKey|| evt.altKey)) {
|
158
|
-
return true;
|
159
|
-
}
|
160
|
-
|
161
|
-
// Get browser dimensions
|
162
|
-
getSize();
|
163
|
-
|
164
|
-
// If preloading still, wait, and display the spinner.
|
165
|
-
if (preloadActive == true) {
|
166
|
-
// But only display the spinner if it's not already being displayed!
|
167
|
-
if (preloadAnimTimer == 0) {
|
168
|
-
preloadFrom = from;
|
169
|
-
preloadAnimStart();
|
170
|
-
}
|
171
|
-
} else {
|
172
|
-
// Otherwise, we're loaded: do the zoom!
|
173
|
-
zoomIn(from, shift);
|
174
|
-
}
|
175
|
-
|
176
|
-
return false;
|
177
|
-
|
178
|
-
}
|
179
|
-
|
180
|
-
// Zoom: Move an element in to endH endW, using zoomHost as a starting point.
|
181
|
-
// "from" is an object reference to the href that spawned the zoom.
|
182
|
-
|
183
|
-
function zoomIn(from, shift) {
|
184
|
-
|
185
|
-
zoomimg.src = from.getAttribute("href");
|
186
|
-
|
187
|
-
// Determine the zoom settings from where we came from, the element in the <a>.
|
188
|
-
// If there's no element in the <a>, or we can't get the width, make stuff up
|
189
|
-
|
190
|
-
if (from.childNodes[0].width) {
|
191
|
-
startW = from.childNodes[0].width;
|
192
|
-
startH = from.childNodes[0].height;
|
193
|
-
startPos = findElementPos(from.childNodes[0]);
|
194
|
-
} else {
|
195
|
-
startW = 50;
|
196
|
-
startH = 12;
|
197
|
-
startPos = findElementPos(from);
|
198
|
-
}
|
199
|
-
|
200
|
-
hostX = startPos[0];
|
201
|
-
hostY = startPos[1];
|
202
|
-
|
203
|
-
// Make up for a scrolled containing div.
|
204
|
-
// TODO: This HAS to move into findElementPos.
|
205
|
-
|
206
|
-
if (document.getElementById('scroller')) {
|
207
|
-
hostX = hostX - document.getElementById('scroller').scrollLeft;
|
208
|
-
}
|
209
|
-
|
210
|
-
// Determine the target zoom settings from the preloaded image object
|
211
|
-
|
212
|
-
endW = imgPreload.width;
|
213
|
-
endH = imgPreload.height;
|
214
|
-
|
215
|
-
// Start! But only if we're not zooming already!
|
216
|
-
|
217
|
-
if (zoomActive[theID] != true) {
|
218
|
-
|
219
|
-
// Clear everything out just in case something is already open
|
220
|
-
|
221
|
-
if (document.getElementById("ShadowBox")) {
|
222
|
-
document.getElementById("ShadowBox").style.visibility = "hidden";
|
223
|
-
} else if (! browserIsIE) {
|
224
|
-
|
225
|
-
// Wipe timer if shadow is fading in still
|
226
|
-
if (fadeActive["ZoomImage"]) {
|
227
|
-
clearInterval(fadeTimer["ZoomImage"]);
|
228
|
-
fadeActive["ZoomImage"] = false;
|
229
|
-
fadeTimer["ZoomImage"] = false;
|
230
|
-
}
|
231
|
-
|
232
|
-
document.getElementById("ZoomImage").style.webkitBoxShadow = shadowSettings + '0.0)';
|
233
|
-
}
|
234
|
-
|
235
|
-
document.getElementById("ZoomClose").style.visibility = "hidden";
|
236
|
-
|
237
|
-
// Setup the CAPTION, if existing. Hide it first, set the text.
|
238
|
-
|
239
|
-
if (includeCaption) {
|
240
|
-
document.getElementById(zoomCaptionDiv).style.visibility = "hidden";
|
241
|
-
if (from.getAttribute('title') && includeCaption) {
|
242
|
-
// Yes, there's a caption, set it up
|
243
|
-
document.getElementById(zoomCaption).innerHTML = from.getAttribute('title');
|
244
|
-
} else {
|
245
|
-
document.getElementById(zoomCaption).innerHTML = "";
|
246
|
-
}
|
247
|
-
}
|
248
|
-
|
249
|
-
// Store original position in an array for future zoomOut.
|
250
|
-
|
251
|
-
zoomOrigW[theID] = startW;
|
252
|
-
zoomOrigH[theID] = startH;
|
253
|
-
zoomOrigX[theID] = hostX;
|
254
|
-
zoomOrigY[theID] = hostY;
|
255
|
-
|
256
|
-
// Now set the starting dimensions
|
257
|
-
|
258
|
-
zoomimg.style.width = startW + 'px';
|
259
|
-
zoomimg.style.height = startH + 'px';
|
260
|
-
zoomdiv.style.left = hostX + 'px';
|
261
|
-
zoomdiv.style.top = hostY + 'px';
|
262
|
-
|
263
|
-
// Show the zooming image container, make it invisible
|
264
|
-
|
265
|
-
if (includeFade == 1) {
|
266
|
-
setOpacity(0, zoomID);
|
267
|
-
}
|
268
|
-
zoomdiv.style.visibility = "visible";
|
269
|
-
|
270
|
-
// If it's too big to fit in the window, shrink the width and height to fit (with ratio).
|
271
|
-
|
272
|
-
sizeRatio = endW / endH;
|
273
|
-
if (endW > myWidth - minBorder) {
|
274
|
-
endW = myWidth - minBorder;
|
275
|
-
endH = endW / sizeRatio;
|
276
|
-
}
|
277
|
-
if (endH > myHeight - minBorder) {
|
278
|
-
endH = myHeight - minBorder;
|
279
|
-
endW = endH * sizeRatio;
|
280
|
-
}
|
281
|
-
|
282
|
-
zoomChangeX = ((myWidth / 2) - (endW / 2) - hostX);
|
283
|
-
zoomChangeY = (((myHeight / 2) - (endH / 2) - hostY) + myScroll);
|
284
|
-
zoomChangeW = (endW - startW);
|
285
|
-
zoomChangeH = (endH - startH);
|
286
|
-
|
287
|
-
// Shift key?
|
288
|
-
|
289
|
-
if (shift) {
|
290
|
-
tempSteps = zoomSteps * 7;
|
291
|
-
} else {
|
292
|
-
tempSteps = zoomSteps;
|
293
|
-
}
|
294
|
-
|
295
|
-
// Setup Zoom
|
296
|
-
|
297
|
-
zoomCurrent = 0;
|
298
|
-
|
299
|
-
// Setup Fade with Zoom, If Requested
|
300
|
-
|
301
|
-
if (includeFade == 1) {
|
302
|
-
fadeCurrent = 0;
|
303
|
-
fadeAmount = (0 - 100) / tempSteps;
|
304
|
-
} else {
|
305
|
-
fadeAmount = 0;
|
306
|
-
}
|
307
|
-
|
308
|
-
// Do It!
|
309
|
-
|
310
|
-
zoomTimer[theID] = setInterval("zoomElement('"+zoomID+"', '"+theID+"', "+zoomCurrent+", "+startW+", "+zoomChangeW+", "+startH+", "+zoomChangeH+", "+hostX+", "+zoomChangeX+", "+hostY+", "+zoomChangeY+", "+tempSteps+", "+includeFade+", "+fadeAmount+", 'zoomDoneIn(zoomID)')", zoomTime);
|
311
|
-
zoomActive[theID] = true;
|
312
|
-
}
|
313
|
-
}
|
314
|
-
|
315
|
-
// Zoom it back out.
|
316
|
-
|
317
|
-
function zoomOut(from, evt) {
|
318
|
-
|
319
|
-
// Get shift key status.
|
320
|
-
// IE events don't seem to get passed through the function, so grab it from the window.
|
321
|
-
|
322
|
-
if (getShift(evt)) {
|
323
|
-
tempSteps = zoomSteps * 7;
|
324
|
-
} else {
|
325
|
-
tempSteps = zoomSteps;
|
326
|
-
}
|
327
|
-
|
328
|
-
// Check to see if something is happening/open
|
329
|
-
|
330
|
-
if (zoomActive[theID] != true) {
|
331
|
-
|
332
|
-
// First, get rid of the shadow if necessary.
|
333
|
-
|
334
|
-
if (document.getElementById("ShadowBox")) {
|
335
|
-
document.getElementById("ShadowBox").style.visibility = "hidden";
|
336
|
-
} else if (! browserIsIE) {
|
337
|
-
|
338
|
-
// Wipe timer if shadow is fading in still
|
339
|
-
if (fadeActive["ZoomImage"]) {
|
340
|
-
clearInterval(fadeTimer["ZoomImage"]);
|
341
|
-
fadeActive["ZoomImage"] = false;
|
342
|
-
fadeTimer["ZoomImage"] = false;
|
343
|
-
}
|
344
|
-
|
345
|
-
document.getElementById("ZoomImage").style.webkitBoxShadow = shadowSettings + '0.0)';
|
346
|
-
}
|
347
|
-
|
348
|
-
// ..and the close box...
|
349
|
-
|
350
|
-
document.getElementById("ZoomClose").style.visibility = "hidden";
|
351
|
-
|
352
|
-
// ...and the caption if necessary!
|
353
|
-
|
354
|
-
if (includeCaption && document.getElementById(zoomCaption).innerHTML != "") {
|
355
|
-
// fadeElementSetup(zoomCaptionDiv, 100, 0, 5, 1);
|
356
|
-
document.getElementById(zoomCaptionDiv).style.visibility = "hidden";
|
357
|
-
}
|
358
|
-
|
359
|
-
// Now, figure out where we came from, to get back there
|
360
|
-
|
361
|
-
startX = parseInt(zoomdiv.style.left);
|
362
|
-
startY = parseInt(zoomdiv.style.top);
|
363
|
-
startW = zoomimg.width;
|
364
|
-
startH = zoomimg.height;
|
365
|
-
zoomChangeX = zoomOrigX[theID] - startX;
|
366
|
-
zoomChangeY = zoomOrigY[theID] - startY;
|
367
|
-
zoomChangeW = zoomOrigW[theID] - startW;
|
368
|
-
zoomChangeH = zoomOrigH[theID] - startH;
|
369
|
-
|
370
|
-
// Setup Zoom
|
371
|
-
|
372
|
-
zoomCurrent = 0;
|
373
|
-
|
374
|
-
// Setup Fade with Zoom, If Requested
|
375
|
-
|
376
|
-
if (includeFade == 1) {
|
377
|
-
fadeCurrent = 0;
|
378
|
-
fadeAmount = (100 - 0) / tempSteps;
|
379
|
-
} else {
|
380
|
-
fadeAmount = 0;
|
381
|
-
}
|
382
|
-
|
383
|
-
// Do It!
|
384
|
-
|
385
|
-
zoomTimer[theID] = setInterval("zoomElement('"+zoomID+"', '"+theID+"', "+zoomCurrent+", "+startW+", "+zoomChangeW+", "+startH+", "+zoomChangeH+", "+startX+", "+zoomChangeX+", "+startY+", "+zoomChangeY+", "+tempSteps+", "+includeFade+", "+fadeAmount+", 'zoomDone(zoomID, theID)')", zoomTime);
|
386
|
-
zoomActive[theID] = true;
|
387
|
-
}
|
388
|
-
}
|
389
|
-
|
390
|
-
// Finished Zooming In
|
391
|
-
|
392
|
-
function zoomDoneIn(zoomdiv, theID) {
|
393
|
-
|
394
|
-
// Note that it's open
|
395
|
-
|
396
|
-
zoomOpen = true;
|
397
|
-
zoomdiv = document.getElementById(zoomdiv);
|
398
|
-
|
399
|
-
// Position the table shadow behind the zoomed in image, and display it
|
400
|
-
|
401
|
-
if (document.getElementById("ShadowBox")) {
|
402
|
-
|
403
|
-
setOpacity(0, "ShadowBox");
|
404
|
-
shadowdiv = document.getElementById("ShadowBox");
|
405
|
-
|
406
|
-
shadowLeft = parseInt(zoomdiv.style.left) - 13;
|
407
|
-
shadowTop = parseInt(zoomdiv.style.top) - 8;
|
408
|
-
shadowWidth = zoomdiv.offsetWidth + 26;
|
409
|
-
shadowHeight = zoomdiv.offsetHeight + 26;
|
410
|
-
|
411
|
-
shadowdiv.style.width = shadowWidth + 'px';
|
412
|
-
shadowdiv.style.height = shadowHeight + 'px';
|
413
|
-
shadowdiv.style.left = shadowLeft + 'px';
|
414
|
-
shadowdiv.style.top = shadowTop + 'px';
|
415
|
-
|
416
|
-
document.getElementById("ShadowBox").style.visibility = "visible";
|
417
|
-
fadeElementSetup("ShadowBox", 0, 100, 5);
|
418
|
-
|
419
|
-
} else if (! browserIsIE) {
|
420
|
-
// Or, do a fade of the modern shadow
|
421
|
-
fadeElementSetup("ZoomImage", 0, .8, 5, 0, "shadow");
|
422
|
-
}
|
423
|
-
|
424
|
-
// Position and display the CAPTION, if existing
|
425
|
-
|
426
|
-
if (includeCaption && document.getElementById(zoomCaption).innerHTML != "") {
|
427
|
-
// setOpacity(0, zoomCaptionDiv);
|
428
|
-
zoomcapd = document.getElementById(zoomCaptionDiv);
|
429
|
-
zoomcapd.style.top = parseInt(zoomdiv.style.top) + (zoomdiv.offsetHeight + 15) + 'px';
|
430
|
-
zoomcapd.style.left = (myWidth / 2) - (zoomcapd.offsetWidth / 2) + 'px';
|
431
|
-
zoomcapd.style.visibility = "visible";
|
432
|
-
// fadeElementSetup(zoomCaptionDiv, 0, 100, 5);
|
433
|
-
}
|
434
|
-
|
435
|
-
// Display Close Box (fade it if it's not IE)
|
436
|
-
|
437
|
-
if (!browserIsIE) setOpacity(0, "ZoomClose");
|
438
|
-
document.getElementById("ZoomClose").style.visibility = "visible";
|
439
|
-
if (!browserIsIE) fadeElementSetup("ZoomClose", 0, 100, 5);
|
440
|
-
|
441
|
-
// Get keypresses
|
442
|
-
document.onkeypress = getKey;
|
443
|
-
|
444
|
-
}
|
445
|
-
|
446
|
-
// Finished Zooming Out
|
447
|
-
|
448
|
-
function zoomDone(zoomdiv, theID) {
|
449
|
-
|
450
|
-
// No longer open
|
451
|
-
|
452
|
-
zoomOpen = false;
|
453
|
-
|
454
|
-
// Clear stuff out, clean up
|
455
|
-
|
456
|
-
zoomOrigH[theID] = "";
|
457
|
-
zoomOrigW[theID] = "";
|
458
|
-
document.getElementById(zoomdiv).style.visibility = "hidden";
|
459
|
-
zoomActive[theID] == false;
|
460
|
-
|
461
|
-
// Stop getting keypresses
|
462
|
-
|
463
|
-
document.onkeypress = null;
|
464
|
-
|
465
|
-
}
|
466
|
-
|
467
|
-
// Actually zoom the element
|
468
|
-
|
469
|
-
function zoomElement(zoomdiv, theID, zoomCurrent, zoomStartW, zoomChangeW, zoomStartH, zoomChangeH, zoomStartX, zoomChangeX, zoomStartY, zoomChangeY, zoomSteps, includeFade, fadeAmount, execWhenDone) {
|
470
|
-
|
471
|
-
// console.log("Zooming Step #"+zoomCurrent+ " of "+zoomSteps+" (zoom " + zoomStartW + "/" + zoomChangeW + ") (zoom " + zoomStartH + "/" + zoomChangeH + ") (zoom " + zoomStartX + "/" + zoomChangeX + ") (zoom " + zoomStartY + "/" + zoomChangeY + ") Fade: "+fadeAmount);
|
472
|
-
|
473
|
-
// Test if we're done, or if we continue
|
474
|
-
|
475
|
-
if (zoomCurrent == (zoomSteps + 1)) {
|
476
|
-
zoomActive[theID] = false;
|
477
|
-
clearInterval(zoomTimer[theID]);
|
478
|
-
|
479
|
-
if (execWhenDone != "") {
|
480
|
-
eval(execWhenDone);
|
481
|
-
}
|
482
|
-
} else {
|
483
|
-
|
484
|
-
// Do the Fade!
|
485
|
-
|
486
|
-
if (includeFade == 1) {
|
487
|
-
if (fadeAmount < 0) {
|
488
|
-
setOpacity(Math.abs(zoomCurrent * fadeAmount), zoomdiv);
|
489
|
-
} else {
|
490
|
-
setOpacity(100 - (zoomCurrent * fadeAmount), zoomdiv);
|
491
|
-
}
|
492
|
-
}
|
493
|
-
|
494
|
-
// Calculate this step's difference, and move it!
|
495
|
-
|
496
|
-
moveW = cubicInOut(zoomCurrent, zoomStartW, zoomChangeW, zoomSteps);
|
497
|
-
moveH = cubicInOut(zoomCurrent, zoomStartH, zoomChangeH, zoomSteps);
|
498
|
-
moveX = cubicInOut(zoomCurrent, zoomStartX, zoomChangeX, zoomSteps);
|
499
|
-
moveY = cubicInOut(zoomCurrent, zoomStartY, zoomChangeY, zoomSteps);
|
500
|
-
|
501
|
-
document.getElementById(zoomdiv).style.left = moveX + 'px';
|
502
|
-
document.getElementById(zoomdiv).style.top = moveY + 'px';
|
503
|
-
zoomimg.style.width = moveW + 'px';
|
504
|
-
zoomimg.style.height = moveH + 'px';
|
505
|
-
|
506
|
-
zoomCurrent++;
|
507
|
-
|
508
|
-
clearInterval(zoomTimer[theID]);
|
509
|
-
zoomTimer[theID] = setInterval("zoomElement('"+zoomdiv+"', '"+theID+"', "+zoomCurrent+", "+zoomStartW+", "+zoomChangeW+", "+zoomStartH+", "+zoomChangeH+", "+zoomStartX+", "+zoomChangeX+", "+zoomStartY+", "+zoomChangeY+", "+zoomSteps+", "+includeFade+", "+fadeAmount+", '"+execWhenDone+"')", zoomTime);
|
510
|
-
}
|
511
|
-
}
|
512
|
-
|
513
|
-
// Zoom Utility: Get Key Press when image is open, and act accordingly
|
514
|
-
|
515
|
-
function getKey(evt) {
|
516
|
-
if (! evt) {
|
517
|
-
theKey = event.keyCode;
|
518
|
-
} else {
|
519
|
-
theKey = evt.keyCode;
|
520
|
-
}
|
521
|
-
|
522
|
-
if (theKey == 27) { // ESC
|
523
|
-
zoomOut(this, evt);
|
524
|
-
}
|
525
|
-
}
|
526
|
-
|
527
|
-
////////////////////////////
|
528
|
-
//
|
529
|
-
// FADE Functions
|
530
|
-
//
|
531
|
-
|
532
|
-
function fadeOut(elem) {
|
533
|
-
if (elem.id) {
|
534
|
-
fadeElementSetup(elem.id, 100, 0, 10);
|
535
|
-
}
|
536
|
-
}
|
537
|
-
|
538
|
-
function fadeIn(elem) {
|
539
|
-
if (elem.id) {
|
540
|
-
fadeElementSetup(elem.id, 0, 100, 10);
|
541
|
-
}
|
542
|
-
}
|
543
|
-
|
544
|
-
// Fade: Initialize the fade function
|
545
|
-
|
546
|
-
var fadeActive = new Array();
|
547
|
-
var fadeQueue = new Array();
|
548
|
-
var fadeTimer = new Array();
|
549
|
-
var fadeClose = new Array();
|
550
|
-
var fadeMode = new Array();
|
551
|
-
|
552
|
-
function fadeElementSetup(theID, fdStart, fdEnd, fdSteps, fdClose, fdMode) {
|
553
|
-
|
554
|
-
// alert("Fading: "+theID+" Steps: "+fdSteps+" Mode: "+fdMode);
|
555
|
-
|
556
|
-
if (fadeActive[theID] == true) {
|
557
|
-
// Already animating, queue up this command
|
558
|
-
fadeQueue[theID] = new Array(theID, fdStart, fdEnd, fdSteps);
|
559
|
-
} else {
|
560
|
-
fadeSteps = fdSteps;
|
561
|
-
fadeCurrent = 0;
|
562
|
-
fadeAmount = (fdStart - fdEnd) / fadeSteps;
|
563
|
-
fadeTimer[theID] = setInterval("fadeElement('"+theID+"', '"+fadeCurrent+"', '"+fadeAmount+"', '"+fadeSteps+"')", 15);
|
564
|
-
fadeActive[theID] = true;
|
565
|
-
fadeMode[theID] = fdMode;
|
566
|
-
|
567
|
-
if (fdClose == 1) {
|
568
|
-
fadeClose[theID] = true;
|
569
|
-
} else {
|
570
|
-
fadeClose[theID] = false;
|
571
|
-
}
|
572
|
-
}
|
573
|
-
}
|
574
|
-
|
575
|
-
// Fade: Do the fade. This function will call itself, modifying the parameters, so
|
576
|
-
// many instances can run concurrently. Can fade using opacity, or fade using a box-shadow.
|
577
|
-
|
578
|
-
function fadeElement(theID, fadeCurrent, fadeAmount, fadeSteps) {
|
579
|
-
|
580
|
-
if (fadeCurrent == fadeSteps) {
|
581
|
-
|
582
|
-
// We're done, so clear.
|
583
|
-
|
584
|
-
clearInterval(fadeTimer[theID]);
|
585
|
-
fadeActive[theID] = false;
|
586
|
-
fadeTimer[theID] = false;
|
587
|
-
|
588
|
-
// Should we close it once the fade is complete?
|
589
|
-
|
590
|
-
if (fadeClose[theID] == true) {
|
591
|
-
document.getElementById(theID).style.visibility = "hidden";
|
592
|
-
}
|
593
|
-
|
594
|
-
// Hang on.. did a command queue while we were working? If so, make it happen now
|
595
|
-
|
596
|
-
if (fadeQueue[theID] && fadeQueue[theID] != false) {
|
597
|
-
fadeElementSetup(fadeQueue[theID][0], fadeQueue[theID][1], fadeQueue[theID][2], fadeQueue[theID][3]);
|
598
|
-
fadeQueue[theID] = false;
|
599
|
-
}
|
600
|
-
} else {
|
601
|
-
|
602
|
-
fadeCurrent++;
|
603
|
-
|
604
|
-
// Now actually do the fade adjustment.
|
605
|
-
|
606
|
-
if (fadeMode[theID] == "shadow") {
|
607
|
-
|
608
|
-
// Do a special fade on the webkit-box-shadow of the object
|
609
|
-
|
610
|
-
if (fadeAmount < 0) {
|
611
|
-
document.getElementById(theID).style.webkitBoxShadow = shadowSettings + (Math.abs(fadeCurrent * fadeAmount)) + ')';
|
612
|
-
} else {
|
613
|
-
document.getElementById(theID).style.webkitBoxShadow = shadowSettings + (100 - (fadeCurrent * fadeAmount)) + ')';
|
614
|
-
}
|
615
|
-
|
616
|
-
} else {
|
617
|
-
|
618
|
-
// Set the opacity depending on if we're adding or subtracting (pos or neg)
|
619
|
-
|
620
|
-
if (fadeAmount < 0) {
|
621
|
-
setOpacity(Math.abs(fadeCurrent * fadeAmount), theID);
|
622
|
-
} else {
|
623
|
-
setOpacity(100 - (fadeCurrent * fadeAmount), theID);
|
624
|
-
}
|
625
|
-
}
|
626
|
-
|
627
|
-
// Keep going, and send myself the updated variables
|
628
|
-
clearInterval(fadeTimer[theID]);
|
629
|
-
fadeTimer[theID] = setInterval("fadeElement('"+theID+"', '"+fadeCurrent+"', '"+fadeAmount+"', '"+fadeSteps+"')", 15);
|
630
|
-
}
|
631
|
-
}
|
632
|
-
|
633
|
-
////////////////////////////
|
634
|
-
//
|
635
|
-
// UTILITY functions
|
636
|
-
//
|
637
|
-
|
638
|
-
// Utility: Set the opacity, compatible with a number of browsers. Value from 0 to 100.
|
639
|
-
|
640
|
-
function setOpacity(opacity, theID) {
|
641
|
-
|
642
|
-
var object = document.getElementById(theID).style;
|
643
|
-
|
644
|
-
// If it's 100, set it to 99 for Firefox.
|
645
|
-
|
646
|
-
if (navigator.userAgent.indexOf("Firefox") != -1) {
|
647
|
-
if (opacity == 100) { opacity = 99.9999; } // This is majorly awkward
|
648
|
-
}
|
649
|
-
|
650
|
-
// Multi-browser opacity setting
|
651
|
-
|
652
|
-
object.filter = "alpha(opacity=" + opacity + ")"; // IE/Win
|
653
|
-
object.opacity = (opacity / 100); // Safari 1.2, Firefox+Mozilla
|
654
|
-
|
655
|
-
}
|
656
|
-
|
657
|
-
// Utility: Math functions for animation calucations - From http://www.robertpenner.com/easing/
|
658
|
-
//
|
659
|
-
// t = time, b = begin, c = change, d = duration
|
660
|
-
// time = current frame, begin is fixed, change is basically finish - begin, duration is fixed (frames),
|
661
|
-
|
662
|
-
function linear(t, b, c, d)
|
663
|
-
{
|
664
|
-
return c*t/d + b;
|
665
|
-
}
|
666
|
-
|
667
|
-
function sineInOut(t, b, c, d)
|
668
|
-
{
|
669
|
-
return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
|
670
|
-
}
|
671
|
-
|
672
|
-
function cubicIn(t, b, c, d) {
|
673
|
-
return c*(t/=d)*t*t + b;
|
674
|
-
}
|
675
|
-
|
676
|
-
function cubicOut(t, b, c, d) {
|
677
|
-
return c*((t=t/d-1)*t*t + 1) + b;
|
678
|
-
}
|
679
|
-
|
680
|
-
function cubicInOut(t, b, c, d)
|
681
|
-
{
|
682
|
-
if ((t/=d/2) < 1) return c/2*t*t*t + b;
|
683
|
-
return c/2*((t-=2)*t*t + 2) + b;
|
684
|
-
}
|
685
|
-
|
686
|
-
function bounceOut(t, b, c, d)
|
687
|
-
{
|
688
|
-
if ((t/=d) < (1/2.75)){
|
689
|
-
return c*(7.5625*t*t) + b;
|
690
|
-
} else if (t < (2/2.75)){
|
691
|
-
return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
|
692
|
-
} else if (t < (2.5/2.75)){
|
693
|
-
return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
|
694
|
-
} else {
|
695
|
-
return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
|
696
|
-
}
|
697
|
-
}
|
698
|
-
|
699
|
-
|
700
|
-
// Utility: Get the size of the window, and set myWidth and myHeight
|
701
|
-
// Credit to quirksmode.org
|
702
|
-
|
703
|
-
function getSize() {
|
704
|
-
|
705
|
-
// Window Size
|
706
|
-
|
707
|
-
if (self.innerHeight) { // Everyone but IE
|
708
|
-
myWidth = window.innerWidth;
|
709
|
-
myHeight = window.innerHeight;
|
710
|
-
myScroll = window.pageYOffset;
|
711
|
-
} else if (document.documentElement && document.documentElement.clientHeight) { // IE6 Strict
|
712
|
-
myWidth = document.documentElement.clientWidth;
|
713
|
-
myHeight = document.documentElement.clientHeight;
|
714
|
-
myScroll = document.documentElement.scrollTop;
|
715
|
-
} else if (document.body) { // Other IE, such as IE7
|
716
|
-
myWidth = document.body.clientWidth;
|
717
|
-
myHeight = document.body.clientHeight;
|
718
|
-
myScroll = document.body.scrollTop;
|
719
|
-
}
|
720
|
-
|
721
|
-
// Page size w/offscreen areas
|
722
|
-
|
723
|
-
if (window.innerHeight && window.scrollMaxY) {
|
724
|
-
myScrollWidth = document.body.scrollWidth;
|
725
|
-
myScrollHeight = window.innerHeight + window.scrollMaxY;
|
726
|
-
} else if (document.body.scrollHeight > document.body.offsetHeight) { // All but Explorer Mac
|
727
|
-
myScrollWidth = document.body.scrollWidth;
|
728
|
-
myScrollHeight = document.body.scrollHeight;
|
729
|
-
} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
|
730
|
-
myScrollWidth = document.body.offsetWidth;
|
731
|
-
myScrollHeight = document.body.offsetHeight;
|
732
|
-
}
|
733
|
-
}
|
734
|
-
|
735
|
-
// Utility: Get Shift Key Status
|
736
|
-
// IE events don't seem to get passed through the function, so grab it from the window.
|
737
|
-
|
738
|
-
function getShift(evt) {
|
739
|
-
var shift = false;
|
740
|
-
if (! evt && window.event) {
|
741
|
-
shift = window.event.shiftKey;
|
742
|
-
} else if (evt) {
|
743
|
-
shift = evt.shiftKey;
|
744
|
-
if (shift) evt.stopPropagation(); // Prevents Firefox from doing shifty things
|
745
|
-
}
|
746
|
-
return shift;
|
747
|
-
}
|
748
|
-
|
749
|
-
// Utility: Find the Y position of an element on a page. Return Y and X as an array
|
750
|
-
|
751
|
-
function findElementPos(elemFind)
|
752
|
-
{
|
753
|
-
var elemX = 0;
|
754
|
-
var elemY = 0;
|
755
|
-
do {
|
756
|
-
elemX += elemFind.offsetLeft;
|
757
|
-
elemY += elemFind.offsetTop;
|
758
|
-
} while ( elemFind = elemFind.offsetParent )
|
759
|
-
|
760
|
-
return Array(elemX, elemY);
|
761
|
-
}
|