pages/scripts/pie.js

2307 lines
81 KiB
JavaScript
Raw Normal View History

2015-03-30 11:56:28 +00:00
/*
PIE: CSS3 rendering for IE
Version 1.0beta5
http://css3pie.com
Dual-licensed for use under the Apache License Version 2.0 or the General Public License (GPL) Version 2.
2013.04.17 change made to PIE.BackgroundRenderer (hideBackground() and destroy()) to fix a bug related to fill images not loading on objects with rounded corners. Copyright (c) 2013 Adobe Systems Incorporated All Rights Reserved.
*/
(function() {
var a = document,
b = window.PIE;
if (!b) {
b = window.PIE = {
CSS_PREFIX: "-pie-",
STYLE_PREFIX: "Pie",
CLASS_PREFIX: "pie_",
tableCellTags: {
TD: 1,
TH: 1
},
childlessElements: {
TABLE: 1,
THEAD: 1,
TBODY: 1,
TFOOT: 1,
TR: 1,
INPUT: 1,
TEXTAREA: 1,
SELECT: 1,
OPTION: 1,
IMG: 1,
HR: 1
},
focusableElements: {
A: 1,
INPUT: 1,
TEXTAREA: 1,
SELECT: 1,
BUTTON: 1
},
inputButtonTypes: {
submit: 1,
button: 1,
reset: 1
},
emptyFn: function() {}
};
try {
a.execCommand("BackgroundImageCache", !1, !0)
} catch (d) {}(function() {
for (var c = 4, f = a.createElement("div"), d = f.getElementsByTagName("i"); f.innerHTML =
"<\!--[if gt IE " + ++c + "]><i></i><![endif]--\>", d[0];);
b.ieVersion = c;
if (c === 6) b.CSS_PREFIX = b.CSS_PREFIX.replace(/^-/, "");
b.ieDocMode = a.documentMode || b.ieVersion;
f.innerHTML = '<v:shape adj="1"/>';
c = f.firstChild;
c.style.behavior = "url(#default#VML)";
b.supportsVML = typeof c.adj === "object"
})();
(function() {
var c, f = 0,
d = {};
b.Util = {
createVmlElement: function(b) {
c || (c = a.createDocumentFragment(), c.namespaces.add("css3vml", "urn:schemas-microsoft-com:vml"));
return c.createElement("css3vml:" + b)
},
getUID: function(c) {
return c &&
c._pieId || (c._pieId = "_" + ++f)
},
merge: function(c) {
var b, a, f, d, g = arguments;
b = 1;
for (a = g.length; b < a; b++)
for (f in d = g[b], d) d.hasOwnProperty(f) && (c[f] = d[f]);
return c
},
withImageSize: function(c, b, a) {
var f = d[c],
l, m;
f ? Object.prototype.toString.call(f) === "[object Array]" ? f.push([b, a]) : b.call(a, f) : (m = d[c] = [
[b, a]
], l = new Image, l.onload = function() {
f = d[c] = {
w: l.width,
h: l.height
};
for (var b = 0, a = m.length; b < a; b++) m[b][0].call(m[b][1], f);
l.onload = null
}, l.src = c)
}
}
})();
b.GradientUtil = {
getGradientMetrics: function(c, a, d, i) {
function h() {
n =
k >= 90 && k < 270 ? a : 0;
p = k < 180 ? d : 0;
o = a - n;
q = d - p
}
function j() {
for (; k < 0;) k += 360;
k %= 360
}
var k = i.angle,
i = i.gradientStart,
l, m, n, p, o, q, r, s;
if (i) i = i.coords(c, a, d), l = i.x, m = i.y;
k ? (k = k.degrees(), j(), h(), i || (l = n, m = p), i = b.GradientUtil.perpendicularIntersect(l, m, k, o, q), c = i[0], i = i[1]) : i ? (c = a - l, i = d - m) : (l = m = c = 0, i = d);
r = c - l;
s = i - m;
k === void 0 && (k = !r ? s < 0 ? 90 : 270 : !s ? r < 0 ? 180 : 0 : -Math.atan2(s, r) / Math.PI * 180, j(), h());
return {
angle: k,
startX: l,
startY: m,
endX: c,
endY: i,
startCornerX: n,
startCornerY: p,
endCornerX: o,
endCornerY: q,
deltaX: r,
deltaY: s,
lineLength: b.GradientUtil.distance(l, m, c, i)
}
},
perpendicularIntersect: function(c, b, a, d, h) {
return a === 0 || a === 180 ? [d, b] : a === 90 || a === 270 ? [c, h] : (a = Math.tan(-a * Math.PI / 180), c = a * c - b, b = -1 / a, d = b * d - h, h = b - a, [(d - c) / h, (a * d - b * c) / h])
},
distance: function(c, b, a, d) {
c = a - c;
b = d - b;
return Math.abs(c === 0 ? b : b === 0 ? c : Math.sqrt(c * c + b * b))
}
};
b.Observable = function() {
this.observers = [];
this.indexes = {}
};
b.Observable.prototype = {
observe: function(c) {
var a = b.Util.getUID(c),
d = this.indexes,
i = this.observers;
if (!(a in d)) d[a] = i.length, i.push(c)
},
unobserve: function(c) {
var c = b.Util.getUID(c),
a = this.indexes;
c && c in a && (delete this.observers[a[c]], delete a[c])
},
fire: function() {
for (var c = this.observers, b = c.length; b--;) c[b] && c[b]()
}
};
b.Heartbeat = new b.Observable;
b.Heartbeat.run = function() {
var c = this;
if (!c.running) setInterval(function() {
c.fire()
}, 250), c.running = 1
};
(function() {
function c() {
b.OnUnload.fire();
window.detachEvent("onunload", c);
window.PIE = null
}
b.OnUnload = new b.Observable;
window.attachEvent("onunload", c);
b.OnUnload.attachManagedEvent =
function(c, b, a) {
c.attachEvent(b, a);
this.observe(function() {
c.detachEvent(b, a)
})
}
})();
b.OnResize = new b.Observable;
b.OnUnload.attachManagedEvent(window, "onresize", function() {
b.OnResize.fire()
});
(function() {
function c() {
b.OnScroll.fire()
}
b.OnScroll = new b.Observable;
b.OnUnload.attachManagedEvent(window, "onscroll", c);
b.OnResize.observe(c)
})();
(function() {
var c;
b.OnUnload.attachManagedEvent(window, "onbeforeprint", function() {
c = b.Element.destroyAll()
});
b.OnUnload.attachManagedEvent(window, "onafterprint",
function() {
if (c) {
for (var a = 0, d = c.length; a < d; a++) b.attach(c[a]);
c = 0
}
})
})();
b.OnMouseup = new b.Observable;
b.OnUnload.attachManagedEvent(a, "onmouseup", function() {
b.OnMouseup.fire()
});
b.Length = function() {
function c(c) {
this.val = c
}
var d = a.createElement("length-calc"),
g = a.documentElement,
i = d.style,
h = {},
j = ["mm", "cm", "in", "pt", "pc"],
k = j.length,
l = {};
i.position = "absolute";
i.top = i.left = "-9999px";
for (g.appendChild(d); k--;) d.style.width = "100" + j[k], h[j[k]] = d.offsetWidth / 100;
g.removeChild(d);
d.style.width = "1em";
c.prototype = {
unitRE: /(px|em|ex|mm|cm|in|pt|pc|%)$/,
getNumber: function() {
var c = this.num;
if (c === void 0) c = this.num = parseFloat(this.val);
return c
},
getUnit: function() {
var f;
var c = this.unit;
if (!c) f = this.unit = (c = this.val.match(this.unitRE)) && c[0] || "px", c = f;
return c
},
isPercentage: function() {
return this.getUnit() === "%"
},
pixels: function(c, b) {
var a = this.getNumber(),
d = this.getUnit();
switch (d) {
case "px":
return a;
case "%":
return a * (typeof b === "function" ? b() : b) / 100;
case "em":
return a * this.getEmPixels(c);
case "ex":
return a *
this.getEmPixels(c) / 2;
default:
return a * h[d]
}
},
getEmPixels: function(c) {
var a = c.currentStyle.fontSize,
g, i;
return a.indexOf("px") > 0 ? parseFloat(a) : c.tagName in b.childlessElements ? (i = this, g = c.parentNode, b.getLength(a).pixels(g, function() {
return i.getEmPixels(g)
})) : (c.appendChild(d), a = d.offsetWidth, d.parentNode === c && c.removeChild(d), a)
}
};
b.getLength = function(b) {
return l[b] || (l[b] = new c(b))
};
return c
}();
b.BgPosition = function() {
function c(c) {
this.tokens = c
}
var a = b.getLength("50%"),
d = {
top: 1,
center: 1,
bottom: 1
},
i = {
left: 1,
center: 1,
right: 1
};
c.prototype = {
getValues: function() {
if (!this._values) {
var c = this.tokens,
j = c.length,
k = b.Tokenizer,
l = k.Type,
m = b.getLength("0"),
l = l.IDENT,
m = ["left", m, "top", m];
j === 1 && (c.push(new k.Token(l, "center")), j++);
if (j === 2) l & (c[0].tokenType | c[1].tokenType) && c[0].tokenValue in d && c[1].tokenValue in i && c.push(c.shift()), c[0].tokenType & l ? c[0].tokenValue === "center" ? m[1] = a : m[0] = c[0].tokenValue : c[0].isLengthOrPercent() && (m[1] = b.getLength(c[0].tokenValue)), c[1].tokenType & l ? c[1].tokenValue ===
"center" ? m[3] = a : m[2] = c[1].tokenValue : c[1].isLengthOrPercent() && (m[3] = b.getLength(c[1].tokenValue));
this._values = m
}
return this._values
},
coords: function(c, b, a) {
var d = this.getValues(),
f = d[1].pixels(c, b),
c = d[3].pixels(c, a);
return {
x: d[0] === "right" ? b - f : f,
y: d[2] === "bottom" ? a - c : c
}
}
};
return c
}();
b.BgSize = function() {
function c(c, b) {
this.w = c;
this.h = b
}
c.prototype = {
pixels: function(c, b, a, d, j) {
var k = this.w,
l = this.h,
m = b / a;
d /= j;
k === "contain" ? (k = d > m ? b : a * d, l = d > m ? b / d : a) : k === "cover" ? (k = d < m ? b : a * d, l = d < m ? b / d : a) : k === "auto" ?
(l = l === "auto" ? j : l.pixels(c, a), k = l * d) : (k = k.pixels(c, b), l = l === "auto" ? k / d : l.pixels(c, a));
return {
w: k,
h: l
}
}
};
c.DEFAULT = new c("auto", "auto");
return c
}();
b.Angle = function() {
function c(c) {
this.val = c
}
c.prototype = {
unitRE: /[a-z]+$/i,
getUnit: function() {
return this._unit || (this._unit = this.val.match(this.unitRE)[0].toLowerCase())
},
degrees: function() {
var c = this._deg,
b;
if (c === void 0) c = this.getUnit(), b = parseFloat(this.val, 10), c = this._deg = c === "deg" ? b : c === "rad" ? b / Math.PI * 180 : c === "grad" ? b / 400 * 360 : c === "turn" ? b * 360 : 0;
return c
}
};
return c
}();
b.Color = function() {
function c(c) {
this.val = c
}
var a = {};
c.rgbaRE = /\s*rgba\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d+|\d*\.\d+)\s*\)\s*/;
c.names = {
aliceblue: "F0F8FF",
antiquewhite: "FAEBD7",
aqua: "0FF",
aquamarine: "7FFFD4",
azure: "F0FFFF",
beige: "F5F5DC",
bisque: "FFE4C4",
black: "000",
blanchedalmond: "FFEBCD",
blue: "00F",
blueviolet: "8A2BE2",
brown: "A52A2A",
burlywood: "DEB887",
cadetblue: "5F9EA0",
chartreuse: "7FFF00",
chocolate: "D2691E",
coral: "FF7F50",
cornflowerblue: "6495ED",
cornsilk: "FFF8DC",
crimson: "DC143C",
cyan: "0FF",
darkblue: "00008B",
darkcyan: "008B8B",
darkgoldenrod: "B8860B",
darkgray: "A9A9A9",
darkgreen: "006400",
darkkhaki: "BDB76B",
darkmagenta: "8B008B",
darkolivegreen: "556B2F",
darkorange: "FF8C00",
darkorchid: "9932CC",
darkred: "8B0000",
darksalmon: "E9967A",
darkseagreen: "8FBC8F",
darkslateblue: "483D8B",
darkslategray: "2F4F4F",
darkturquoise: "00CED1",
darkviolet: "9400D3",
deeppink: "FF1493",
deepskyblue: "00BFFF",
dimgray: "696969",
dodgerblue: "1E90FF",
firebrick: "B22222",
floralwhite: "FFFAF0",
forestgreen: "228B22",
fuchsia: "F0F",
gainsboro: "DCDCDC",
ghostwhite: "F8F8FF",
gold: "FFD700",
goldenrod: "DAA520",
gray: "808080",
green: "008000",
greenyellow: "ADFF2F",
honeydew: "F0FFF0",
hotpink: "FF69B4",
indianred: "CD5C5C",
indigo: "4B0082",
ivory: "FFFFF0",
khaki: "F0E68C",
lavender: "E6E6FA",
lavenderblush: "FFF0F5",
lawngreen: "7CFC00",
lemonchiffon: "FFFACD",
lightblue: "ADD8E6",
lightcoral: "F08080",
lightcyan: "E0FFFF",
lightgoldenrodyellow: "FAFAD2",
lightgreen: "90EE90",
lightgrey: "D3D3D3",
lightpink: "FFB6C1",
lightsalmon: "FFA07A",
lightseagreen: "20B2AA",
lightskyblue: "87CEFA",
lightslategray: "789",
lightsteelblue: "B0C4DE",
lightyellow: "FFFFE0",
lime: "0F0",
limegreen: "32CD32",
linen: "FAF0E6",
magenta: "F0F",
maroon: "800000",
mediumauqamarine: "66CDAA",
mediumblue: "0000CD",
mediumorchid: "BA55D3",
mediumpurple: "9370D8",
mediumseagreen: "3CB371",
mediumslateblue: "7B68EE",
mediumspringgreen: "00FA9A",
mediumturquoise: "48D1CC",
mediumvioletred: "C71585",
midnightblue: "191970",
mintcream: "F5FFFA",
mistyrose: "FFE4E1",
moccasin: "FFE4B5",
navajowhite: "FFDEAD",
navy: "000080",
oldlace: "FDF5E6",
olive: "808000",
olivedrab: "688E23",
orange: "FFA500",
orangered: "FF4500",
orchid: "DA70D6",
palegoldenrod: "EEE8AA",
palegreen: "98FB98",
paleturquoise: "AFEEEE",
palevioletred: "D87093",
papayawhip: "FFEFD5",
peachpuff: "FFDAB9",
peru: "CD853F",
pink: "FFC0CB",
plum: "DDA0DD",
powderblue: "B0E0E6",
purple: "800080",
red: "F00",
rosybrown: "BC8F8F",
royalblue: "4169E1",
saddlebrown: "8B4513",
salmon: "FA8072",
sandybrown: "F4A460",
seagreen: "2E8B57",
seashell: "FFF5EE",
sienna: "A0522D",
silver: "C0C0C0",
skyblue: "87CEEB",
slateblue: "6A5ACD",
slategray: "708090",
snow: "FFFAFA",
springgreen: "00FF7F",
steelblue: "4682B4",
tan: "D2B48C",
teal: "008080",
thistle: "D8BFD8",
tomato: "FF6347",
turquoise: "40E0D0",
violet: "EE82EE",
wheat: "F5DEB3",
white: "FFF",
whitesmoke: "F5F5F5",
yellow: "FF0",
yellowgreen: "9ACD32"
};
c.prototype = {
parse: function() {
if (!this._color) {
var b = this.val,
a;
if (a = b.match(c.rgbaRE)) this._color = "rgb(" + a[1] + "," + a[2] + "," + a[3] + ")", this._alpha = parseFloat(a[4]);
else {
if ((a = b.toLowerCase()) in c.names) b = "#" + c.names[a];
this._color = b;
this._alpha = b === "transparent" ? 0 : 1
}
}
},
colorValue: function(c) {
this.parse();
return this._color === "currentColor" ? c.currentStyle.color : this._color
},
alpha: function() {
this.parse();
return this._alpha
}
};
b.getColor = function(b) {
return a[b] || (a[b] = new c(b))
};
return c
}();
b.Tokenizer = function() {
function c(c) {
this.css = c;
this.ch = 0;
this.tokens = [];
this.tokenIndex = 0
}
var a = c.Type = {
ANGLE: 1,
CHARACTER: 2,
COLOR: 4,
DIMEN: 8,
FUNCTION: 16,
IDENT: 32,
LENGTH: 64,
NUMBER: 128,
OPERATOR: 256,
PERCENT: 512,
STRING: 1024,
URL: 2048
};
c.Token = function(c, b) {
this.tokenType = c;
this.tokenValue = b
};
c.Token.prototype = {
isLength: function() {
return this.tokenType &
a.LENGTH || this.tokenType & a.NUMBER && this.tokenValue === "0"
},
isLengthOrPercent: function() {
return this.isLength() || this.tokenType & a.PERCENT
}
};
c.prototype = {
whitespace: /\s/,
number: /^[\+\-]?(\d*\.)?\d+/,
url: /^url\(\s*("([^"]*)"|'([^']*)'|([!#$%&*-~]*))\s*\)/i,
ident: /^\-?[_a-z][\w-]*/i,
string: /^("([^"]*)"|'([^']*)')/,
operator: /^[\/,]/,
hash: /^#[\w]+/,
hashColor: /^#([\da-f]{6}|[\da-f]{3})/i,
unitTypes: {
px: a.LENGTH,
em: a.LENGTH,
ex: a.LENGTH,
mm: a.LENGTH,
cm: a.LENGTH,
"in": a.LENGTH,
pt: a.LENGTH,
pc: a.LENGTH,
deg: a.ANGLE,
rad: a.ANGLE,
grad: a.ANGLE
},
colorFunctions: {
rgb: 1,
rgba: 1,
hsl: 1,
hsla: 1
},
next: function(d) {
function i(b, a) {
var f = new c.Token(b, a);
d || (n.tokens.push(f), n.tokenIndex++);
return f
}
function h() {
n.tokenIndex++;
return null
}
var j, k, l, m, n = this;
if (this.tokenIndex < this.tokens.length) return this.tokens[this.tokenIndex++];
for (; this.whitespace.test(this.css.charAt(this.ch));) this.ch++;
if (this.ch >= this.css.length) return h();
k = this.ch;
j = this.css.substring(this.ch);
l = j.charAt(0);
switch (l) {
case "#":
if (m = j.match(this.hashColor)) return this.ch +=
m[0].length, i(a.COLOR, m[0]);
break;
case '"':
case "'":
if (m = j.match(this.string)) return this.ch += m[0].length, i(a.STRING, m[2] || m[3] || "");
break;
case "/":
case ",":
return this.ch++, i(a.OPERATOR, l);
case "u":
if (m = j.match(this.url)) return this.ch += m[0].length, i(a.URL, m[2] || m[3] || m[4] || "")
}
if (m = j.match(this.number)) {
l = m[0];
this.ch += l.length;
if (j.charAt(l.length) === "%") return this.ch++, i(a.PERCENT, l + "%");
if (m = j.substring(l.length).match(this.ident)) return l += m[0], this.ch += m[0].length, i(this.unitTypes[m[0].toLowerCase()] ||
a.DIMEN, l);
return i(a.NUMBER, l)
}
if (m = j.match(this.ident)) {
l = m[0];
this.ch += l.length;
if (l.toLowerCase() in b.Color.names || l === "currentColor" || l === "transparent") return i(a.COLOR, l);
if (j.charAt(l.length) === "(") {
this.ch++;
if (l.toLowerCase() in this.colorFunctions) {
j = function(c) {
return c && c.tokenType & a.NUMBER
};
m = function(c) {
return c && c.tokenType & (a.NUMBER | a.PERCENT)
};
var p = function(c, b) {
return c && c.tokenValue === b
},
o = function() {
return n.next(1)
};
if ((l.charAt(0) === "r" ? m(o()) : j(o())) && p(o(), ",") && m(o()) && p(o(),
",") && m(o()) && (l === "rgb" || l === "hsa" || p(o(), ",") && j(o())) && p(o(), ")")) return i(a.COLOR, this.css.substring(k, this.ch));
return h()
}
return i(a.FUNCTION, l)
}
return i(a.IDENT, l)
}
this.ch++;
return i(a.CHARACTER, l)
},
hasNext: function() {
var c = this.next();
this.prev();
return !!c
},
prev: function() {
return this.tokens[this.tokenIndex-- - 2]
},
all: function() {
for (; this.next(););
return this.tokens
},
until: function(c, b) {
for (var a = [], d, f; d = this.next();) {
if (c(d)) {
f = !0;
this.prev();
break
}
a.push(d)
}
return b && !f ? null : a
}
};
return c
}();
b.BoundsInfo = function(c) {
this.targetElement = c
};
b.BoundsInfo.prototype = {
_locked: 0,
positionChanged: function() {
var c = this._lastBounds,
b;
return !c || (b = this.getBounds()) && (c.x !== b.x || c.y !== b.y)
},
sizeChanged: function() {
var c = this._lastBounds,
b;
return !c || (b = this.getBounds()) && (c.w !== b.w || c.h !== b.h)
},
getLiveBounds: function() {
var c = this.targetElement,
a = c.getBoundingClientRect(),
d = b.ieDocMode === 9;
return {
x: a.left,
y: a.top,
w: d ? c.offsetWidth : a.right - a.left,
h: d ? c.offsetHeight : a.bottom - a.top
}
},
getBounds: function() {
return this._locked ?
this._lockedBounds || (this._lockedBounds = this.getLiveBounds()) : this.getLiveBounds()
},
hasBeenQueried: function() {
return !!this._lastBounds
},
lock: function() {
++this._locked
},
unlock: function() {
if (!--this._locked) {
if (this._lockedBounds) this._lastBounds = this._lockedBounds;
this._lockedBounds = null
}
}
};
(function() {
function c(c) {
var a = b.Util.getUID(c);
return function() {
if (this._locked) {
var b = this._lockedValues || (this._lockedValues = {});
return a in b ? b[a] : b[a] = c.call(this)
} else return c.call(this)
}
}
b.StyleInfoBase = {
_locked: 0,
newStyleInfo: function(c) {
function a(c) {
this.targetElement = c;
this._lastCss = this.getCss()
}
b.Util.merge(a.prototype, b.StyleInfoBase, c);
a._propsCache = {};
return a
},
getProps: function() {
var c = this.getCss(),
b = this.constructor._propsCache;
return c ? c in b ? b[c] : b[c] = this.parseCss(c) : null
},
getCss: c(function() {
var c = this.targetElement,
a = this.constructor,
d = c.style,
c = c.currentStyle,
h = this.cssProperty,
j = this.styleProperty,
k = a._prefixedCssProp || (a._prefixedCssProp = b.CSS_PREFIX + h),
a = a._prefixedStyleProp ||
(a._prefixedStyleProp = b.STYLE_PREFIX + j.charAt(0).toUpperCase() + j.substring(1));
return d[a] || c.getAttribute(k) || d[j] || c.getAttribute(h)
}),
isActive: c(function() {
return !!this.getProps()
}),
changed: c(function() {
var c = this.getCss(),
b = c !== this._lastCss;
this._lastCss = c;
return b
}),
cacheWhenLocked: c,
lock: function() {
++this._locked
},
unlock: function() {
--this._locked || delete this._lockedValues
}
}
})();
b.BackgroundStyleInfo = b.StyleInfoBase.newStyleInfo({
cssProperty: b.CSS_PREFIX + "background",
styleProperty: b.STYLE_PREFIX +
"Background",
attachIdents: {
scroll: 1,
fixed: 1,
local: 1
},
repeatIdents: {
"repeat-x": 1,
"repeat-y": 1,
repeat: 1,
"no-repeat": 1
},
originAndClipIdents: {
"padding-box": 1,
"border-box": 1,
"content-box": 1
},
positionIdents: {
top: 1,
right: 1,
bottom: 1,
left: 1,
center: 1
},
sizeIdents: {
contain: 1,
cover: 1
},
propertyNames: {
CLIP: "backgroundClip",
COLOR: "backgroundColor",
IMAGE: "backgroundImage",
ORIGIN: "backgroundOrigin",
POSITION: "backgroundPosition",
REPEAT: "backgroundRepeat",
SIZE: "backgroundSize"
},
parseCss: function(c) {
function a(c) {
return c &&
c.isLengthOrPercent() || c.tokenType & n && c.tokenValue in s
}
function d(c) {
return c && (c.isLengthOrPercent() && b.getLength(c.tokenValue) || c.tokenValue === "auto" && "auto")
}
var i = this.targetElement.currentStyle,
h, j, k, l = b.Tokenizer.Type,
m = l.OPERATOR,
n = l.IDENT,
p = l.COLOR,
o, q, r = 0,
s = this.positionIdents,
w, u, v = {
bgImages: []
};
if (this.getCss3()) {
h = new b.Tokenizer(c);
for (k = {}; j = h.next();)
if (o = j.tokenType, q = j.tokenValue, !k.imgType && o & l.FUNCTION && q === "linear-gradient") {
w = {
stops: [],
imgType: q
};
for (u = {}; j = h.next();) {
o = j.tokenType;
q = j.tokenValue;
if (o & l.CHARACTER && q === ")") {
u.color && w.stops.push(u);
w.stops.length > 1 && b.Util.merge(k, w);
break
}
if (o & p) {
if (w.angle || w.gradientStart) {
j = h.prev();
if (j.tokenType !== m) break;
h.next()
}
u = {
color: b.getColor(q)
};
j = h.next();
j.isLengthOrPercent() ? u.offset = b.getLength(j.tokenValue) : h.prev()
} else if (o & l.ANGLE && !w.angle && !u.color && !w.stops.length) w.angle = new b.Angle(j.tokenValue);
else if (a(j) && !w.gradientStart && !u.color && !w.stops.length) h.prev(), w.gradientStart = new b.BgPosition(h.until(function(c) {
return !a(c)
}, !1));
else if (o & m && q === ",") u.color && (w.stops.push(u), u = {});
else break
}
} else if (!k.imgType && o & l.URL) k.imgUrl = q, k.imgType = "image";
else if (a(j) && !k.bgPosition) h.prev(), k.bgPosition = new b.BgPosition(h.until(function(c) {
return !a(c)
}, !1));
else if (o & n)
if (q in this.repeatIdents && !k.imgRepeat) k.imgRepeat = q;
else if (q in this.originAndClipIdents && !k.bgOrigin) k.bgOrigin = q, (j = h.next()) && j.tokenType & n && j.tokenValue in this.originAndClipIdents ? k.bgClip = j.tokenValue : (k.bgClip = q, h.prev());
else if (q in this.attachIdents &&
!k.bgAttachment) k.bgAttachment = q;
else return null;
else if (o & p && !v.color) v.color = b.getColor(q);
else if (o & m && q === "/" && !k.bgSize && k.bgPosition)
if (j = h.next(), j.tokenType & n && j.tokenValue in this.sizeIdents) k.bgSize = new b.BgSize(j.tokenValue);
else if (j = d(j)) o = d(h.next()), o || (o = j, h.prev()), k.bgSize = new b.BgSize(j, o);
else return null;
else if (o & m && q === "," && k.imgType) k.origString = c.substring(r, h.ch - 1), r = h.ch, v.bgImages.push(k), k = {};
else return null;
if (k.imgType) k.origString = c.substring(r), v.bgImages.push(k)
} else this.withActualBg(b.ieDocMode <
9 ? function() {
var c = this.propertyNames,
a = i[c.POSITION + "X"],
d = i[c.POSITION + "Y"],
f = i[c.IMAGE],
g = i[c.COLOR];
if (g !== "transparent") v.color = b.getColor(g);
if (f !== "none") v.bgImages = [{
imgType: "image",
imgUrl: (new b.Tokenizer(f)).next().tokenValue,
imgRepeat: i[c.REPEAT],
bgPosition: new b.BgPosition((new b.Tokenizer(a + " " + d)).all())
}]
} : function() {
var c = this.propertyNames,
a = /\s*,\s*/,
d = i[c.IMAGE].split(a),
f = i[c.COLOR],
g, h, j, k, l, m;
if (f !== "transparent") v.color = b.getColor(f);
if ((k = d.length) && d[0] !== "none") {
f = i[c.REPEAT].split(a);
g = i[c.POSITION].split(a);
h = i[c.ORIGIN].split(a);
j = i[c.CLIP].split(a);
c = i[c.SIZE].split(a);
v.bgImages = [];
for (a = 0; a < k; a++)
if ((l = d[a]) && l !== "none") m = c[a].split(" "), v.bgImages.push({
origString: l + " " + f[a] + " " + g[a] + " / " + c[a] + " " + h[a] + " " + j[a],
imgType: "image",
imgUrl: (new b.Tokenizer(l)).next().tokenValue,
imgRepeat: f[a],
bgPosition: new b.BgPosition((new b.Tokenizer(g[a])).all()),
bgOrigin: h[a],
bgClip: j[a],
bgSize: new b.BgSize(m[0], m[1])
})
}
});
return v.color || v.bgImages[0] ? v : null
},
withActualBg: function(c) {
var a =
b.ieDocMode > 8,
d = this.propertyNames,
i = this.targetElement.runtimeStyle,
h = i[d.IMAGE],
j = i[d.COLOR],
k = i[d.REPEAT],
l, m, n, p;
h && (i[d.IMAGE] = "");
j && (i[d.COLOR] = "");
k && (i[d.REPEAT] = "");
a && (l = i[d.CLIP], m = i[d.ORIGIN], p = i[d.POSITION], n = i[d.SIZE], l && (i[d.CLIP] = ""), m && (i[d.ORIGIN] = ""), p && (i[d.POSITION] = ""), n && (i[d.SIZE] = ""));
c = c.call(this);
h && (i[d.IMAGE] = h);
j && (i[d.COLOR] = j);
k && (i[d.REPEAT] = k);
a && (l && (i[d.CLIP] = l), m && (i[d.ORIGIN] = m), p && (i[d.POSITION] = p), n && (i[d.SIZE] = n));
return c
},
getCss: b.StyleInfoBase.cacheWhenLocked(function() {
return this.getCss3() ||
this.withActualBg(function() {
var c = this.targetElement.currentStyle,
b = this.propertyNames;
return c[b.COLOR] + " " + c[b.IMAGE] + " " + c[b.REPEAT] + " " + c[b.POSITION + "X"] + " " + c[b.POSITION + "Y"]
})
}),
getCss3: b.StyleInfoBase.cacheWhenLocked(function() {
var c = this.targetElement;
return c.style[this.styleProperty] || c.currentStyle.getAttribute(this.cssProperty)
}),
isPngFix: function() {
var c = 0;
if (b.ieVersion < 7) c = this.targetElement, c = "" + (c.style[b.STYLE_PREFIX + "PngFix"] || c.currentStyle.getAttribute(b.CSS_PREFIX + "png-fix")) ===
"true";
return c
},
isActive: b.StyleInfoBase.cacheWhenLocked(function() {
return (this.getCss3() || this.isPngFix()) && !!this.getProps()
})
});
b.BorderStyleInfo = b.StyleInfoBase.newStyleInfo({
sides: ["Top", "Right", "Bottom", "Left"],
namedWidths: {
thin: "1px",
medium: "3px",
thick: "5px"
},
parseCss: function() {
var c = {},
a = {},
d = {},
i = !1,
h = !0,
j = !0,
k = !0;
this.withActualBorder(function() {
var f;
for (var l = this.targetElement.currentStyle, m = 0, n, p, o, q, r, s, w; m < 4; m++) o = this.sides[m], w = o.charAt(0).toLowerCase(), n = a[w] = l["border" + o + "Style"],
p = l["border" + o + "Color"], o = l["border" + o + "Width"], m > 0 && (n !== q && (j = !1), p !== r && (h = !1), o !== s && (k = !1)), q = n, r = p, s = o, d[w] = b.getColor(p), f = c[w] = b.getLength(a[w] === "none" ? "0" : this.namedWidths[o] || o), o = f, o.pixels(this.targetElement) > 0 && (i = !0)
});
return i ? {
widths: c,
styles: a,
colors: d,
widthsSame: k,
colorsSame: h,
stylesSame: j
} : null
},
getCss: b.StyleInfoBase.cacheWhenLocked(function() {
var c = this.targetElement,
a = c.currentStyle,
d;
c.tagName in b.tableCellTags && c.offsetParent.currentStyle.borderCollapse === "collapse" || this.withActualBorder(function() {
d =
a.borderWidth + "|" + a.borderStyle + "|" + a.borderColor
});
return d
}),
withActualBorder: function(c) {
var b = this.targetElement.runtimeStyle,
a = b.borderWidth,
d = b.borderColor;
if (a) b.borderWidth = "";
if (d) b.borderColor = "";
c = c.call(this);
if (a) b.borderWidth = a;
if (d) b.borderColor = d;
return c
}
});
(function() {
b.BorderRadiusStyleInfo = b.StyleInfoBase.newStyleInfo({
cssProperty: "border-radius",
styleProperty: "borderRadius",
parseCss: function(c) {
var a = null,
d, h, j, k, l = !1;
if (c) {
h = new b.Tokenizer(c);
var m = function() {
for (var c = [], a;
(j =
h.next()) && j.isLengthOrPercent();) {
k = b.getLength(j.tokenValue);
a = k.getNumber();
if (a < 0) return null;
a > 0 && (l = !0);
c.push(k)
}
return c.length > 0 && c.length < 5 ? {
tl: c[0],
tr: c[1] || c[0],
br: c[2] || c[0],
bl: c[3] || c[1] || c[0]
} : null
};
if (c = m()) j ? j.tokenType & b.Tokenizer.Type.OPERATOR && j.tokenValue === "/" && (d = m()) : d = c, l && c && d && (a = {
x: c,
y: d
})
}
return a
}
});
var c = b.getLength("0"),
c = {
tl: c,
tr: c,
br: c,
bl: c
};
b.BorderRadiusStyleInfo.ALL_ZERO = {
x: c,
y: c
}
})();
b.BorderImageStyleInfo = b.StyleInfoBase.newStyleInfo({
cssProperty: "border-image",
styleProperty: "borderImage",
repeatIdents: {
stretch: 1,
round: 1,
repeat: 1,
space: 1
},
parseCss: function(c) {
var a = null,
d, i, h, j, k, l, m = 0,
n = b.Tokenizer.Type,
p = n.IDENT,
o = n.NUMBER,
q = n.PERCENT;
if (c) {
d = new b.Tokenizer(c);
for (var a = {}, r = function(c) {
return c && c.tokenType & n.OPERATOR && c.tokenValue === "/"
}, s = function(c) {
return c && c.tokenType & p && c.tokenValue === "fill"
}, w = function() {
j = d.until(function(c) {
return !(c.tokenType & (o | q))
});
s(d.next()) && !a.fill ? a.fill = !0 : d.prev();
r(d.next()) ? (m++, k = d.until(function(c) {
return !c.isLengthOrPercent() &&
!(c.tokenType & p && c.tokenValue === "auto")
}), r(d.next()) && (m++, l = d.until(function(c) {
return !c.isLength()
}))) : d.prev()
}; c = d.next();)
if (i = c.tokenType, h = c.tokenValue, i & (o | q) && !j) d.prev(), w();
else if (s(c) && !a.fill) a.fill = !0, w();
else if (i & p && this.repeatIdents[h] && !a.repeat) {
if (a.repeat = {
h: h
}, c = d.next()) c.tokenType & p && this.repeatIdents[c.tokenValue] ? a.repeat.v = c.tokenValue : d.prev()
} else if (i & n.URL && !a.src) a.src = h;
else return null;
if (!a.src || !j || j.length < 1 || j.length > 4 || k && k.length > 4 || m === 1 && k.length < 1 || l &&
l.length > 4 || m === 2 && l.length < 1) return null;
if (!a.repeat) a.repeat = {
h: "stretch"
};
if (!a.repeat.v) a.repeat.v = a.repeat.h;
c = function(c, a) {
return {
t: a(c[0]),
r: a(c[1] || c[0]),
b: a(c[2] || c[0]),
l: a(c[3] || c[1] || c[0])
}
};
a.slice = c(j, function(c) {
return b.getLength(c.tokenType & o ? c.tokenValue + "px" : c.tokenValue)
});
if (k && k[0]) a.widths = c(k, function(c) {
return c.isLengthOrPercent() ? b.getLength(c.tokenValue) : c.tokenValue
});
if (l && l[0]) a.outset = c(l, function(c) {
return c.isLength() ? b.getLength(c.tokenValue) : c.tokenValue
})
}
return a
}
});
b.BoxShadowStyleInfo = b.StyleInfoBase.newStyleInfo({
cssProperty: "box-shadow",
styleProperty: "boxShadow",
parseCss: function(c) {
var a, d = b.getLength,
i = b.Tokenizer.Type,
h;
if (c) {
h = new b.Tokenizer(c);
a = {
outset: [],
inset: []
};
for (c = function() {
for (var c, k, l, m, n, p; c = h.next();)
if (l = c.tokenValue, k = c.tokenType, k & i.OPERATOR && l === ",") break;
else if (c.isLength() && !n) h.prev(), n = h.until(function(c) {
return !c.isLength()
});
else if (k & i.COLOR && !m) m = l;
else if (k & i.IDENT && l === "inset" && !p) p = !0;
else return !1;
c = n && n.length;
if (c > 1 &&
c < 5) return (p ? a.inset : a.outset).push({
xOffset: d(n[0].tokenValue),
yOffset: d(n[1].tokenValue),
blur: d(n[2] ? n[2].tokenValue : "0"),
spread: d(n[3] ? n[3].tokenValue : "0"),
color: b.getColor(m || "currentColor")
}), !0;
return !1
}; c(););
}
return a && (a.inset.length || a.outset.length) ? a : null
}
});
b.VisibilityStyleInfo = b.StyleInfoBase.newStyleInfo({
getCss: b.StyleInfoBase.cacheWhenLocked(function() {
var c = this.targetElement.currentStyle;
return c.visibility + "|" + c.display
}),
parseCss: function() {
var c = this.targetElement,
a = c.runtimeStyle,
c = c.currentStyle,
b = a.visibility,
d;
a.visibility = "";
d = c.visibility;
a.visibility = b;
return {
visible: d !== "hidden",
displayed: c.display !== "none"
}
},
isActive: function() {
return !1
}
});
b.RendererBase = {
newRenderer: function(c) {
function a(c, b, d, f) {
this.targetElement = c;
this.boundsInfo = b;
this.styleInfos = d;
this.parent = f
}
b.Util.merge(a.prototype, b.RendererBase, c);
return a
},
isPositioned: !1,
needsUpdate: function() {
return !1
},
prepareUpdate: b.emptyFn,
updateProps: function() {
this.destroy();
this.isActive() && this.draw()
},
updatePos: function() {
this.isPositioned = !0
},
updateSize: function() {
this.isActive() ? this.draw() : this.destroy()
},
addLayer: function(c, a) {
this.removeLayer(c);
for (var b = this._layers || (this._layers = []), d = c + 1, h = b.length, j; d < h; d++)
if (j = b[d]) break;
b[c] = a;
this.getBox().insertBefore(a, j || null)
},
getLayer: function(c) {
var a = this._layers;
return a && a[c] || null
},
removeLayer: function(c) {
var a = this.getLayer(c),
b = this._box;
a && b && (b.removeChild(a), this._layers[c] = null)
},
getShape: function(c, d, g, i) {
var h = this._shapes || (this._shapes = {}),
j = h[c];
if (!j) j = h[c] = b.Util.createVmlElement("shape"),
d && j.appendChild(j[d] = b.Util.createVmlElement(d)), i && (g = this.getLayer(i), g || (this.addLayer(i, a.createElement("group" + i)), g = this.getLayer(i))), g.appendChild(j), c = j.style, c.position = "absolute", c.left = c.top = 0, c.behavior = "url(#default#VML)";
return j
},
deleteShape: function(c) {
var a = this._shapes,
b = a && a[c];
b && (b.parentNode.removeChild(b), delete a[c]);
return !!b
},
getRadiiPixels: function(c) {
var a = this.targetElement,
b = this.boundsInfo.getBounds(),
d = b.w,
h = b.h,
j, k, l, m, n, p, b = c.x.tl.pixels(a, d);
j = c.y.tl.pixels(a,
h);
k = c.x.tr.pixels(a, d);
l = c.y.tr.pixels(a, h);
m = c.x.br.pixels(a, d);
n = c.y.br.pixels(a, h);
p = c.x.bl.pixels(a, d);
c = c.y.bl.pixels(a, h);
d = Math.min(d / (b + k), h / (l + n), d / (p + m), h / (j + c));
d < 1 && (b *= d, j *= d, k *= d, l *= d, m *= d, n *= d, p *= d, c *= d);
return {
x: {
tl: b,
tr: k,
br: m,
bl: p
},
y: {
tl: j,
tr: l,
br: n,
bl: c
}
}
},
getBoxPath: function(c, a, b) {
var a = a || 1,
d, h, j = this.boundsInfo.getBounds();
h = j.w * a;
var j = j.h * a,
k = this.styleInfos.borderRadiusInfo,
l = Math.floor,
m = Math.ceil,
n = c ? c.t * a : 0,
p = c ? c.r * a : 0,
o = c ? c.b * a : 0,
c = c ? c.l * a : 0,
q, r, s, w, u;
b || k.isActive() ?
(d = this.getRadiiPixels(b || k.getProps()), b = d.x.tl * a, k = d.y.tl * a, q = d.x.tr * a, r = d.y.tr * a, s = d.x.br * a, w = d.y.br * a, u = d.x.bl * a, a *= d.y.bl, h = "m" + l(c) + "," + l(k) + "qy" + l(b) + "," + l(n) + "l" + m(h - q) + "," + l(n) + "qx" + m(h - p) + "," + l(r) + "l" + m(h - p) + "," + m(j - w) + "qy" + m(h - s) + "," + m(j - o) + "l" + l(u) + "," + m(j - o) + "qx" + l(c) + "," + m(j - a) + " x e") : h = "m" + l(c) + "," + l(n) + "l" + m(h - p) + "," + l(n) + "l" + m(h - p) + "," + m(j - o) + "l" + l(c) + "," + m(j - o) + "xe";
return h
},
getBox: function() {
var c = this.parent.getLayer(this.boxZIndex),
b;
if (!c) c = a.createElement(this.boxName), b =
c.style, b.position = "absolute", b.top = b.left = 0, this.parent.addLayer(this.boxZIndex, c);
return c
},
hideBorder: function() {
var c = this.targetElement,
d = c.currentStyle,
g = c.runtimeStyle,
i = c.tagName,
h = b.ieVersion === 6,
j;
if (h && (i in b.childlessElements || i === "FIELDSET") || i === "BUTTON" || i === "INPUT" && c.type in b.inputButtonTypes) {
g.borderWidth = "";
i = this.styleInfos.borderInfo.sides;
for (j = i.length; j--;) h = i[j], g["padding" + h] = "", g["padding" + h] = b.getLength(d["padding" + h]).pixels(c) + b.getLength(d["border" + h + "Width"]).pixels(c) +
(b.ieVersion !== 8 && j % 2 ? 1 : 0);
g.borderWidth = 0
} else if (h) {
if (c.childNodes.length !== 1 || c.firstChild.tagName !== "ie6-mask") {
d = a.createElement("ie6-mask");
i = d.style;
i.visibility = "visible";
for (i.zoom = 1; i = c.firstChild;) d.appendChild(i);
c.appendChild(d);
g.visibility = "hidden"
}
} else g.borderColor = "transparent"
},
unhideBorder: function() {},
destroy: function() {
this.parent.removeLayer(this.boxZIndex);
delete this._shapes;
delete this._layers
}
};
b.RootRenderer = b.RendererBase.newRenderer({
isActive: function() {
var c = this.childRenderers,
a;
for (a in c)
if (c.hasOwnProperty(a) && c[a].isActive()) return !0;
return !1
},
needsUpdate: function() {
return this.styleInfos.visibilityInfo.changed()
},
updatePos: function() {
if (this.isActive()) {
var c = this.getPositioningElement(),
d = c,
g, c = c.currentStyle,
i = c.position,
h = this.getBox().style,
j = 0,
k = 0,
k = this.boundsInfo.getBounds();
if (i === "fixed" && b.ieVersion > 6) j = k.x, k = k.y, d = i;
else {
do d = d.offsetParent; while (d && d.currentStyle.position === "static");
d ? (g = d.getBoundingClientRect(), d = d.currentStyle, j = k.x - g.left - (parseFloat(d.borderLeftWidth) ||
0), k = k.y - g.top - (parseFloat(d.borderTopWidth) || 0)) : (d = a.documentElement, j = k.x + d.scrollLeft - d.clientLeft, k = k.y + d.scrollTop - d.clientTop);
d = "absolute"
}
h.position = d;
h.left = j;
h.top = k;
h.zIndex = i === "static" ? -1 : c.zIndex;
this.isPositioned = !0
}
},
updateSize: b.emptyFn,
updateVisibility: function() {
var c = this.styleInfos.visibilityInfo.getProps();
this.getBox().style.display = c.visible && c.displayed ? "" : "none"
},
updateProps: function() {
this.isActive() ? this.updateVisibility() : this.destroy()
},
getPositioningElement: function() {
var c =
this.targetElement;
return c.tagName in b.tableCellTags ? c.offsetParent : c
},
getBox: function() {
var c = this._box,
b;
if (!c) b = this.getPositioningElement(), c = this._box = a.createElement("css3-container"), c.style.direction = "ltr", this.updateVisibility(), b.parentNode.insertBefore(c, b);
return c
},
finishUpdate: b.emptyFn,
destroy: function() {
var c = this._box,
a;
c && (a = c.parentNode) && a.removeChild(c);
delete this._box;
delete this._layers
}
});
b.BackgroundRenderer = b.RendererBase.newRenderer({
boxZIndex: 2,
boxName: "background",
needsUpdate: function() {
var c = this.styleInfos;
return c.backgroundInfo.changed() || c.borderRadiusInfo.changed()
},
isActive: function() {
var c = this.styleInfos;
return c.borderImageInfo.isActive() || c.borderRadiusInfo.isActive() || c.backgroundInfo.isActive() || c.boxShadowInfo.isActive() && c.boxShadowInfo.getProps().inset
},
draw: function() {
var c = this.boundsInfo.getBounds();
c.w && c.h && (this.drawBgColor(), this.drawBgImages())
},
drawBgColor: function() {
var c = this.styleInfos.backgroundInfo.getProps(),
a = this.boundsInfo.getBounds(),
b = this.targetElement,
d = c && c.color,
h, j;
if (d && d.alpha() > 0) {
if (this.hideBackground(), c = this.getShape("bgColor", "fill", this.getBox(), 1), h = a.w, a = a.h, c.stroked = !1, c.coordsize = h * 2 + "," + a * 2, c.coordorigin = "1,1", c.path = this.getBoxPath(null, 2), j = c.style, j.width = h, j.height = a, c.fill.color = d.colorValue(b), b = d.alpha(), b < 1) c.fill.opacity = b
} else this.deleteShape("bgColor")
},
drawBgImages: function() {
var c = this.styleInfos.backgroundInfo.getProps(),
a = this.boundsInfo.getBounds(),
c = c && c.bgImages,
b, d, h, j, k;
if (c) {
this.hideBackground();
d = a.w;
h = a.h;
for (k = c.length; k--;) a = c[k], b = this.getShape("bgImage" + k, "fill", this.getBox(), 2), b.stroked = !1, b.fill.type = "tile", b.fillcolor = "none", b.coordsize = d * 2 + "," + h * 2, b.coordorigin = "1,1", b.path = this.getBoxPath(0, 2), j = b.style, j.width = d, j.height = h, a.imgType === "linear-gradient" ? this.addLinearGradient(b, a) : (b.fill.src = a.imgUrl, this.positionBgImage(b, k))
}
for (k = c ? c.length : 0; this.deleteShape("bgImage" + k++););
},
positionBgImage: function(c, a) {
var d = this;
b.Util.withImageSize(c.fill.src, function(i) {
var h = d.targetElement,
j = d.boundsInfo.getBounds(),
k = j.w,
j = j.h;
if (k && j) {
var l = c.fill,
m = d.styleInfos,
n = m.borderInfo.getProps(),
p = n && n.widths,
n = p ? p.t.pixels(h) : 0,
o = p ? p.r.pixels(h) : 0,
q = p ? p.b.pixels(h) : 0,
p = p ? p.l.pixels(h) : 0,
m = m.backgroundInfo.getProps().bgImages[a],
h = m.bgPosition ? m.bgPosition.coords(h, k - i.w - p - o, j - i.h - n - q) : {
x: 0,
y: 0
},
m = m.imgRepeat,
q = o = 0,
r = k + 1,
s = j + 1,
w = b.ieVersion === 8 ? 0 : 1,
p = Math.round(h.x) + p + 0.5,
n = Math.round(h.y) + n + 0.5;
l.position = p / k + "," + n / j;
if (m && m !== "repeat") {
if (m === "repeat-x" || m === "no-repeat") o = n + 1, s = n + i.h + w;
if (m === "repeat-y" || m === "no-repeat") q = p + 1, r = p + i.w + w;
c.style.clip = "rect(" + o + "px," + r + "px," + s + "px," + q + "px)"
}
}
})
},
addLinearGradient: function(c, a) {
var d = this.targetElement,
i = this.boundsInfo.getBounds(),
h = i.w,
j = i.h,
i = c.fill,
k = a.stops,
l = k.length,
m = Math.PI,
n = b.GradientUtil,
p = n.perpendicularIntersect,
o = n.distance,
n = n.getGradientMetrics(d, h, j, a),
q = n.angle,
r = n.startX,
s = n.startY,
w = n.startCornerX,
u = n.startCornerY,
v = n.endCornerX,
C = n.endCornerY,
t = n.deltaX,
y = n.deltaY,
n = n.lineLength,
h = q % 90 ? Math.atan2(t * h / j, y) / m * 180 :
q + 90;
h += 180;
h %= 360;
v = p(w, u, q, v, C);
j = o(w, u, v[0], v[1]);
m = [];
v = p(r, s, q, w, u);
o = o(r, s, v[0], v[1]) / j * 100;
p = [];
for (q = 0; q < l; q++) p.push(k[q].offset ? k[q].offset.pixels(d, n) : q === 0 ? 0 : q === l - 1 ? n : null);
for (q = 1; q < l; q++) {
if (p[q] === null) {
r = p[q - 1];
n = q;
do s = p[++n]; while (s === null);
p[q] = r + (s - r) / (n - q + 1)
}
p[q] = Math.max(p[q], p[q - 1])
}
for (q = 0; q < l; q++) m.push(o + p[q] / j * 100 + "% " + k[q].color.colorValue(d));
i.angle = h;
i.type = "gradient";
i.method = "sigma";
i.color = k[0].color.colorValue(d);
i.color2 = k[l - 1].color.colorValue(d);
i.colors ? i.colors.value =
m.join(",") : i.colors = m.join(",")
},
hideBackground: function() {
var c = this.targetElement.runtimeStyle;
if (!this.isMuseBGPolyfill()) c.backgroundImage = "url(about:blank)";
c.backgroundColor = "transparent"
},
destroy: function() {
b.RendererBase.destroy.call(this);
var c = this.targetElement.runtimeStyle;
if (!this.isMuseBGPolyfill()) c.backgroundImage = "";
c.backgroundColor = ""
},
isMuseBGPolyfill: function() {
return $(this.targetElement.children[0]).hasClass("museBgSizePolyfill")
}
});
b.BorderRenderer = b.RendererBase.newRenderer({
boxZIndex: 4,
boxName: "border",
needsUpdate: function() {
var c = this.styleInfos;
return c.borderInfo.changed() || c.borderRadiusInfo.changed()
},
isActive: function() {
var c = this.styleInfos;
return (c.borderRadiusInfo.isActive() || c.backgroundInfo.isActive()) && !c.borderImageInfo.isActive() && c.borderInfo.isActive()
},
draw: function() {
var c = this.targetElement,
a = this.styleInfos.borderInfo.getProps(),
b = this.boundsInfo.getBounds(),
d = b.w,
b = b.h,
h, j, k, l, m;
if (a) {
this.hideBorder();
a = this.getBorderSegments(2);
l = 0;
for (m = a.length; l < m; l++) k =
a[l], h = this.getShape("borderPiece" + l, k.stroke ? "stroke" : "fill", this.getBox()), h.coordsize = d * 2 + "," + b * 2, h.coordorigin = "1,1", h.path = k.path, j = h.style, j.width = d, j.height = b, h.filled = !!k.fill, h.stroked = !!k.stroke, k.stroke ? (h = h.stroke, h.weight = k.weight + "px", h.color = k.color.colorValue(c), h.dashstyle = k.stroke === "dashed" ? "2 2" : k.stroke === "dotted" ? "1 1" : "solid", h.linestyle = k.stroke === "double" && k.weight > 2 ? "ThinThin" : "Single") : h.fill.color = k.fill.colorValue(c);
for (; this.deleteShape("borderPiece" + l++););
}
},
getBorderSegments: function(c) {
var a =
this.targetElement,
b, d, h, j = this.styleInfos.borderInfo,
k = [],
l, m, n, p, o = Math.round,
q, r, s;
if (j.isActive())
if (b = j.getProps(), j = b.widths, r = b.styles, s = b.colors, b.widthsSame && b.stylesSame && b.colorsSame) s.t.alpha() > 0 && (b = j.t.pixels(a), n = b / 2, k.push({
path: this.getBoxPath({
t: n,
r: n,
b: n,
l: n
}, c),
stroke: r.t,
color: s.t,
weight: b
}));
else {
c = c || 1;
b = this.boundsInfo.getBounds();
d = b.w;
h = b.h;
b = o(j.t.pixels(a));
n = o(j.r.pixels(a));
p = o(j.b.pixels(a));
var a = o(j.l.pixels(a)),
w = {
t: b,
r: n,
b: p,
l: a
},
a = this.styleInfos.borderRadiusInfo;
a.isActive() && (q = this.getRadiiPixels(a.getProps()));
l = Math.floor;
m = Math.ceil;
var u = function(c, a) {
return q ? q[c][a] : 0
},
v = function(a, b, f, g, j, k) {
var n = u("x", a),
o = u("y", a),
q = a.charAt(1) === "r",
a = a.charAt(0) === "b";
return n > 0 && o > 0 ? (k ? "al" : "ae") + (q ? m(d - n) : l(n)) * c + "," + (a ? m(h - o) : l(o)) * c + "," + (l(n) - b) * c + "," + (l(o) - f) * c + "," + g * 65535 + "," + 2949075 * (j ? 1 : -1) : (k ? "m" : "l") + (q ? d - b : b) * c + "," + (a ? h - f : f) * c
},
C = function(a, b, f, g) {
var j = a === "t" ? l(u("x", "tl")) * c + "," + m(b) * c : a === "r" ? m(d - b) * c + "," + l(u("y", "tr")) * c : a === "b" ? m(d - u("x", "br")) *
c + "," + l(h - b) * c : l(b) * c + "," + m(h - u("y", "bl")) * c,
a = a === "t" ? m(d - u("x", "tr")) * c + "," + m(b) * c : a === "r" ? m(d - b) * c + "," + m(h - u("y", "br")) * c : a === "b" ? l(u("x", "bl")) * c + "," + l(h - b) * c : l(b) * c + "," + l(u("y", "tl")) * c;
return f ? (g ? "m" + a : "") + "l" + j : (g ? "m" + j : "") + "l" + a
},
a = function(c, a, b, d, f, g) {
var i = c === "l" || c === "r",
h = w[c],
j, n;
h > 0 && r[c] !== "none" && s[c].alpha() > 0 && (j = w[i ? c : a], a = w[i ? a : c], n = w[i ? c : b], b = w[i ? b : c], r[c] === "dashed" || r[c] === "dotted" ? (k.push({
path: v(d, j, a, g + 45, 0, 1) + v(d, 0, 0, g, 1, 0),
fill: s[c]
}), k.push({
path: C(c, h / 2, 0, 1),
stroke: r[c],
weight: h,
color: s[c]
}), k.push({
path: v(f, n, b, g, 0, 1) + v(f, 0, 0, g - 45, 1, 0),
fill: s[c]
})) : k.push({
path: v(d, j, a, g + 45, 0, 1) + C(c, h, 0, 0) + v(f, n, b, g, 0, 0) + (r[c] === "double" && h > 2 ? v(f, n - l(n / 3), b - l(b / 3), g - 45, 1, 0) + C(c, m(h / 3 * 2), 1, 0) + v(d, j - l(j / 3), a - l(a / 3), g, 1, 0) + "x " + v(d, l(j / 3), l(a / 3), g + 45, 0, 1) + C(c, l(h / 3), 1, 0) + v(f, l(n / 3), l(b / 3), g, 0, 0) : "") + v(f, 0, 0, g - 45, 1, 0) + C(c, 0, 1, 0) + v(d, 0, 0, g, 1, 0),
fill: s[c]
}))
};
a("t", "l", "r", "tl", "tr", 90);
a("r", "t", "b", "tr", "br", 0);
a("b", "r", "l", "br", "bl", -90);
a("l", "b", "t", "bl", "tl", -180)
}
return k
},
destroy: function() {
if (this.finalized ||
!this.styleInfos.borderImageInfo.isActive()) this.targetElement.runtimeStyle.borderColor = "";
b.RendererBase.destroy.call(this)
}
});
b.BorderImageRenderer = b.RendererBase.newRenderer({
boxZIndex: 5,
pieceNames: ["t", "tr", "r", "br", "b", "bl", "l", "tl", "c"],
needsUpdate: function() {
return this.styleInfos.borderImageInfo.changed()
},
isActive: function() {
return this.styleInfos.borderImageInfo.isActive()
},
draw: function() {
this.getBox();
var c = this.styleInfos.borderImageInfo.getProps(),
a = this.styleInfos.borderInfo.getProps(),
d = this.boundsInfo.getBounds(),
i = this.targetElement,
h = this.pieces;
b.Util.withImageSize(c.src, function(j) {
function k(c, a, b, d, f) {
var c = h[c].style,
g = Math.max;
c.width = g(a, 0);
c.height = g(b, 0);
c.left = d;
c.top = f
}
function l(c, a, b) {
for (var d = 0, f = c.length; d < f; d++) h[c[d]].imagedata[a] = b
}
var m = d.w,
n = d.h,
p = b.getLength("0"),
o = c.widths || (a ? a.widths : {
t: p,
r: p,
b: p,
l: p
}),
p = o.t.pixels(i),
q = o.r.pixels(i),
r = o.b.pixels(i),
o = o.l.pixels(i),
s = c.slice,
w = s.t.pixels(i),
u = s.r.pixels(i),
v = s.b.pixels(i),
s = s.l.pixels(i);
k("tl", o, p,
0, 0);
k("t", m - o - q, p, o, 0);
k("tr", q, p, m - q, 0);
k("r", q, n - p - r, m - q, p);
k("br", q, r, m - q, n - r);
k("b", m - o - q, r, o, n - r);
k("bl", o, r, 0, n - r);
k("l", o, n - p - r, 0, p);
k("c", m - o - q, n - p - r, o, p);
l(["tl", "t", "tr"], "cropBottom", (j.h - w) / j.h);
l(["tl", "l", "bl"], "cropRight", (j.w - s) / j.w);
l(["bl", "b", "br"], "cropTop", (j.h - v) / j.h);
l(["tr", "r", "br"], "cropLeft", (j.w - u) / j.w);
l(["l", "r", "c"], "cropTop", w / j.h);
l(["l", "r", "c"], "cropBottom", v / j.h);
l(["t", "b", "c"], "cropLeft", s / j.w);
l(["t", "b", "c"], "cropRight", u / j.w);
h.c.style.display = c.fill ? "" : "none"
},
this)
},
getBox: function() {
var c = this.parent.getLayer(this.boxZIndex),
d, g, i, h = this.pieceNames,
j = h.length;
if (!c) {
c = a.createElement("border-image");
d = c.style;
d.position = "absolute";
this.pieces = {};
for (i = 0; i < j; i++) g = this.pieces[h[i]] = b.Util.createVmlElement("rect"), g.appendChild(b.Util.createVmlElement("imagedata")), d = g.style, d.behavior = "url(#default#VML)", d.position = "absolute", d.top = d.left = 0, g.imagedata.src = this.styleInfos.borderImageInfo.getProps().src, g.stroked = !1, g.filled = !1, c.appendChild(g);
this.parent.addLayer(this.boxZIndex,
c)
}
return c
},
prepareUpdate: function() {
if (this.isActive()) {
var c = this.targetElement,
a = c.runtimeStyle,
b = this.styleInfos.borderImageInfo.getProps().widths;
a.borderStyle = "solid";
if (b) a.borderTopWidth = b.t.pixels(c) + "px", a.borderRightWidth = b.r.pixels(c) + "px", a.borderBottomWidth = b.b.pixels(c) + "px", a.borderLeftWidth = b.l.pixels(c) + "px";
this.hideBorder()
}
},
destroy: function() {
var c = this.targetElement.runtimeStyle;
c.borderStyle = "";
if (this.finalized || !this.styleInfos.borderInfo.isActive()) c.borderColor = c.borderWidth =
"";
b.RendererBase.destroy.call(this)
}
});
b.BoxShadowOutsetRenderer = b.RendererBase.newRenderer({
boxZIndex: 1,
boxName: "outset-box-shadow",
needsUpdate: function() {
var c = this.styleInfos;
return c.boxShadowInfo.changed() || c.borderRadiusInfo.changed()
},
isActive: function() {
var c = this.styleInfos.boxShadowInfo;
return c.isActive() && c.getProps().outset[0]
},
draw: function() {
function c(c, b, h, j, l, m, n) {
c = a.getShape("shadow" + c + b, "fill", i, k - c);
b = c.fill;
c.coordsize = p * 2 + "," + o * 2;
c.coordorigin = "1,1";
c.stroked = !1;
c.filled = !0;
b.color = l.colorValue(d);
if (m) b.type = "gradienttitle", b.color2 = b.color, b.opacity = 0;
c.path = n;
u = c.style;
u.left = h;
u.top = j;
u.width = p;
u.height = o;
return c
}
for (var a = this, d = this.targetElement, i = this.getBox(), h = this.styleInfos, j = h.boxShadowInfo.getProps().outset, h = h.borderRadiusInfo.getProps(), k = j.length, l = k, m, n = this.boundsInfo.getBounds(), p = n.w, o = n.h, n = b.ieVersion === 8 ? 1 : 0, q = ["tl", "tr", "br", "bl"], r, s, w, u, v, C, t, y, H, I, F, E, J, K; l--;) {
s = j[l];
v = s.xOffset.pixels(d);
C = s.yOffset.pixels(d);
m = s.spread.pixels(d);
t =
s.blur.pixels(d);
s = s.color;
y = -m - t;
if (!h && t) h = b.BorderRadiusStyleInfo.ALL_ZERO;
y = this.getBoxPath({
t: y,
r: y,
b: y,
l: y
}, 2, h);
if (t)
if (H = (m + t) * 2 + p, I = (m + t) * 2 + o, F = t * 2 / H, E = t * 2 / I, t - m > p / 2 || t - m > o / 2)
for (m = 4; m--;) r = q[m], J = r.charAt(0) === "b", K = r.charAt(1) === "r", r = c(l, r, v, C, s, t, y), w = r.fill, w.focusposition = (K ? 1 - F : F) + "," + (J ? 1 - E : E), w.focussize = "0,0", r.style.clip = "rect(" + ((J ? I / 2 : 0) + n) + "px," + (K ? H : H / 2) + "px," + (J ? I : I / 2) + "px," + ((K ? H / 2 : 0) + n) + "px)";
else r = c(l, "", v, C, s, t, y), w = r.fill, w.focusposition = F + "," + E, w.focussize = 1 - F * 2 + "," +
(1 - E * 2);
else if (r = c(l, "", v, C, s, t, y), v = s.alpha(), v < 1) r.fill.opacity = v
}
}
});
b.ImgRenderer = b.RendererBase.newRenderer({
boxZIndex: 6,
boxName: "imgEl",
needsUpdate: function() {
var c = this.styleInfos;
return this.targetElement.src !== this._lastSrc || c.borderRadiusInfo.changed()
},
isActive: function() {
var c = this.styleInfos;
return c.borderRadiusInfo.isActive() || c.backgroundInfo.isPngFix()
},
draw: function() {
this._lastSrc = k;
this.hideActualImg();
var c = this.getShape("img", "fill", this.getBox()),
a = c.fill,
d = this.boundsInfo.getBounds(),
i = d.w,
d = d.h,
h = this.styleInfos.borderInfo.getProps(),
j = h && h.widths,
h = this.targetElement,
k = h.src,
l = Math.round,
m = h.currentStyle,
n = b.getLength;
if (!j || b.ieVersion < 7) j = b.getLength("0"), j = {
t: j,
r: j,
b: j,
l: j
};
c.stroked = !1;
a.type = "frame";
a.src = k;
a.position = (i ? 0.5 / i : 0) + "," + (d ? 0.5 / d : 0);
c.coordsize = i * 2 + "," + d * 2;
c.coordorigin = "1,1";
c.path = this.getBoxPath({
t: l(j.t.pixels(h) + n(m.paddingTop).pixels(h)),
r: l(j.r.pixels(h) + n(m.paddingRight).pixels(h)),
b: l(j.b.pixels(h) + n(m.paddingBottom).pixels(h)),
l: l(j.l.pixels(h) + n(m.paddingLeft).pixels(h))
},
2);
c = c.style;
c.width = i;
c.height = d
},
hideActualImg: function() {
this.targetElement.runtimeStyle.filter = "alpha(opacity=0)"
},
destroy: function() {
b.RendererBase.destroy.call(this);
this.targetElement.runtimeStyle.filter = ""
}
});
b.IE9RootRenderer = b.RendererBase.newRenderer({
updatePos: b.emptyFn,
updateSize: b.emptyFn,
updateVisibility: b.emptyFn,
updateProps: b.emptyFn,
outerCommasRE: /^,+|,+$/g,
innerCommasRE: /,+/g,
setBackgroundLayer: function(c, a) {
(this._bgLayers || (this._bgLayers = []))[c] = a || void 0
},
finishUpdate: function() {
var c =
this._bgLayers,
a;
if (c && (a = c.join(",").replace(this.outerCommasRE, "").replace(this.innerCommasRE, ",")) !== this._lastBg) this._lastBg = this.targetElement.runtimeStyle.background = a
},
destroy: function() {
this.targetElement.runtimeStyle.background = "";
delete this._bgLayers
}
});
b.IE9BackgroundRenderer = b.RendererBase.newRenderer({
bgLayerZIndex: 1,
needsUpdate: function() {
return this.styleInfos.backgroundInfo.changed()
},
isActive: function() {
var c = this.styleInfos;
return c.backgroundInfo.isActive() || c.borderImageInfo.isActive()
},
draw: function() {
var c = this.styleInfos.backgroundInfo.getProps(),
a, d, i = 0,
h, j;
if (c) {
a = [];
if (d = c.bgImages)
for (; h = d[i++];) h.imgType === "linear-gradient" ? (j = this.getBgAreaSize(h.bgOrigin), j = (h.bgSize || b.BgSize.DEFAULT).pixels(this.targetElement, j.w, j.h, j.w, j.h), a.push("url(data:image/svg+xml," + escape(this.getGradientSvg(h, j.w, j.h)) + ") " + this.bgPositionToString(h.bgPosition) + " / " + j.w + "px " + j.h + "px " + (h.bgAttachment || "") + " " + (h.bgOrigin || "") + " " + (h.bgClip || ""))) : a.push(h.origString);
c.color && a.push(c.color.val);
this.parent.setBackgroundLayer(this.bgLayerZIndex, a.join(","))
}
},
bgPositionToString: function(c) {
return c ? c.tokens.map(function(c) {
return c.tokenValue
}).join(" ") : "0 0"
},
getBgAreaSize: function(c) {
var a = this.targetElement,
d = this.boundsInfo.getBounds(),
i = d.w,
d = d.h,
h;
if (c !== "border-box" && (h = this.styleInfos.borderInfo.getProps()) && (h = h.widths)) i -= h.l.pixels(a) + h.l.pixels(a), d -= h.t.pixels(a) + h.b.pixels(a);
if (c === "content-box") c = b.getLength, h = a.currentStyle, i -= c(h.paddingLeft).pixels(a) + c(h.paddingRight).pixels(a),
d -= c(h.paddingTop).pixels(a) + c(h.paddingBottom).pixels(a);
return {
w: i,
h: d
}
},
getGradientSvg: function(c, a, d) {
var i = this.targetElement,
h = c.stops,
j = h.length,
k = b.GradientUtil.getGradientMetrics(i, a, d, c),
c = k.startX,
l = k.startY,
m = k.endX,
n = k.endY,
k = k.lineLength,
p, o, q, r, s;
p = [];
for (o = 0; o < j; o++) p.push(h[o].offset ? h[o].offset.pixels(i, k) : o === 0 ? 0 : o === j - 1 ? k : null);
for (o = 1; o < j; o++)
if (p[o] === null) {
r = p[o - 1];
q = o;
do s = p[++q]; while (s === null);
p[o] = r + (s - r) / (q - o + 1)
}
a = ['<svg width="' + a + '" height="' + d + '" xmlns="http://www.w3.org/2000/svg"><defs><linearGradient id="g" gradientUnits="userSpaceOnUse" x1="' +
c / a * 100 + '%" y1="' + l / d * 100 + '%" x2="' + m / a * 100 + '%" y2="' + n / d * 100 + '%">'
];
for (o = 0; o < j; o++) a.push('<stop offset="' + p[o] / k + '" stop-color="' + h[o].color.colorValue(i) + '" stop-opacity="' + h[o].color.alpha() + '"/>');
a.push('</linearGradient></defs><rect width="100%" height="100%" fill="url(#g)"/></svg>');
return a.join("")
},
destroy: function() {
this.parent.setBackgroundLayer(this.bgLayerZIndex)
}
});
b.IE9BorderImageRenderer = b.RendererBase.newRenderer({
REPEAT: "repeat",
STRETCH: "stretch",
ROUND: "round",
bgLayerZIndex: 0,
needsUpdate: function() {
return this.styleInfos.borderImageInfo.changed()
},
isActive: function() {
return this.styleInfos.borderImageInfo.isActive()
},
draw: function() {
var c = this,
a = c.styleInfos.borderImageInfo.getProps(),
d = c.styleInfos.borderInfo.getProps(),
i = c.boundsInfo.getBounds(),
h = a.repeat,
j = h.h,
k = h.v,
l = c.targetElement,
m = 0;
b.Util.withImageSize(a.src, function(h) {
function p(c, a, b, d, f, g, i, h, l, m) {
N.push('<pattern patternUnits="userSpaceOnUse" id="pattern' + L + '" x="' + (j === u ? c + b / 2 - l / 2 : c) + '" y="' + (k === u ? a + d /
2 - m / 2 : a) + '" width="' + l + '" height="' + m + '"><svg width="' + l + '" height="' + m + '" viewBox="' + f + " " + g + " " + i + " " + h + '" preserveAspectRatio="none"><image xlink:href="' + w + '" x="0" y="0" width="' + r + '" height="' + s + '" /></svg></pattern>');
O.push('<rect x="' + c + '" y="' + a + '" width="' + b + '" height="' + d + '" fill="url(#pattern' + L + ')" />');
L++
}
var o = i.w,
q = i.h,
r = h.w,
s = h.h,
w = c.imageToDataURI(a.src, r, s),
u = c.REPEAT,
v = c.STRETCH,
h = c.ROUND,
C = Math.ceil,
t = b.getLength("0"),
y = a.widths || (d ? d.widths : {
t: t,
r: t,
b: t,
l: t
}),
t = y.t.pixels(l),
H = y.r.pixels(l),
I = y.b.pixels(l),
y = y.l.pixels(l),
F = a.slice,
E = F.t.pixels(l),
J = F.r.pixels(l),
K = F.b.pixels(l),
F = F.l.pixels(l),
G = o - y - H,
M = q - t - I,
B = r - F - J,
x = s - E - K,
A = j === v ? G : B * t / E,
z = k === v ? M : x * H / J,
D = j === v ? G : B * I / K,
v = k === v ? M : x * y / F,
N = [],
O = [],
L = 0;
j === h && (A -= (A - (G % A || A)) / C(G / A), D -= (D - (G % D || D)) / C(G / D));
k === h && (z -= (z - (M % z || z)) / C(M / z), v -= (v - (M % v || v)) / C(M / v));
h = ['<svg width="' + o + '" height="' + q + '" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">'];
p(0, 0, y, t, 0, 0, F, E, y, t);
p(y, 0, G, t, F, 0, B, E,
A, t);
p(o - H, 0, H, t, r - J, 0, J, E, H, t);
p(0, t, y, M, 0, E, F, x, y, v);
a.fill && p(y, t, G, M, F, E, B, x, A || D || B, v || z || x);
p(o - H, t, H, M, r - J, E, J, x, H, z);
p(0, q - I, y, I, 0, s - K, F, K, y, I);
p(y, q - I, G, I, F, s - K, B, K, D, I);
p(o - H, q - I, H, I, r - J, s - K, J, K, H, I);
h.push("<defs>" + N.join("\n") + "</defs>" + O.join("\n") + "</svg>");
c.parent.setBackgroundLayer(c.bgLayerZIndex, "url(data:image/svg+xml," + escape(h.join("")) + ") no-repeat border-box border-box");
m && c.parent.finishUpdate()
}, c);
m = 1
},
imageToDataURI: function() {
var c = {};
return function(b, d, i) {
var h = c[b],
j;
if (!h) h = new Image, j = a.createElement("canvas"), h.src = b, j.width = d, j.height = i, j.getContext("2d").drawImage(h, 0, 0), h = c[b] = j.toDataURL();
return h
}
}(),
prepareUpdate: b.BorderImageRenderer.prototype.prepareUpdate,
destroy: function() {
var c = this.targetElement.runtimeStyle;
this.parent.setBackgroundLayer(this.bgLayerZIndex);
c.borderColor = c.borderStyle = c.borderWidth = ""
}
});
b.Element = function() {
function c(c) {
var a = q.slice.call(arguments, 1),
b = a.length;
setTimeout(function() {
for (; b--;) c.className += " " + a[b]
}, 0)
}
function d(c) {
var a =
q.slice.call(arguments, 1),
b = a.length;
setTimeout(function() {
for (; b--;) {
var d = c,
f = a[b],
f = o[f] || (o[f] = RegExp("\\b" + f + "\\b", "g"));
d.className = d.className.replace(f, "")
}
}, 0)
}
function g(g) {
function i() {
if (!O) {
var c, d, f = b.ieDocMode,
k = g.currentStyle,
l = k.getAttribute(h) === "true";
S = k.getAttribute(j);
S = f > 7 ? S !== "false" : S === "true";
if (!N) {
N = 1;
g.runtimeStyle.zoom = 1;
for (var k = g, m = 1; k = k.previousSibling;)
if (k.nodeType === 1) {
m = 0;
break
}
m && (g.className += " " + n)
}
A.lock();
if (l && (d = A.getBounds()) && (c = a.documentElement || a.body) &&
(d.y > c.clientHeight || d.x > c.clientWidth || d.y + d.h < 0 || d.x + d.w < 0)) R || (R = 1, b.OnScroll.observe(i));
else {
O = 1;
R = N = 0;
b.OnScroll.unobserve(i);
f === 9 ? (z = {
backgroundInfo: new b.BackgroundStyleInfo(g),
borderImageInfo: new b.BorderImageStyleInfo(g),
borderInfo: new b.BorderStyleInfo(g)
}, D = [z.backgroundInfo, z.borderImageInfo], x = new b.IE9RootRenderer(g, A, z), c = [new b.IE9BackgroundRenderer(g, A, z, x), new b.IE9BorderImageRenderer(g, A, z, x)]) : (z = {
backgroundInfo: new b.BackgroundStyleInfo(g),
borderInfo: new b.BorderStyleInfo(g),
borderImageInfo: new b.BorderImageStyleInfo(g),
borderRadiusInfo: new b.BorderRadiusStyleInfo(g),
boxShadowInfo: new b.BoxShadowStyleInfo(g),
visibilityInfo: new b.VisibilityStyleInfo(g)
}, D = [z.backgroundInfo, z.borderInfo, z.borderImageInfo, z.borderRadiusInfo, z.boxShadowInfo, z.visibilityInfo], x = new b.RootRenderer(g, A, z), c = [new b.BoxShadowOutsetRenderer(g, A, z, x), new b.BackgroundRenderer(g, A, z, x), new b.BorderRenderer(g, A, z, x), new b.BorderImageRenderer(g, A, z, x)], g.tagName === "IMG" && c.push(new b.ImgRenderer(g,
A, z, x)), x.childRenderers = c);
B = [x].concat(c);
if (c = g.currentStyle.getAttribute(b.CSS_PREFIX + "watch-ancestors")) {
c = parseInt(c, 10);
d = 0;
for (l = g.parentNode; l && (c === "NaN" || d++ < c);) G(l, "onpropertychange", E), G(l, "onmouseenter", C), G(l, "onmouseleave", t), G(l, "onmousedown", y), l.tagName in b.focusableElements && (G(l, "onfocus", I), G(l, "onblur", F)), l = l.parentNode
}
S && (b.Heartbeat.observe(q), b.Heartbeat.run());
q(1)
}
L || (L = 1, f < 9 && G(g, "onmove", o), G(g, "onresize", o), G(g, "onpropertychange", v), G(g, "onmouseenter", C), G(g, "onmouseleave",
t), G(g, "onmousedown", y), g.tagName in b.focusableElements && (G(g, "onfocus", I), G(g, "onblur", F)), b.OnResize.observe(o), b.OnUnload.observe(M));
A.unlock()
}
}
function o() {
A && A.hasBeenQueried() && q()
}
function q(c) {
if (!Q)
if (O) {
var a, b = B.length;
J();
for (a = 0; a < b; a++) B[a].prepareUpdate();
if (c || A.positionChanged())
for (a = 0; a < b; a++) B[a].updatePos();
if (c || A.sizeChanged())
for (a = 0; a < b; a++) B[a].updateSize();
x.finishUpdate();
K()
} else N || i()
}
function v() {
var c, a = B.length,
b;
c = event;
if (!Q && !(c && c.propertyName in p))
if (O) {
J();
for (c = 0; c < a; c++) B[c].prepareUpdate();
for (c = 0; c < a; c++) b = B[c], b.isPositioned || b.updatePos(), b.needsUpdate() && b.updateProps();
x.finishUpdate();
K()
} else N || i()
}
function C() {
c(g, k)
}
function t() {
d(g, k, l)
}
function y() {
c(g, l);
b.OnMouseup.observe(H)
}
function H() {
d(g, l);
b.OnMouseup.unobserve(H)
}
function I() {
c(g, m)
}
function F() {
d(g, m)
}
function E() {
var c = event.propertyName;
(c === "className" || c === "id") && v()
}
function J() {
A.lock();
for (var c = D.length; c--;) D[c].lock()
}
function K() {
for (var c = D.length; c--;) D[c].unlock();
A.unlock()
}
function G(c, a, b) {
c.attachEvent(a, b);
P.push([c, a, b])
}
function M() {
if (L) {
for (var c = P.length, a; c--;) a = P[c], a[0].detachEvent(a[1], a[2]);
b.OnUnload.unobserve(M);
L = 0;
P = []
}
}
var B, x, A = new b.BoundsInfo(g),
z, D, N, O, L, P = [],
R, Q, S;
this.init = i;
this.update = q;
this.destroy = function() {
if (!Q) {
var c, a;
M();
Q = 1;
if (B) {
c = 0;
for (a = B.length; c < a; c++) B[c].finalized = 1, B[c].destroy()
}
S && b.Heartbeat.unobserve(q);
b.OnResize.unobserve(q);
B = A = z = D = g = null
}
};
this.el = g
}
var i = {},
h = b.CSS_PREFIX + "lazy-init",
j = b.CSS_PREFIX + "poll",
k = b.CLASS_PREFIX + "hover",
l = b.CLASS_PREFIX + "active",
m = b.CLASS_PREFIX + "focus",
n = b.CLASS_PREFIX + "first-child",
p = {
background: 1,
bgColor: 1,
display: 1
},
o = {},
q = [];
g.getInstance = function(c) {
var a = b.Util.getUID(c);
return i[a] || (i[a] = new g(c))
};
g.destroy = function(c) {
var c = b.Util.getUID(c),
a = i[c];
a && (a.destroy(), delete i[c])
};
g.destroyAll = function() {
var c = [],
a;
if (i) {
for (var b in i) i.hasOwnProperty(b) && (a = i[b], c.push(a.el), a.destroy());
i = {}
}
return c
};
return g
}();
b.supportsVML = b.supportsVML;
b.attach = function(c) {
b.ieDocMode <
10 && b.supportsVML && b.Element.getInstance(c).init()
};
b.detach = function(c) {
b.Element.destroy(c)
}
}
})();