2008-09-27 19:55:56 +00:00
if ( ! window . CanvasRenderingContext2D ) { ( function ( ) { var I = Math , i = I . round , L = I . sin , M = I . cos , m = 10 , A = m / 2 , Q = { init : function ( a ) { var b = a || document ; if ( /MSIE/ . test ( navigator . userAgent ) && ! window . opera ) { var c = this ; b . attachEvent ( "onreadystatechange" , function ( ) { c . r ( b ) } ) } } , r : function ( a ) { if ( a . readyState == "complete" ) { if ( ! a . namespaces [ "s" ] ) { a . namespaces . add ( "g_vml_" , "urn:schemas-microsoft-com:vml" ) } var b = a . createStyleSheet ( ) ; b . cssText = "canvas{display:inline-block;overflow:hidden;text-align:left;width:300px;height:150px}g_vml_\\:*{behavior:url(#default#VML)}" ;
var c = a . getElementsByTagName ( "canvas" ) ; for ( var d = 0 ; d < c . length ; d ++ ) { if ( ! c [ d ] . getContext ) { this . initElement ( c [ d ] ) } } } } , q : function ( a ) { var b = a . outerHTML , c = a . ownerDocument . createElement ( b ) ; if ( b . slice ( - 2 ) != "/>" ) { var d = "/" + a . tagName , e ; while ( ( e = a . nextSibling ) && e . tagName != d ) { e . removeNode ( ) } if ( e ) { e . removeNode ( ) } } a . parentNode . replaceChild ( c , a ) ; return c } , initElement : function ( a ) { a = this . q ( a ) ; a . getContext = function ( ) { if ( this . l ) { return this . l } return this . l = new K ( this ) } ; a . attachEvent ( "onpropertychange" , V ) ; a . attachEvent ( "onresize" ,
W ) ; var b = a . attributes ; if ( b . width && b . width . specified ) { a . style . width = b . width . nodeValue + "px" } else { a . width = a . clientWidth } if ( b . height && b . height . specified ) { a . style . height = b . height . nodeValue + "px" } else { a . height = a . clientHeight } return a } } ; function V ( a ) { var b = a . srcElement ; switch ( a . propertyName ) { case "width" : b . style . width = b . attributes . width . nodeValue + "px" ; b . getContext ( ) . clearRect ( ) ; break ; case "height" : b . style . height = b . attributes . height . nodeValue + "px" ; b . getContext ( ) . clearRect ( ) ; break } } function W ( a ) { var b = a . srcElement ;
if ( b . firstChild ) { b . firstChild . style . width = b . clientWidth + "px" ; b . firstChild . style . height = b . clientHeight + "px" } } Q . init ( ) ; var R = [ ] ; for ( var E = 0 ; E < 16 ; E ++ ) { for ( var F = 0 ; F < 16 ; F ++ ) { R [ E * 16 + F ] = E . toString ( 16 ) + F . toString ( 16 ) } } function J ( ) { return [ [ 1 , 0 , 0 ] , [ 0 , 1 , 0 ] , [ 0 , 0 , 1 ] ] } function G ( a , b ) { var c = J ( ) ; for ( var d = 0 ; d < 3 ; d ++ ) { for ( var e = 0 ; e < 3 ; e ++ ) { var g = 0 ; for ( var h = 0 ; h < 3 ; h ++ ) { g += a [ d ] [ h ] * b [ h ] [ e ] } c [ d ] [ e ] = g } } return c } function N ( a , b ) { b . fillStyle = a . fillStyle ; b . lineCap = a . lineCap ; b . lineJoin = a . lineJoin ; b . lineWidth = a . lineWidth ; b . miterLimit =
a . miterLimit ; b . shadowBlur = a . shadowBlur ; b . shadowColor = a . shadowColor ; b . shadowOffsetX = a . shadowOffsetX ; b . shadowOffsetY = a . shadowOffsetY ; b . strokeStyle = a . strokeStyle ; b . d = a . d ; b . e = a . e } function O ( a ) { var b , c = 1 ; a = String ( a ) ; if ( a . substring ( 0 , 3 ) == "rgb" ) { var d = a . indexOf ( "(" , 3 ) , e = a . indexOf ( ")" , d + 1 ) , g = a . substring ( d + 1 , e ) . split ( "," ) ; b = "#" ; for ( var h = 0 ; h < 3 ; h ++ ) { b += R [ Number ( g [ h ] ) ] } if ( g . length == 4 && a . substr ( 3 , 1 ) == "a" ) { c = g [ 3 ] } } else { b = a } return [ b , c ] } function S ( a ) { switch ( a ) { case "butt" : return "flat" ; case "round" : return "round" ;
case "square" : default : return "square" } } function K ( a ) { this . a = J ( ) ; this . m = [ ] ; this . k = [ ] ; this . c = [ ] ; this . strokeStyle = "#000" ; this . fillStyle = "#000" ; this . lineWidth = 1 ; this . lineJoin = "miter" ; this . lineCap = "butt" ; this . miterLimit = m * 1 ; this . globalAlpha = 1 ; this . canvas = a ; var b = a . ownerDocument . createElement ( "div" ) ; b . style . width = a . clientWidth + "px" ; b . style . height = a . clientHeight + "px" ; b . style . overflow = "hidden" ; b . style . position = "absolute" ; a . appendChild ( b ) ; this . j = b ; this . d = 1 ; this . e = 1 } var j = K . prototype ; j . clearRect = function ( ) { this . j . innerHTML =
"" ; this . c = [ ] } ; j . beginPath = function ( ) { this . c = [ ] } ; j . moveTo = function ( a , b ) { this . c . push ( { type : "moveTo" , x : a , y : b } ) ; this . f = a ; this . g = b } ; j . lineTo = function ( a , b ) { this . c . push ( { type : "lineTo" , x : a , y : b } ) ; this . f = a ; this . g = b } ; j . bezierCurveTo = function ( a , b , c , d , e , g ) { this . c . push ( { type : "bezierCurveTo" , cp1x : a , cp1y : b , cp2x : c , cp2y : d , x : e , y : g } ) ; this . f = e ; this . g = g } ; j . quadraticCurveTo = function ( a , b , c , d ) { var e = this . f + 0.6666666666666666 * ( a - this . f ) , g = this . g + 0.6666666666666666 * ( b - this . g ) , h = e + ( c - this . f ) / 3 , l = g + ( d - this . g ) / 3 ; this . bezierCurveTo ( e ,
g , h , l , c , d ) } ; j . arc = function ( a , b , c , d , e , g ) { c *= m ; var h = g ? "at" : "wa" , l = a + M ( d ) * c - A , n = b + L ( d ) * c - A , o = a + M ( e ) * c - A , f = b + L ( e ) * c - A ; if ( l == o && ! g ) { l += 0.125 } this . c . push ( { type : h , x : a , y : b , radius : c , xStart : l , yStart : n , xEnd : o , yEnd : f } ) } ; j . rect = function ( a , b , c , d ) { this . moveTo ( a , b ) ; this . lineTo ( a + c , b ) ; this . lineTo ( a + c , b + d ) ; this . lineTo ( a , b + d ) ; this . closePath ( ) } ; j . strokeRect = function ( a , b , c , d ) { this . beginPath ( ) ; this . moveTo ( a , b ) ; this . lineTo ( a + c , b ) ; this . lineTo ( a + c , b + d ) ; this . lineTo ( a , b + d ) ; this . closePath ( ) ; this . stroke ( ) } ; j . fillRect = function ( a ,
b , c , d ) { this . beginPath ( ) ; this . moveTo ( a , b ) ; this . lineTo ( a + c , b ) ; this . lineTo ( a + c , b + d ) ; this . lineTo ( a , b + d ) ; this . closePath ( ) ; this . fill ( ) } ; j . createLinearGradient = function ( a , b , c , d ) { var e = new H ( "gradient" ) ; return e } ; j . createRadialGradient = function ( a , b , c , d , e , g ) { var h = new H ( "gradientradial" ) ; h . n = c ; h . o = g ; h . i . x = a ; h . i . y = b ; return h } ; j . drawImage = function ( a , b ) { var c , d , e , g , h , l , n , o , f = a . runtimeStyle . width , k = a . runtimeStyle . height ; a . runtimeStyle . width = "auto" ; a . runtimeStyle . height = "auto" ; var q = a . width , r = a . height ; a . runtimeStyle . width =
f ; a . runtimeStyle . height = k ; if ( arguments . length == 3 ) { c = arguments [ 1 ] ; d = arguments [ 2 ] ; h = ( l = 0 ) ; n = ( e = q ) ; o = ( g = r ) } else if ( arguments . length == 5 ) { c = arguments [ 1 ] ; d = arguments [ 2 ] ; e = arguments [ 3 ] ; g = arguments [ 4 ] ; h = ( l = 0 ) ; n = q ; o = r } else if ( arguments . length == 9 ) { h = arguments [ 1 ] ; l = arguments [ 2 ] ; n = arguments [ 3 ] ; o = arguments [ 4 ] ; c = arguments [ 5 ] ; d = arguments [ 6 ] ; e = arguments [ 7 ] ; g = arguments [ 8 ] } else { throw "Invalid number of arguments" ; } var s = this . b ( c , d ) , t = [ ] , v = 10 , w = 10 ; t . push ( " <g_vml_:group" , ' coordsize="' , m * v , "," , m * w , '"' , ' coordorigin="0,0"' ,
' style="width:' , v , ";height:" , w , ";position:absolute;" ) ; if ( this . a [ 0 ] [ 0 ] != 1 || this . a [ 0 ] [ 1 ] ) { var x = [ ] ; x . push ( "M11='" , this . a [ 0 ] [ 0 ] , "'," , "M12='" , this . a [ 1 ] [ 0 ] , "'," , "M21='" , this . a [ 0 ] [ 1 ] , "'," , "M22='" , this . a [ 1 ] [ 1 ] , "'," , "Dx='" , i ( s . x / m ) , "'," , "Dy='" , i ( s . y / m ) , "'" ) ; var p = s , y = this . b ( c + e , d ) , z = this . b ( c , d + g ) , B = this . b ( c + e , d + g ) ; p . x = Math . max ( p . x , y . x , z . x , B . x ) ; p . y = Math . max ( p . y , y . y , z . y , B . y ) ; t . push ( "padding:0 " , i ( p . x / m ) , "px " , i ( p . y / m ) , "px 0;filter:progid:DXImageTransform.Microsoft.Matrix(" , x . join ( "" ) , ", sizingmethod='clip');" ) } else { t . push ( "top:" ,
i ( s . y / m ) , "px;left:" , i ( s . x / m ) , "px;" ) } t . push ( ' ">' , '<g_vml_:image src="' , a . src , '"' , ' style="width:' , m * e , ";" , " height:" , m * g , ';"' , ' cropleft="' , h / q , '"' , ' croptop="' , l / r , '"' , ' cropright="' , ( q - h - n ) / q , '"' , ' cropbottom="' , ( r - l - o ) / r , '"' , " />" , "</g_vml_:group>" ) ; this . j . insertAdjacentHTML ( "BeforeEnd" , t . join ( "" ) ) } ; j . stroke = function ( a ) { var b = [ ] , c = O ( a ? this . fillStyle : this . strokeStyle ) , d = c [ 0 ] , e = c [ 1 ] * this . globalAlpha , g = 10 , h = 10 ; b . push ( "<g_vml_:shape" , ' fillcolor="' , d , '"' , ' filled="' , Boolean ( a ) , '"' , ' style="position:absolute;width:' ,
g , ";height:" , h , ';"' , ' coordorigin="0 0" coordsize="' , m * g , " " , m * h , '"' , ' stroked="' , ! a , '"' , ' strokeweight="' , this . lineWidth , '"' , ' strokecolor="' , d , '"' , ' path="' ) ; var l = { x : null , y : null } , n = { x : null , y : null } ; for ( var o = 0 ; o < this . c . length ; o ++ ) { var f = this . c [ o ] ; if ( f . type == "moveTo" ) { b . push ( " m " ) ; var k = this . b ( f . x , f . y ) ; b . push ( i ( k . x ) , "," , i ( k . y ) ) } else if ( f . type == "lineTo" ) { b . push ( " l " ) ; var k = this . b ( f . x , f . y ) ; b . push ( i ( k . x ) , "," , i ( k . y ) ) } else if ( f . type == "close" ) { b . push ( " x " ) } else if ( f . type == "bezierCurveTo" ) { b . push ( " c " ) ;
var k = this . b ( f . x , f . y ) , q = this . b ( f . cp1x , f . cp1y ) , r = this . b ( f . cp2x , f . cp2y ) ; b . push ( i ( q . x ) , "," , i ( q . y ) , "," , i ( r . x ) , "," , i ( r . y ) , "," , i ( k . x ) , "," , i ( k . y ) ) } else if ( f . type == "at" || f . type == "wa" ) { b . push ( " " , f . type , " " ) ; var k = this . b ( f . x , f . y ) , s = this . b ( f . xStart , f . yStart ) , t = this . b ( f . xEnd , f . yEnd ) ; b . push ( i ( k . x - this . d * f . radius ) , "," , i ( k . y - this . e * f . radius ) , " " , i ( k . x + this . d * f . radius ) , "," , i ( k . y + this . e * f . radius ) , " " , i ( s . x ) , "," , i ( s . y ) , " " , i ( t . x ) , "," , i ( t . y ) ) } if ( k ) { if ( l . x == null || k . x < l . x ) { l . x = k . x } if ( n . x == null || k . x > n . x ) { n . x = k . x } if ( l . y ==
null || k . y < l . y ) { l . y = k . y } if ( n . y == null || k . y > n . y ) { n . y = k . y } } } b . push ( ' ">' ) ; if ( typeof this . fillStyle == "object" ) { var v = { x : "50%" , y : "50%" } , w = n . x - l . x , x = n . y - l . y , p = w > x ? w : x ; v . x = i ( this . fillStyle . i . x / w * 100 + 50 ) + "%" ; v . y = i ( this . fillStyle . i . y / x * 100 + 50 ) + "%" ; var y = [ ] ; if ( this . fillStyle . p == "gradientradial" ) { var z = this . fillStyle . n / p * 100 , B = this . fillStyle . o / p * 100 - z } else { var z = 0 , B = 100 } var C = { offset : null , color : null } , D = { offset : null , color : null } ; this . fillStyle . h . sort ( function ( T , U ) { return T . offset - U . offset } ) ; for ( var o = 0 ; o < this . fillStyle . h . length ; o ++ ) { var u =
this . fillStyle . h [ o ] ; y . push ( u . offset * B + z , "% " , u . color , "," ) ; if ( u . offset > C . offset || C . offset == null ) { C . offset = u . offset ; C . color = u . color } if ( u . offset < D . offset || D . offset == null ) { D . offset = u . offset ; D . color = u . color } } y . pop ( ) ; b . push ( "<g_vml_:fill" , ' color="' , D . color , '"' , ' color2="' , C . color , '"' , ' type="' , this . fillStyle . p , '"' , ' focusposition="' , v . x , ", " , v . y , '"' , ' colors="' , y . join ( "" ) , '"' , ' opacity="' , e , '" />' ) } else if ( a ) { b . push ( '<g_vml_:fill color="' , d , '" opacity="' , e , '" />' ) } else { b . push ( "<g_vml_:stroke" , ' opacity="' ,
e , '"' , ' joinstyle="' , this . lineJoin , '"' , ' miterlimit="' , this . miterLimit , '"' , ' endcap="' , S ( this . lineCap ) , '"' , ' weight="' , this . lineWidth , 'px"' , ' color="' , d , '" />' ) } b . push ( "</g_vml_:shape>" ) ; this . j . insertAdjacentHTML ( "beforeEnd" , b . join ( "" ) ) ; this . c = [ ] } ; j . fill = function ( ) { this . stroke ( true ) } ; j . closePath = function ( ) { this . c . push ( { type : "close" } ) } ; j . b = function ( a , b ) { return { x : m * ( a * this . a [ 0 ] [ 0 ] + b * this . a [ 1 ] [ 0 ] + this . a [ 2 ] [ 0 ] ) - A , y : m * ( a * this . a [ 0 ] [ 1 ] + b * this . a [ 1 ] [ 1 ] + this . a [ 2 ] [ 1 ] ) - A } } ; j . save = function ( ) { var a = { } ; N ( this , a ) ;
this . k . push ( a ) ; this . m . push ( this . a ) ; this . a = G ( J ( ) , this . a ) } ; j . restore = function ( ) { N ( this . k . pop ( ) , this ) ; this . a = this . m . pop ( ) } ; j . translate = function ( a , b ) { var c = [ [ 1 , 0 , 0 ] , [ 0 , 1 , 0 ] , [ a , b , 1 ] ] ; this . a = G ( c , this . a ) } ; j . rotate = function ( a ) { var b = M ( a ) , c = L ( a ) , d = [ [ b , c , 0 ] , [ - c , b , 0 ] , [ 0 , 0 , 1 ] ] ; this . a = G ( d , this . a ) } ; j . scale = function ( a , b ) { this . d *= a ; this . e *= b ; var c = [ [ a , 0 , 0 ] , [ 0 , b , 0 ] , [ 0 , 0 , 1 ] ] ; this . a = G ( c , this . a ) } ; j . clip = function ( ) { } ; j . arcTo = function ( ) { } ; j . createPattern = function ( ) { return new P } ; function H ( a ) { this . p = a ; this . n = 0 ; this . o =
0 ; this . h = [ ] ; this . i = { x : 0 , y : 0 } } H . prototype . addColorStop = function ( a , b ) { b = O ( b ) ; this . h . push ( { offset : 1 - a , color : b } ) } ; function P ( ) { } G _vmlCanvasManager = Q ; CanvasRenderingContext2D = K ; CanvasGradient = H ; CanvasPattern = P } ) ( ) } ;