html5_layout 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +4 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +107 -0
- data/README.markdown +29 -0
- data/Rakefile +2 -0
- data/features/html5_layout.feature +43 -0
- data/features/step_definitions/common_steps.rb +37 -0
- data/features/step_definitions/rails_setup_steps.rb +6 -0
- data/features/support/env.rb +6 -0
- data/features/support/matchers.rb +7 -0
- data/html5_layout.gemspec +26 -0
- data/lib/generators/html5_layout/USAGE +22 -0
- data/lib/generators/html5_layout/html5_layout_generator.rb +40 -0
- data/lib/generators/html5_layout/templates/app/stylesheets/_html5_reset.sass +333 -0
- data/lib/generators/html5_layout/templates/app/stylesheets/_text.sass +49 -0
- data/lib/generators/html5_layout/templates/app/stylesheets/application.sass +63 -0
- data/lib/generators/html5_layout/templates/app/stylesheets/grid.sass +20 -0
- data/lib/generators/html5_layout/templates/app/stylesheets/handheld.sass +5 -0
- data/lib/generators/html5_layout/templates/config/compass.rb +17 -0
- data/lib/generators/html5_layout/templates/config/initializers/compass.rb +3 -0
- data/lib/generators/html5_layout/templates/dd_belatedpng.js +328 -0
- data/lib/generators/html5_layout/templates/handheld.css +7 -0
- data/lib/generators/html5_layout/templates/jquery-1.4.2.min.js +154 -0
- data/lib/generators/html5_layout/templates/layout.html.erb +58 -0
- data/lib/generators/html5_layout/templates/layout_helper.rb +22 -0
- data/lib/generators/html5_layout/templates/modernizr-1.5.min.js +28 -0
- data/lib/generators/html5_layout/templates/stylesheet.css +170 -0
- data/lib/html5_layout.rb +3 -0
- data/lib/html5_layout/version.rb +3 -0
- metadata +163 -0
@@ -0,0 +1,49 @@
|
|
1
|
+
$ninesixty-font-family: unquote("'Lucida Grande',Verdana,Arial,sans-serif") !default
|
2
|
+
$ninesixty-font-size: 14px !default
|
3
|
+
$ninesixty-line-height: unquote("1.4em") !default
|
4
|
+
|
5
|
+
=text($font-family: $ninesixty-font-family, $font-size: $ninesixty-font-size, $line-height: $ninesixty-line-height)
|
6
|
+
body
|
7
|
+
font: $font-size/$line-height $font-family
|
8
|
+
a:focus
|
9
|
+
outline: 1px dotted invert
|
10
|
+
hr
|
11
|
+
border-color: #cccccc
|
12
|
+
border-style: solid
|
13
|
+
border-width: 1px 0 0
|
14
|
+
clear: both
|
15
|
+
height: 0
|
16
|
+
h1
|
17
|
+
font-size: 2.4em
|
18
|
+
h2
|
19
|
+
font-size: 2.2em
|
20
|
+
h3
|
21
|
+
font-size: 2em
|
22
|
+
h4
|
23
|
+
font-size: 1.8em
|
24
|
+
h5
|
25
|
+
font-size: 1.6em
|
26
|
+
h6
|
27
|
+
font-size: 1em
|
28
|
+
ol
|
29
|
+
list-style: decimal
|
30
|
+
ul
|
31
|
+
list-style: square
|
32
|
+
li
|
33
|
+
margin-left: 30px
|
34
|
+
p,
|
35
|
+
dl,
|
36
|
+
hr,
|
37
|
+
h1,
|
38
|
+
h2,
|
39
|
+
h3,
|
40
|
+
h4,
|
41
|
+
h5,
|
42
|
+
h6,
|
43
|
+
ol,
|
44
|
+
ul,
|
45
|
+
pre,
|
46
|
+
table,
|
47
|
+
address,
|
48
|
+
fieldset
|
49
|
+
margin-bottom: 15px
|
@@ -0,0 +1,63 @@
|
|
1
|
+
@import "compass"
|
2
|
+
@import "compass/css3"
|
3
|
+
@import "html5_reset"
|
4
|
+
@import "960/grid"
|
5
|
+
@import "text"
|
6
|
+
|
7
|
+
/* App specific Custom styles */
|
8
|
+
$ninesixty-gutter-width: 12px
|
9
|
+
$ninesixty-grid-width: 960px
|
10
|
+
$ninesixty-columns: 16
|
11
|
+
|
12
|
+
$font-color: #2a2a2a
|
13
|
+
$link-color: #0388a6
|
14
|
+
$link-hover-color: #009ce0
|
15
|
+
$link-focus-color: $link-color
|
16
|
+
$link-active-color: $link-color
|
17
|
+
$link-visited-color: $link-color
|
18
|
+
|
19
|
+
+text
|
20
|
+
// +font-face("Museo 300", font-files("/fonts/Museo300-Regular.otf", opentype))
|
21
|
+
// +font-face("Museo 500", font-files("/fonts/Museo500-Regular.otf", opentype))
|
22
|
+
// +font-face("Museo 700", font-files("/fonts/Museo700-Regular.otf", opentype))
|
23
|
+
|
24
|
+
a
|
25
|
+
+link-colors($link-color, $link-hover-color, $link-focus-color, $link-active-color, $link-visited-color)
|
26
|
+
&:link, &:active
|
27
|
+
text-decoration: none
|
28
|
+
&:hover
|
29
|
+
text-decoration: underline
|
30
|
+
|
31
|
+
body
|
32
|
+
background-color: #067851
|
33
|
+
+text-shadow(rgba(0,0,0,0.3), 1px, 1px, 0px)
|
34
|
+
padding: 10px 0px
|
35
|
+
|
36
|
+
#container
|
37
|
+
+grid-container
|
38
|
+
+clearfix
|
39
|
+
background: #fff
|
40
|
+
+border-radius(8px)
|
41
|
+
#main
|
42
|
+
+grid(16)
|
43
|
+
table
|
44
|
+
tr
|
45
|
+
margin-bottom: 5px
|
46
|
+
th
|
47
|
+
font-size: 1.2em
|
48
|
+
padding-bottom: 8px
|
49
|
+
td
|
50
|
+
padding-right: 10px
|
51
|
+
padding-bottom: 5px
|
52
|
+
form
|
53
|
+
.field
|
54
|
+
margin-bottom: 5px
|
55
|
+
.actions
|
56
|
+
margin-bottom: 5px
|
57
|
+
header
|
58
|
+
+grid(16)
|
59
|
+
height: 30px
|
60
|
+
margin-bottom: 10px
|
61
|
+
footer
|
62
|
+
+grid(16)
|
63
|
+
height: 40px
|
@@ -0,0 +1,20 @@
|
|
1
|
+
/* 960 Grid System ~ Core CSS.
|
2
|
+
* Learn more ~ http://960.gs/
|
3
|
+
* *
|
4
|
+
* Licensed under GPL and MIT.
|
5
|
+
|
6
|
+
@import compass/reset
|
7
|
+
@import 960/grid
|
8
|
+
|
9
|
+
$ninesixty-columns: 16
|
10
|
+
|
11
|
+
#container
|
12
|
+
+grid-container
|
13
|
+
#header,
|
14
|
+
#footer,
|
15
|
+
#main
|
16
|
+
+grid-unit-base
|
17
|
+
#header, #footer
|
18
|
+
+grid-width(16)
|
19
|
+
#header
|
20
|
+
height: 80px
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# This configuration file works with both the Compass command line tool and within Rails.
|
2
|
+
require 'ninesixty'
|
3
|
+
# Require any additional compass plugins here.
|
4
|
+
|
5
|
+
project_type = :rails
|
6
|
+
project_path = Compass::AppIntegration::Rails.root
|
7
|
+
# Set this to the root of your project when deployed:
|
8
|
+
http_path = "/"
|
9
|
+
css_dir = "public/stylesheets"
|
10
|
+
sass_dir = "app/stylesheets"
|
11
|
+
environment = Compass::AppIntegration::Rails.env
|
12
|
+
# To enable relative paths to assets via compass helper functions. Uncomment:
|
13
|
+
# relative_assets = true
|
14
|
+
preferred_syntax = :sass
|
15
|
+
line_comments = false
|
16
|
+
# :nested, :expanded, :compact, :compressed
|
17
|
+
# output_style = :compact
|
@@ -0,0 +1,328 @@
|
|
1
|
+
/**
|
2
|
+
* DD_belatedPNG: Adds IE6 support: PNG images for CSS background-image and HTML <IMG/>.
|
3
|
+
* Author: Drew Diller
|
4
|
+
* Email: drew.diller@gmail.com
|
5
|
+
* URL: http://www.dillerdesign.com/experiment/DD_belatedPNG/
|
6
|
+
* Version: 0.0.8a
|
7
|
+
* Licensed under the MIT License: http://dillerdesign.com/experiment/DD_belatedPNG/#license
|
8
|
+
*
|
9
|
+
* Example usage:
|
10
|
+
* DD_belatedPNG.fix('.png_bg'); // argument is a CSS selector
|
11
|
+
* DD_belatedPNG.fixPng( someNode ); // argument is an HTMLDomElement
|
12
|
+
**/
|
13
|
+
|
14
|
+
/*
|
15
|
+
PLEASE READ:
|
16
|
+
Absolutely everything in this script is SILLY. I know this. IE's rendering of certain pixels doesn't make sense, so neither does this code!
|
17
|
+
*/
|
18
|
+
|
19
|
+
var DD_belatedPNG = {
|
20
|
+
ns: 'DD_belatedPNG',
|
21
|
+
imgSize: {},
|
22
|
+
delay: 10,
|
23
|
+
nodesFixed: 0,
|
24
|
+
createVmlNameSpace: function () { /* enable VML */
|
25
|
+
if (document.namespaces && !document.namespaces[this.ns]) {
|
26
|
+
document.namespaces.add(this.ns, 'urn:schemas-microsoft-com:vml');
|
27
|
+
}
|
28
|
+
},
|
29
|
+
createVmlStyleSheet: function () { /* style VML, enable behaviors */
|
30
|
+
/*
|
31
|
+
Just in case lots of other developers have added
|
32
|
+
lots of other stylesheets using document.createStyleSheet
|
33
|
+
and hit the 31-limit mark, let's not use that method!
|
34
|
+
further reading: http://msdn.microsoft.com/en-us/library/ms531194(VS.85).aspx
|
35
|
+
*/
|
36
|
+
var screenStyleSheet, printStyleSheet;
|
37
|
+
screenStyleSheet = document.createElement('style');
|
38
|
+
screenStyleSheet.setAttribute('media', 'screen');
|
39
|
+
document.documentElement.firstChild.insertBefore(screenStyleSheet, document.documentElement.firstChild.firstChild);
|
40
|
+
if (screenStyleSheet.styleSheet) {
|
41
|
+
screenStyleSheet = screenStyleSheet.styleSheet;
|
42
|
+
screenStyleSheet.addRule(this.ns + '\\:*', '{behavior:url(#default#VML)}');
|
43
|
+
screenStyleSheet.addRule(this.ns + '\\:shape', 'position:absolute;');
|
44
|
+
screenStyleSheet.addRule('img.' + this.ns + '_sizeFinder', 'behavior:none; border:none; position:absolute; z-index:-1; top:-10000px; visibility:hidden;'); /* large negative top value for avoiding vertical scrollbars for large images, suggested by James O'Brien, http://www.thanatopsic.org/hendrik/ */
|
45
|
+
this.screenStyleSheet = screenStyleSheet;
|
46
|
+
|
47
|
+
/* Add a print-media stylesheet, for preventing VML artifacts from showing up in print (including preview). */
|
48
|
+
/* Thanks to Rémi Prévost for automating this! */
|
49
|
+
printStyleSheet = document.createElement('style');
|
50
|
+
printStyleSheet.setAttribute('media', 'print');
|
51
|
+
document.documentElement.firstChild.insertBefore(printStyleSheet, document.documentElement.firstChild.firstChild);
|
52
|
+
printStyleSheet = printStyleSheet.styleSheet;
|
53
|
+
printStyleSheet.addRule(this.ns + '\\:*', '{display: none !important;}');
|
54
|
+
printStyleSheet.addRule('img.' + this.ns + '_sizeFinder', '{display: none !important;}');
|
55
|
+
}
|
56
|
+
},
|
57
|
+
readPropertyChange: function () {
|
58
|
+
var el, display, v;
|
59
|
+
el = event.srcElement;
|
60
|
+
if (!el.vmlInitiated) {
|
61
|
+
return;
|
62
|
+
}
|
63
|
+
if (event.propertyName.search('background') != -1 || event.propertyName.search('border') != -1) {
|
64
|
+
DD_belatedPNG.applyVML(el);
|
65
|
+
}
|
66
|
+
if (event.propertyName == 'style.display') {
|
67
|
+
display = (el.currentStyle.display == 'none') ? 'none' : 'block';
|
68
|
+
for (v in el.vml) {
|
69
|
+
if (el.vml.hasOwnProperty(v)) {
|
70
|
+
el.vml[v].shape.style.display = display;
|
71
|
+
}
|
72
|
+
}
|
73
|
+
}
|
74
|
+
if (event.propertyName.search('filter') != -1) {
|
75
|
+
DD_belatedPNG.vmlOpacity(el);
|
76
|
+
}
|
77
|
+
},
|
78
|
+
vmlOpacity: function (el) {
|
79
|
+
if (el.currentStyle.filter.search('lpha') != -1) {
|
80
|
+
var trans = el.currentStyle.filter;
|
81
|
+
trans = parseInt(trans.substring(trans.lastIndexOf('=')+1, trans.lastIndexOf(')')), 10)/100;
|
82
|
+
el.vml.color.shape.style.filter = el.currentStyle.filter; /* complete guesswork */
|
83
|
+
el.vml.image.fill.opacity = trans; /* complete guesswork */
|
84
|
+
}
|
85
|
+
},
|
86
|
+
handlePseudoHover: function (el) {
|
87
|
+
setTimeout(function () { /* wouldn't work as intended without setTimeout */
|
88
|
+
DD_belatedPNG.applyVML(el);
|
89
|
+
}, 1);
|
90
|
+
},
|
91
|
+
/**
|
92
|
+
* This is the method to use in a document.
|
93
|
+
* @param {String} selector - REQUIRED - a CSS selector, such as '#doc .container'
|
94
|
+
**/
|
95
|
+
fix: function (selector) {
|
96
|
+
if (this.screenStyleSheet) {
|
97
|
+
var selectors, i;
|
98
|
+
selectors = selector.split(','); /* multiple selectors supported, no need for multiple calls to this anymore */
|
99
|
+
for (i=0; i<selectors.length; i++) {
|
100
|
+
this.screenStyleSheet.addRule(selectors[i], 'behavior:expression(DD_belatedPNG.fixPng(this))'); /* seems to execute the function without adding it to the stylesheet - interesting... */
|
101
|
+
}
|
102
|
+
}
|
103
|
+
},
|
104
|
+
applyVML: function (el) {
|
105
|
+
el.runtimeStyle.cssText = '';
|
106
|
+
this.vmlFill(el);
|
107
|
+
this.vmlOffsets(el);
|
108
|
+
this.vmlOpacity(el);
|
109
|
+
if (el.isImg) {
|
110
|
+
this.copyImageBorders(el);
|
111
|
+
}
|
112
|
+
},
|
113
|
+
attachHandlers: function (el) {
|
114
|
+
var self, handlers, handler, moreForAs, a, h;
|
115
|
+
self = this;
|
116
|
+
handlers = {resize: 'vmlOffsets', move: 'vmlOffsets'};
|
117
|
+
if (el.nodeName == 'A') {
|
118
|
+
moreForAs = {mouseleave: 'handlePseudoHover', mouseenter: 'handlePseudoHover', focus: 'handlePseudoHover', blur: 'handlePseudoHover'};
|
119
|
+
for (a in moreForAs) {
|
120
|
+
if (moreForAs.hasOwnProperty(a)) {
|
121
|
+
handlers[a] = moreForAs[a];
|
122
|
+
}
|
123
|
+
}
|
124
|
+
}
|
125
|
+
for (h in handlers) {
|
126
|
+
if (handlers.hasOwnProperty(h)) {
|
127
|
+
handler = function () {
|
128
|
+
self[handlers[h]](el);
|
129
|
+
};
|
130
|
+
el.attachEvent('on' + h, handler);
|
131
|
+
}
|
132
|
+
}
|
133
|
+
el.attachEvent('onpropertychange', this.readPropertyChange);
|
134
|
+
},
|
135
|
+
giveLayout: function (el) {
|
136
|
+
el.style.zoom = 1;
|
137
|
+
if (el.currentStyle.position == 'static') {
|
138
|
+
el.style.position = 'relative';
|
139
|
+
}
|
140
|
+
},
|
141
|
+
copyImageBorders: function (el) {
|
142
|
+
var styles, s;
|
143
|
+
styles = {'borderStyle':true, 'borderWidth':true, 'borderColor':true};
|
144
|
+
for (s in styles) {
|
145
|
+
if (styles.hasOwnProperty(s)) {
|
146
|
+
el.vml.color.shape.style[s] = el.currentStyle[s];
|
147
|
+
}
|
148
|
+
}
|
149
|
+
},
|
150
|
+
vmlFill: function (el) {
|
151
|
+
if (!el.currentStyle) {
|
152
|
+
return;
|
153
|
+
} else {
|
154
|
+
var elStyle, noImg, lib, v, img, imgLoaded;
|
155
|
+
elStyle = el.currentStyle;
|
156
|
+
}
|
157
|
+
for (v in el.vml) {
|
158
|
+
if (el.vml.hasOwnProperty(v)) {
|
159
|
+
el.vml[v].shape.style.zIndex = elStyle.zIndex;
|
160
|
+
}
|
161
|
+
}
|
162
|
+
el.runtimeStyle.backgroundColor = '';
|
163
|
+
el.runtimeStyle.backgroundImage = '';
|
164
|
+
noImg = true;
|
165
|
+
if (elStyle.backgroundImage != 'none' || el.isImg) {
|
166
|
+
if (!el.isImg) {
|
167
|
+
el.vmlBg = elStyle.backgroundImage;
|
168
|
+
el.vmlBg = el.vmlBg.substr(5, el.vmlBg.lastIndexOf('")')-5);
|
169
|
+
}
|
170
|
+
else {
|
171
|
+
el.vmlBg = el.src;
|
172
|
+
}
|
173
|
+
lib = this;
|
174
|
+
if (!lib.imgSize[el.vmlBg]) { /* determine size of loaded image */
|
175
|
+
img = document.createElement('img');
|
176
|
+
lib.imgSize[el.vmlBg] = img;
|
177
|
+
img.className = lib.ns + '_sizeFinder';
|
178
|
+
img.runtimeStyle.cssText = 'behavior:none; position:absolute; left:-10000px; top:-10000px; border:none; margin:0; padding:0;'; /* make sure to set behavior to none to prevent accidental matching of the helper elements! */
|
179
|
+
imgLoaded = function () {
|
180
|
+
this.width = this.offsetWidth; /* weird cache-busting requirement! */
|
181
|
+
this.height = this.offsetHeight;
|
182
|
+
lib.vmlOffsets(el);
|
183
|
+
};
|
184
|
+
img.attachEvent('onload', imgLoaded);
|
185
|
+
img.src = el.vmlBg;
|
186
|
+
img.removeAttribute('width');
|
187
|
+
img.removeAttribute('height');
|
188
|
+
document.body.insertBefore(img, document.body.firstChild);
|
189
|
+
}
|
190
|
+
el.vml.image.fill.src = el.vmlBg;
|
191
|
+
noImg = false;
|
192
|
+
}
|
193
|
+
el.vml.image.fill.on = !noImg;
|
194
|
+
el.vml.image.fill.color = 'none';
|
195
|
+
el.vml.color.shape.style.backgroundColor = elStyle.backgroundColor;
|
196
|
+
el.runtimeStyle.backgroundImage = 'none';
|
197
|
+
el.runtimeStyle.backgroundColor = 'transparent';
|
198
|
+
},
|
199
|
+
/* IE can't figure out what do when the offsetLeft and the clientLeft add up to 1, and the VML ends up getting fuzzy... so we have to push/enlarge things by 1 pixel and then clip off the excess */
|
200
|
+
vmlOffsets: function (el) {
|
201
|
+
var thisStyle, size, fudge, makeVisible, bg, bgR, dC, altC, b, c, v;
|
202
|
+
thisStyle = el.currentStyle;
|
203
|
+
size = {'W':el.clientWidth+1, 'H':el.clientHeight+1, 'w':this.imgSize[el.vmlBg].width, 'h':this.imgSize[el.vmlBg].height, 'L':el.offsetLeft, 'T':el.offsetTop, 'bLW':el.clientLeft, 'bTW':el.clientTop};
|
204
|
+
fudge = (size.L + size.bLW == 1) ? 1 : 0;
|
205
|
+
/* vml shape, left, top, width, height, origin */
|
206
|
+
makeVisible = function (vml, l, t, w, h, o) {
|
207
|
+
vml.coordsize = w+','+h;
|
208
|
+
vml.coordorigin = o+','+o;
|
209
|
+
vml.path = 'm0,0l'+w+',0l'+w+','+h+'l0,'+h+' xe';
|
210
|
+
vml.style.width = w + 'px';
|
211
|
+
vml.style.height = h + 'px';
|
212
|
+
vml.style.left = l + 'px';
|
213
|
+
vml.style.top = t + 'px';
|
214
|
+
};
|
215
|
+
makeVisible(el.vml.color.shape, (size.L + (el.isImg ? 0 : size.bLW)), (size.T + (el.isImg ? 0 : size.bTW)), (size.W-1), (size.H-1), 0);
|
216
|
+
makeVisible(el.vml.image.shape, (size.L + size.bLW), (size.T + size.bTW), (size.W), (size.H), 1 );
|
217
|
+
bg = {'X':0, 'Y':0};
|
218
|
+
if (el.isImg) {
|
219
|
+
bg.X = parseInt(thisStyle.paddingLeft, 10) + 1;
|
220
|
+
bg.Y = parseInt(thisStyle.paddingTop, 10) + 1;
|
221
|
+
}
|
222
|
+
else {
|
223
|
+
for (b in bg) {
|
224
|
+
if (bg.hasOwnProperty(b)) {
|
225
|
+
this.figurePercentage(bg, size, b, thisStyle['backgroundPosition'+b]);
|
226
|
+
}
|
227
|
+
}
|
228
|
+
}
|
229
|
+
el.vml.image.fill.position = (bg.X/size.W) + ',' + (bg.Y/size.H);
|
230
|
+
bgR = thisStyle.backgroundRepeat;
|
231
|
+
dC = {'T':1, 'R':size.W+fudge, 'B':size.H, 'L':1+fudge}; /* these are defaults for repeat of any kind */
|
232
|
+
altC = { 'X': {'b1': 'L', 'b2': 'R', 'd': 'W'}, 'Y': {'b1': 'T', 'b2': 'B', 'd': 'H'} };
|
233
|
+
if (bgR != 'repeat' || el.isImg) {
|
234
|
+
c = {'T':(bg.Y), 'R':(bg.X+size.w), 'B':(bg.Y+size.h), 'L':(bg.X)}; /* these are defaults for no-repeat - clips down to the image location */
|
235
|
+
if (bgR.search('repeat-') != -1) { /* now let's revert to dC for repeat-x or repeat-y */
|
236
|
+
v = bgR.split('repeat-')[1].toUpperCase();
|
237
|
+
c[altC[v].b1] = 1;
|
238
|
+
c[altC[v].b2] = size[altC[v].d];
|
239
|
+
}
|
240
|
+
if (c.B > size.H) {
|
241
|
+
c.B = size.H;
|
242
|
+
}
|
243
|
+
el.vml.image.shape.style.clip = 'rect('+c.T+'px '+(c.R+fudge)+'px '+c.B+'px '+(c.L+fudge)+'px)';
|
244
|
+
}
|
245
|
+
else {
|
246
|
+
el.vml.image.shape.style.clip = 'rect('+dC.T+'px '+dC.R+'px '+dC.B+'px '+dC.L+'px)';
|
247
|
+
}
|
248
|
+
},
|
249
|
+
figurePercentage: function (bg, size, axis, position) {
|
250
|
+
var horizontal, fraction;
|
251
|
+
fraction = true;
|
252
|
+
horizontal = (axis == 'X');
|
253
|
+
switch(position) {
|
254
|
+
case 'left':
|
255
|
+
case 'top':
|
256
|
+
bg[axis] = 0;
|
257
|
+
break;
|
258
|
+
case 'center':
|
259
|
+
bg[axis] = 0.5;
|
260
|
+
break;
|
261
|
+
case 'right':
|
262
|
+
case 'bottom':
|
263
|
+
bg[axis] = 1;
|
264
|
+
break;
|
265
|
+
default:
|
266
|
+
if (position.search('%') != -1) {
|
267
|
+
bg[axis] = parseInt(position, 10) / 100;
|
268
|
+
}
|
269
|
+
else {
|
270
|
+
fraction = false;
|
271
|
+
}
|
272
|
+
}
|
273
|
+
bg[axis] = Math.ceil( fraction ? ( (size[horizontal?'W': 'H'] * bg[axis]) - (size[horizontal?'w': 'h'] * bg[axis]) ) : parseInt(position, 10) );
|
274
|
+
if (bg[axis] % 2 === 0) {
|
275
|
+
bg[axis]++;
|
276
|
+
}
|
277
|
+
return bg[axis];
|
278
|
+
},
|
279
|
+
fixPng: function (el) {
|
280
|
+
el.style.behavior = 'none';
|
281
|
+
var lib, els, nodeStr, v, e;
|
282
|
+
if (el.nodeName == 'BODY' || el.nodeName == 'TD' || el.nodeName == 'TR') { /* elements not supported yet */
|
283
|
+
return;
|
284
|
+
}
|
285
|
+
el.isImg = false;
|
286
|
+
if (el.nodeName == 'IMG') {
|
287
|
+
if(el.src.toLowerCase().search(/\.png$/) != -1) {
|
288
|
+
el.isImg = true;
|
289
|
+
el.style.visibility = 'hidden';
|
290
|
+
}
|
291
|
+
else {
|
292
|
+
return;
|
293
|
+
}
|
294
|
+
}
|
295
|
+
else if (el.currentStyle.backgroundImage.toLowerCase().search('.png') == -1) {
|
296
|
+
return;
|
297
|
+
}
|
298
|
+
lib = DD_belatedPNG;
|
299
|
+
el.vml = {color: {}, image: {}};
|
300
|
+
els = {shape: {}, fill: {}};
|
301
|
+
for (v in el.vml) {
|
302
|
+
if (el.vml.hasOwnProperty(v)) {
|
303
|
+
for (e in els) {
|
304
|
+
if (els.hasOwnProperty(e)) {
|
305
|
+
nodeStr = lib.ns + ':' + e;
|
306
|
+
el.vml[v][e] = document.createElement(nodeStr);
|
307
|
+
}
|
308
|
+
}
|
309
|
+
el.vml[v].shape.stroked = false;
|
310
|
+
el.vml[v].shape.appendChild(el.vml[v].fill);
|
311
|
+
el.parentNode.insertBefore(el.vml[v].shape, el);
|
312
|
+
}
|
313
|
+
}
|
314
|
+
el.vml.image.shape.fillcolor = 'none'; /* Don't show blank white shapeangle when waiting for image to load. */
|
315
|
+
el.vml.image.fill.type = 'tile'; /* Makes image show up. */
|
316
|
+
el.vml.color.fill.on = false; /* Actually going to apply vml element's style.backgroundColor, so hide the whiteness. */
|
317
|
+
lib.attachHandlers(el);
|
318
|
+
lib.giveLayout(el);
|
319
|
+
lib.giveLayout(el.offsetParent);
|
320
|
+
el.vmlInitiated = true;
|
321
|
+
lib.applyVML(el); /* Render! */
|
322
|
+
}
|
323
|
+
};
|
324
|
+
try {
|
325
|
+
document.execCommand("BackgroundImageCache", false, true); /* TredoSoft Multiple IE doesn't like this, so try{} it */
|
326
|
+
} catch(r) {}
|
327
|
+
DD_belatedPNG.createVmlNameSpace();
|
328
|
+
DD_belatedPNG.createVmlStyleSheet();
|