2015-03-30 11:56:28 +00:00
/ *
PIE : CSS3 rendering for IE
Version 1.0 beta5
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 )
}
}
} ) ( ) ;