2012-07-04 14:42:50 +00:00
( function ( a ) { function n ( f ) { if ( typeof f . data === "string" ) { var c = f . handler , m = f . data . toLowerCase ( ) . split ( " " ) ; f . handler = function ( o ) { if ( ! ( this !== o . target && ( /textarea|select/i . test ( o . target . nodeName ) || o . target . type === "text" ) ) ) { var b = o . type !== "keypress" && a . hotkeys . specialKeys [ o . which ] , d = String . fromCharCode ( o . which ) . toLowerCase ( ) , e = "" , l = { } ; if ( o . altKey && b !== "alt" ) e += "alt+" ; if ( o . ctrlKey && b !== "ctrl" ) e += "ctrl+" ; if ( o . metaKey && ! o . ctrlKey && b !== "meta" ) e += "meta+" ; if ( o . shiftKey && b !== "shift" ) e += "shift+" ; if ( b ) l [ e + b ] =
2012-06-23 19:40:40 +00:00
true ; else { l [ e + d ] = true ; l [ e + a . hotkeys . shiftNums [ d ] ] = true ; if ( e === "shift+" ) l [ a . hotkeys . shiftNums [ d ] ] = true } b = 0 ; for ( d = m . length ; b < d ; b ++ ) if ( l [ m [ b ] ] ) return c . apply ( this , arguments ) } } } } a . hotkeys = { version : "0.8" , specialKeys : { 8 : "backspace" , 9 : "tab" , 13 : "return" , 16 : "shift" , 17 : "ctrl" , 18 : "alt" , 19 : "pause" , 20 : "capslock" , 27 : "esc" , 32 : "space" , 33 : "pageup" , 34 : "pagedown" , 35 : "end" , 36 : "home" , 37 : "left" , 38 : "up" , 39 : "right" , 40 : "down" , 45 : "insert" , 46 : "del" , 96 : "0" , 97 : "1" , 98 : "2" , 99 : "3" , 100 : "4" , 101 : "5" , 102 : "6" , 103 : "7" , 104 : "8" , 105 : "9" ,
2012-07-04 14:42:50 +00:00
106 : "*" , 107 : "+" , 109 : "-" , 110 : "." , 111 : "/" , 112 : "f1" , 113 : "f2" , 114 : "f3" , 115 : "f4" , 116 : "f5" , 117 : "f6" , 118 : "f7" , 119 : "f8" , 120 : "f9" , 121 : "f10" , 122 : "f11" , 123 : "f12" , 144 : "numlock" , 145 : "scroll" , 191 : "/" , 224 : "meta" , 219 : "[" , 221 : "]" } , shiftNums : { "`" : "~" , "1" : "!" , "2" : "@" , "3" : "#" , "4" : "$" , "5" : "%" , "6" : "^" , "7" : "&" , "8" : "*" , "9" : "(" , "0" : ")" , "-" : "_" , "=" : "+" , ";" : ": " , "'" : '"' , "," : "<" , "." : ">" , "/" : "?" , "\\" : "|" } } ; a . each ( [ "keydown" , "keyup" , "keypress" ] , function ( ) { a . event . special [ this ] = { add : n } } ) } ) ( jQuery ) ; ( function ( a , n ) { function f ( ba ) { return typeof ba === "string" } function c ( ba ) { var S = e . call ( arguments , 1 ) ; return function ( ) { return ba . apply ( this , S . concat ( e . call ( arguments ) ) ) } } function m ( ba , S , U , ra , la ) { var ma ; if ( ra !== d ) { S = U . match ( ba ? /^([^#]*)\#?(.*)$/ : /^([^#?]*)\??([^#]*)(#?.*)/ ) ; U = S [ 3 ] || "" ; if ( la === 2 && f ( ra ) ) ra = ra . replace ( ba ? ea : ca , "" ) ; else { ma = p ( S [ 2 ] ) ; ra = f ( ra ) ? p [ ba ? fa : O ] ( ra ) : ra ; ra = la === 2 ? ra : la === 1 ? a . extend ( { } , ra , ma ) : a . extend ( { } , ma , ra ) ; ra = u ( ra ) ; if ( ba ) ra = ra . replace ( qa , l ) } ba = S [ 1 ] + ( ba ? "#" : ra || ! S [ 1 ] ? "?" : "" ) + ra + U } else ba =
2012-07-14 02:04:34 +00:00
S ( U !== d ? U : n [ sa ] [ ha ] ) ; return ba } function o ( ba , S , U ) { if ( S === d || typeof S === "boolean" ) { U = S ; S = u [ ba ? fa : O ] ( ) } else S = f ( S ) ? S . replace ( ba ? ea : ca , "" ) : S ; return p ( S , U ) } function b ( ba , S , U , ra ) { if ( ! f ( U ) && typeof U !== "object" ) { ra = U ; U = S ; S = d } return this . each ( function ( ) { var la = a ( this ) , ma = S || da ( ) [ ( this . nodeName || "" ) . toLowerCase ( ) ] || "" , Z = ma && la . attr ( ma ) || "" ; la . attr ( ma , u [ ba ] ( Z , U , ra ) ) } ) } var d , e = Array . prototype . slice , l = decodeURIComponent , u = a . param , w , p , L , T = a . bbq = a . bbq || { } , N , K , da , V = a . event . special , O = "querystring" , fa = "fragment" ,
sa = "location" , ha = "href" , ca = /^.*\?|#.*$/g , ea = /^.*\#/ , qa , pa = { } ; u [ O ] = c ( m , 0 , function ( ba ) { return ba . replace ( /(?:^[^?#]*\?([^#]*).*$)?.*/ , "$1" ) } ) ; u [ fa ] = w = c ( m , 1 , function ( ba ) { return ba . replace ( /^[^#]*#?(.*)$/ , "$1" ) } ) ; w . noEscape = function ( ba ) { ba = ba || "" ; ba = a . map ( ba . split ( "" ) , encodeURIComponent ) ; qa = RegExp ( ba . join ( "|" ) , "g" ) } ; w . noEscape ( ",/" ) ; a . deparam = p = function ( ba , S ) { var U = { } , ra = { "true" : true , "false" : false , "null" : null } ; a . each ( ba . replace ( /\+/g , " " ) . split ( "&" ) , function ( la , ma ) { var Z = ma . split ( "=" ) , Aa = l ( Z [ 0 ] ) , Ka = U ,
Ra = 0 , Na = Aa . split ( "][" ) , Sa = Na . length - 1 ; if ( /\[/ . test ( Na [ 0 ] ) && /\]$/ . test ( Na [ Sa ] ) ) { Na [ Sa ] = Na [ Sa ] . replace ( /\]$/ , "" ) ; Na = Na . shift ( ) . split ( "[" ) . concat ( Na ) ; Sa = Na . length - 1 } else Sa = 0 ; if ( Z . length === 2 ) { Z = l ( Z [ 1 ] ) ; if ( S ) Z = Z && ! isNaN ( Z ) ? + Z : Z === "undefined" ? d : ra [ Z ] !== d ? ra [ Z ] : Z ; if ( Sa ) for ( ; Ra <= Sa ; Ra ++ ) { Aa = Na [ Ra ] === "" ? Ka . length : Na [ Ra ] ; Ka = Ka [ Aa ] = Ra < Sa ? Ka [ Aa ] || ( Na [ Ra + 1 ] && isNaN ( Na [ Ra + 1 ] ) ? { } : [ ] ) : Z } else if ( a . isArray ( U [ Aa ] ) ) U [ Aa ] . push ( Z ) ; else U [ Aa ] = U [ Aa ] !== d ? [ U [ Aa ] , Z ] : Z } else if ( Aa ) U [ Aa ] = S ? d : "" } ) ; return U } ; p [ O ] = c ( o , 0 ) ; p [ fa ] = L =
c ( o , 1 ) ; a . elemUrlAttr || ( a . elemUrlAttr = function ( ba ) { return a . extend ( pa , ba ) } ) ( { a : ha , base : ha , iframe : "src" , img : "src" , input : "src" , form : "action" , link : ha , script : "src" } ) ; da = a . elemUrlAttr ; a . fn [ O ] = c ( b , O ) ; a . fn [ fa ] = c ( b , fa ) ; T . pushState = N = function ( ba , S ) { if ( f ( ba ) && /^#/ . test ( ba ) && S === d ) S = 2 ; var U = ba !== d ; U = w ( n [ sa ] [ ha ] , U ? ba : { } , U ? S : 2 ) ; n [ sa ] [ ha ] = U + ( /#/ . test ( U ) ? "" : "#" ) } ; T . getState = K = function ( ba , S ) { return ba === d || typeof ba === "boolean" ? L ( ba ) : L ( S ) [ ba ] } ; T . removeState = function ( ba ) { var S = { } ; if ( ba !== d ) { S = K ( ) ; a . each ( a . isArray ( ba ) ?
ba : arguments , function ( U , ra ) { delete S [ ra ] } ) } N ( S , 2 ) } ; V . hashchange = a . extend ( V . hashchange , { add : function ( ba ) { function S ( ra ) { var la = ra [ fa ] = w ( ) ; ra . getState = function ( ma , Z ) { return ma === d || typeof ma === "boolean" ? p ( la , ma ) : p ( la , Z ) [ ma ] } ; U . apply ( this , arguments ) } var U ; if ( a . isFunction ( ba ) ) { U = ba ; return S } else { U = ba . handler ; ba . handler = S } } } ) } ) ( jQuery , this ) ;
( function ( a , n , f ) { function c ( w ) { w = w || n [ b ] [ d ] ; return w . replace ( /^[^#]*#?(.*)$/ , "$1" ) } var m , o = a . event . special , b = "location" , d = "href" , e = document . documentMode , l = a . browser . msie && ( e === f || e < 8 ) , u = "onhashchange" in n && ! l ; a . hashchangeDelay = 100 ; o . hashchange = a . extend ( o . hashchange , { setup : function ( ) { if ( u ) return false ; a ( m . start ) } , teardown : function ( ) { if ( u ) return false ; a ( m . stop ) } } ) ; m = function ( ) { function w ( ) { N = K = function ( da ) { return da } ; if ( l ) { T = a ( '<iframe src="javascript:0"/>' ) . hide ( ) . insertAfter ( "body" ) [ 0 ] . contentWindow ;
K = function ( ) { return c ( T . document [ b ] [ d ] ) } ; N = function ( da , V ) { if ( da !== V ) { var O = T . document ; O . open ( ) . close ( ) ; O [ b ] . hash = "#" + da } } ; N ( c ( ) ) } } var p = { } , L , T , N , K ; p . start = function ( ) { if ( ! L ) { var da = c ( ) ; N || w ( ) ; ( function V ( ) { var O = c ( ) , fa = K ( da ) ; if ( O !== da ) { N ( da = O , fa ) ; a ( n ) . trigger ( "hashchange" ) } else if ( fa !== da ) n [ b ] [ d ] = n [ b ] [ d ] . replace ( /#.*/ , "" ) + "#" + fa ; L = setTimeout ( V , a . hashchangeDelay ) } ) ( ) } } ; p . stop = function ( ) { if ( ! T ) { L && clearTimeout ( L ) ; L = 0 } } ; return p } ( ) } ) ( jQuery , this ) ; ( function ( a ) { var n = { } , f ; a . svgIcons = function ( c , m ) { function o ( ba , S ) { if ( ba !== "ajax" ) { if ( da ) return ; var U = ( T = ha [ 0 ] . contentDocument ) && T . getElementById ( "svg_eof" ) ; if ( ! U && ! ( S && U ) ) { V ++ ; if ( V < 50 ) setTimeout ( o , 20 ) ; else { d ( ) ; da = true } return } da = true } L = a ( T . firstChild ) . children ( ) ; if ( m . no _img ) setTimeout ( function ( ) { K || b ( ) } , 500 ) ; else { U = sa + "PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNzUiIGhlaWdodD0iMjc1Ij48L3N2Zz4%3D" ; N = a ( new Image ) . attr ( { src : U , width : 0 , height : 0 } ) . appendTo ( "body" ) . load ( function ( ) { b ( true ) } ) . error ( function ( ) { b ( ) } ) } }
function b ( ba , S ) { if ( ! K ) { if ( m . no _img ) ba = false ; if ( ba ) { var U = a ( document . createElement ( "div" ) ) ; U . hide ( ) . appendTo ( "body" ) } if ( S ) { var ra = m . fallback _path ? m . fallback _path : "" ; a . each ( S , function ( Sa , Xa ) { a ( "#" + Sa ) ; var Oa = a ( new Image ) . attr ( { "class" : "svg_icon" , src : ra + Xa , width : w , height : p , alt : "icon" } ) ; pa ( Oa , Sa ) } ) } else for ( var la = L . length , ma = 0 ; ma < la ; ma ++ ) { var Z = L [ ma ] , Aa = Z . id ; if ( Aa === "svg_eof" ) break ; a ( "#" + Aa ) ; Z = Z . getElementsByTagNameNS ( l , "svg" ) [ 0 ] ; var Ka = document . createElementNS ( l , "svg" ) ; Ka . setAttributeNS ( l , "viewBox" ,
[ 0 , 0 , w , p ] . join ( " " ) ) ; var Ra = Z . getAttribute ( "width" ) , Na = Z . getAttribute ( "height" ) ; Z . removeAttribute ( "width" ) ; Z . removeAttribute ( "height" ) ; Z . getAttribute ( "viewBox" ) || Z . setAttribute ( "viewBox" , [ 0 , 0 , Ra , Na ] . join ( " " ) ) ; Ka . setAttribute ( "xmlns" , l ) ; Ka . setAttribute ( "width" , w ) ; Ka . setAttribute ( "height" , p ) ; Ka . setAttribute ( "xmlns:xlink" , u ) ; Ka . setAttribute ( "class" , "svg_icon" ) ; fa || ( Z = Z . cloneNode ( true ) ) ; Ka . appendChild ( Z ) ; if ( ba ) { fa || Ka . cloneNode ( true ) ; U . empty ( ) . append ( Ka ) ; Z = sa + e ( U . html ( ) ) ; Z = a ( new Image ) . attr ( { "class" : "svg_icon" ,
src : Z } ) } else Z = f ( a ( Ka ) , ma ) ; pa ( Z , Aa ) } m . placement && a . each ( m . placement , function ( Sa , Xa ) { n [ Xa ] && a ( Sa ) . each ( function ( Oa ) { var Ia = n [ Xa ] . clone ( ) ; if ( Oa > 0 && ! ba ) Ia = f ( Ia , Oa , true ) ; qa ( a ( this ) , Ia , Xa ) } ) } ) ; if ( ! S ) { ba && U . remove ( ) ; ha && ha . remove ( ) ; N && N . remove ( ) } m . resize && a . resizeSvgIcons ( m . resize ) ; K = true ; m . callback && m . callback ( n ) } } function d ( ) { if ( c . indexOf ( ".svgz" ) != - 1 ) { var ba = c . replace ( ".svgz" , ".svg" ) ; window . console && console . log ( ".svgz failed, trying with .svg" ) ; a . svgIcons ( ba , m ) } else m . fallback && b ( false , m . fallback ) } function e ( ba ) { if ( window . btoa ) return window . btoa ( ba ) ;
var S = Array ( Math . floor ( ( ba . length + 2 ) / 3 ) * 4 ) , U , ra , la , ma , Z , Aa , Ka = 0 , Ra = 0 ; do { U = ba . charCodeAt ( Ka ++ ) ; ra = ba . charCodeAt ( Ka ++ ) ; la = ba . charCodeAt ( Ka ++ ) ; ma = U >> 2 ; U = ( U & 3 ) << 4 | ra >> 4 ; Z = ( ra & 15 ) << 2 | la >> 6 ; Aa = la & 63 ; if ( isNaN ( ra ) ) Z = Aa = 64 ; else if ( isNaN ( la ) ) Aa = 64 ; S [ Ra ++ ] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" . charAt ( ma ) ; S [ Ra ++ ] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" . charAt ( U ) ; S [ Ra ++ ] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" . charAt ( Z ) ; S [ Ra ++ ] =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" . charAt ( Aa ) } while ( Ka < ba . length ) ; return S . join ( "" ) } var l = "http://www.w3.org/2000/svg" , u = "http://www.w3.org/1999/xlink" , w = m . w ? m . w : 24 , p = m . h ? m . h : 24 , L , T , N , K = false , da = false , V = 0 , O = navigator . userAgent , fa = ! ! window . opera ; O . indexOf ( "Safari/" ) > - 1 && O . indexOf ( "Chrome/" ) ; var sa = "data:image/svg+xml;charset=utf-8;base64," ; if ( m . svgz ) { var ha = a ( '<object data="' + c + '" type=image/svg+xml>' ) . appendTo ( "body" ) . hide ( ) ; try { T = ha [ 0 ] . contentDocument ; ha . load ( o ) ;
2012-07-04 14:42:50 +00:00
o ( 0 , true ) } catch ( ca ) { d ( ) } } else { var ea = new DOMParser ; a . ajax ( { url : c , dataType : "string" , success : function ( ba ) { if ( ba ) { T = ea . parseFromString ( ba , "text/xml" ) ; a ( function ( ) { o ( "ajax" ) } ) } else a ( d ) } , error : function ( ba ) { if ( window . opera ) a ( function ( ) { d ( ) } ) ; else if ( ba . responseText ) { T = ea . parseFromString ( ba . responseText , "text/xml" ) ; T . childNodes . length || a ( d ) ; a ( function ( ) { o ( "ajax" ) } ) } else a ( d ) } } ) } var qa = function ( ba , S , U , ra ) { fa && S . css ( "visibility" , "hidden" ) ; if ( m . replace ) { ra && S . attr ( "id" , U ) ; ( U = ba . attr ( "class" ) ) && S . attr ( "class" ,
2012-07-14 02:04:34 +00:00
"svg_icon " + U ) ; ba . replaceWith ( S ) } else ba . append ( S ) ; fa && setTimeout ( function ( ) { S . removeAttr ( "style" ) } , 1 ) } , pa = function ( ba , S ) { if ( m . id _match === undefined || m . id _match !== false ) qa ( holder , ba , S , true ) ; n [ S ] = ba } ; f = function ( ba , S ) { var U = ba . find ( "defs" ) ; if ( ! U . length ) return ba ; U = fa ? U . find ( "*" ) . filter ( function ( ) { return ! ! this . id } ) : U . find ( "[id]" ) ; var ra = ba [ 0 ] . getElementsByTagName ( "*" ) , la = ra . length ; U . each ( function ( ma ) { var Z = this . id ; a ( T ) . find ( "#" + Z ) ; this . id = ma = "x" + Z + S + ma ; Z = "url(#" + Z + ")" ; var Aa = "url(#" + ma + ")" ; for ( ma = 0 ; ma <
la ; ma ++ ) { var Ka = ra [ ma ] ; Ka . getAttribute ( "fill" ) === Z && Ka . setAttribute ( "fill" , Aa ) ; Ka . getAttribute ( "stroke" ) === Z && Ka . setAttribute ( "stroke" , Aa ) ; Ka . getAttribute ( "filter" ) === Z && Ka . setAttribute ( "filter" , Aa ) } } ) ; return ba } } ; a . getSvgIcon = function ( c , m ) { var o = n [ c ] ; if ( m && o ) o = f ( o , 0 , true ) . clone ( true ) ; return o } ; a . resizeSvgIcons = function ( c ) { var m = ! a ( ".svg_icon:first" ) . length ; a . each ( c , function ( o , b ) { var d = a . isArray ( b ) , e = d ? b [ 0 ] : b , l = d ? b [ 1 ] : b ; if ( m ) o = o . replace ( /\.svg_icon/g , "svg" ) ; a ( o ) . each ( function ( ) { this . setAttribute ( "width" ,
2012-07-04 14:42:50 +00:00
e ) ; this . setAttribute ( "height" , l ) ; if ( window . opera && window . widget ) { this . parentNode . style . width = e + "px" ; this . parentNode . style . height = l + "px" } } ) } ) } } ) ( jQuery ) ; ( function ( ) { function a ( c , m , o ) { c = document . createElementNS ( n . svg , c ) ; if ( f ) for ( var b in m ) c . setAttribute ( b , m [ b ] ) ; else for ( b in m ) { var d = m [ b ] , e = c [ b ] ; if ( e && e . constructor === "SVGLength" ) e . baseVal . value = d ; else c . setAttribute ( b , d ) } o && o . appendChild ( c ) ; return c } var n = { svg : "http://www.w3.org/2000/svg" , xlink : "http://www.w3.org/1999/xlink" } ; if ( ! window . console ) window . console = new function ( ) { this . log = function ( ) { } ; this . dir = function ( ) { } } ; $ . jGraduate = { Paint : function ( c ) { c = c || { } ; this . alpha = isNaN ( c . alpha ) ? 100 : c . alpha ; if ( c . copy ) { this . type =
2012-06-23 19:40:40 +00:00
c . copy . type ; this . alpha = c . copy . alpha ; this . radialGradient = this . linearGradient = this . solidColor = null ; switch ( this . type ) { case "solidColor" : this . solidColor = c . copy . solidColor ; break ; case "linearGradient" : this . linearGradient = c . copy . linearGradient . cloneNode ( true ) ; break ; case "radialGradient" : this . radialGradient = c . copy . radialGradient . cloneNode ( true ) } } else if ( c . linearGradient ) { this . type = "linearGradient" ; this . radialGradient = this . solidColor = null ; this . linearGradient = c . linearGradient . cloneNode ( true ) } else if ( c . radialGradient ) { this . type =
"radialGradient" ; this . linearGradient = this . solidColor = null ; this . radialGradient = c . radialGradient . cloneNode ( true ) } else if ( c . solidColor ) { this . type = "solidColor" ; this . solidColor = c . solidColor } else { this . type = "none" ; this . radialGradient = this . linearGradient = this . solidColor = null } } } ; jQuery . fn . jGraduateDefaults = { paint : new $ . jGraduate . Paint , window : { pickerTitle : "Drag markers to pick a paint" } , images : { clientPath : "images/" } , newstop : "inverse" } ; var f = navigator . userAgent . indexOf ( "Gecko/" ) >= 0 ; jQuery . fn . jGraduate = function ( c ) { var m =
2012-07-14 02:04:34 +00:00
arguments ; return this . each ( function ( ) { function o ( na , aa , ta , M , I ) { var Y = I || a ( "stop" , { "stop-color" : aa , "stop-opacity" : ta , offset : na } , ea ) ; if ( I ) { aa = I . getAttribute ( "stop-color" ) ; ta = I . getAttribute ( "stop-opacity" ) ; na = I . getAttribute ( "offset" ) } else ea . appendChild ( Y ) ; if ( ta === null ) ta = 1 ; I = a ( "path" , { d : "M-6.2,0.9c3.6-4,6.7-4.3,6.7-12.4c-0.2,7.9,3.1,8.8,6.5,12.4c3.5,3.8,2.9,9.6,0,12.3c-3.1,2.8-10.4,2.7-13.2,0C-9.6,9.9-9.4,4.4-6.2,0.9z" , fill : "url(#jGraduate_trans)" , transform : "translate(" + ( 10 + na * fa ) + ", 26)" } , Fb ) ; var Pa =
a ( "path" , { d : "M-6.2,0.9c3.6-4,6.7-4.3,6.7-12.4c-0.2,7.9,3.1,8.8,6.5,12.4c3.5,3.8,2.9,9.6,0,12.3c-3.1,2.8-10.4,2.7-13.2,0C-9.6,9.9-9.4,4.4-6.2,0.9z" , fill : aa , "fill-opacity" : ta , transform : "translate(" + ( 10 + na * fa ) + ", 26)" , stroke : "#000" , "stroke-width" : 1.5 } , Fb ) ; $ ( Pa ) . mousedown ( function ( Wa ) { b ( this ) ; Ya = lb ; da . mousemove ( l ) . mouseup ( d ) ; Ea = Ob . offset ( ) ; Wa . preventDefault ( ) ; return false } ) . data ( "stop" , Y ) . data ( "bg" , I ) . dblclick ( function ( ) { $ ( "div.jGraduate_LightBox" ) . show ( ) ; for ( var Wa = this , db = + Y . getAttribute ( "stop-opacity" ) ||
1 , tb = Y . getAttribute ( "stop-color" ) || 1 , ub = ( parseFloat ( db ) * 255 ) . toString ( 16 ) ; ub . length < 2 ; ) ub = "0" + ub ; aa = tb . substr ( 1 ) + ub ; $ ( "#" + p + "_jGraduate_stopPicker" ) . css ( { left : 100 , bottom : 15 } ) . jPicker ( { window : { title : "Pick the start color and opacity for the gradient" } , images : { clientPath : w . images . clientPath } , color : { active : aa , alphaSupport : true } } , function ( zb ) { tb = zb . val ( "hex" ) ? "#" + zb . val ( "hex" ) : "none" ; db = zb . val ( "a" ) !== null ? zb . val ( "a" ) / 256 : 1 ; Wa . setAttribute ( "fill" , tb ) ; Wa . setAttribute ( "fill-opacity" , db ) ; Y . setAttribute ( "stop-color" ,
tb ) ; Y . setAttribute ( "stop-opacity" , db ) ; $ ( "div.jGraduate_LightBox" ) . hide ( ) ; $ ( "#" + p + "_jGraduate_stopPicker" ) . hide ( ) } , null , function ( ) { $ ( "div.jGraduate_LightBox" ) . hide ( ) ; $ ( "#" + p + "_jGraduate_stopPicker" ) . hide ( ) } ) } ) ; $ ( ea ) . find ( "stop" ) . each ( function ( ) { var Wa = $ ( this ) ; if ( + this . getAttribute ( "offset" ) > na ) { if ( ! aa ) { var db = this . getAttribute ( "stop-color" ) , tb = this . getAttribute ( "stop-opacity" ) ; Y . setAttribute ( "stop-color" , db ) ; Pa . setAttribute ( "fill" , db ) ; Y . setAttribute ( "stop-opacity" , tb === null ? 1 : tb ) ; Pa . setAttribute ( "fill-opacity" ,
tb === null ? 1 : tb ) } Wa . before ( Y ) ; return false } } ) ; M && b ( Pa ) ; return Y } function b ( na ) { lb && lb . setAttribute ( "stroke" , "#000" ) ; na . setAttribute ( "stroke" , "blue" ) ; lb = na ; lb . parentNode . appendChild ( lb ) } function d ( ) { da . unbind ( "mousemove" , l ) ; if ( La . getAttribute ( "display" ) !== "none" ) { La . setAttribute ( "display" , "none" ) ; var na = $ ( lb ) , aa = na . data ( "stop" ) ; na = na . data ( "bg" ) ; $ ( [ lb , aa , na ] ) . remove ( ) } Ya = null } function e ( ) { var na = Za ? "rotate(" + Za + "," + Ma + "," + mb + ") " : "" ; nb === 1 && Ja === 1 ? ea . removeAttribute ( "gradientTransform" ) : ea . setAttribute ( "gradientTransform" ,
2012-07-14 00:14:24 +00:00
na + "translate(" + - Ma * ( nb - 1 ) + "," + - mb * ( Ja - 1 ) + ") scale(" + nb + "," + Ja + ")" ) } function l ( na ) { var aa = na . pageX - Ea . left ; na = na . pageY - Ea . top ; aa = aa < 10 ? 10 : aa > fa + 10 ? fa + 10 : aa ; var ta = "translate(" + aa + ", 26)" ; if ( na < - 60 || na > 130 ) { La . setAttribute ( "display" , "block" ) ; La . setAttribute ( "transform" , ta ) } else La . setAttribute ( "display" , "none" ) ; Ya . setAttribute ( "transform" , ta ) ; $ . data ( Ya , "bg" ) . setAttribute ( "transform" , ta ) ; $ . data ( Ya , "stop" ) . setAttribute ( "offset" , ( aa - 10 ) / fa ) ; var M = 0 ; $ ( ea ) . find ( "stop" ) . each ( function ( ) { var I = this . getAttribute ( "offset" ) ,
2012-07-14 02:04:34 +00:00
Y = $ ( this ) ; if ( I < M ) { Y . prev ( ) . before ( Y ) ; Ga = $ ( ea ) . find ( "stop" ) } M = I } ) } var u = $ ( this ) , w = $ . extend ( true , { } , jQuery . fn . jGraduateDefaults , c ) , p = u . attr ( "id" ) , L = "#" + u . attr ( "id" ) + " " ; if ( L ) { var T = function ( ) { switch ( u . paint . type ) { case "radialGradient" : u . paint . linearGradient = null ; break ; case "linearGradient" : u . paint . radialGradient = null ; break ; case "solidColor" : u . paint . radialGradient = u . paint . linearGradient = null } $ . isFunction ( u . okCallback ) && u . okCallback ( u . paint ) ; u . hide ( ) } , N = function ( ) { $ . isFunction ( u . cancelCallback ) && u . cancelCallback ( ) ;
u . hide ( ) } ; $ . extend ( true , u , { paint : new $ . jGraduate . Paint ( { copy : w . paint } ) , okCallback : $ . isFunction ( m [ 1 ] ) && m [ 1 ] || null , cancelCallback : $ . isFunction ( m [ 2 ] ) && m [ 2 ] || null } ) ; u . position ( ) ; var K = null , da = $ ( window ) ; if ( u . paint . type == "none" ) u . paint = $ . jGraduate . Paint ( { solidColor : "ffffff" } ) ; u . addClass ( "jGraduate_Picker" ) ; u . html ( '<ul class="jGraduate_tabs"><li class="jGraduate_tab_color jGraduate_tab_current" data-type="col">Solid Color</li><li class="jGraduate_tab_lingrad" data-type="lg">Linear Gradient</li><li class="jGraduate_tab_radgrad" data-type="rg">Radial Gradient</li></ul><div class="jGraduate_colPick"></div><div class="jGraduate_gradPick"></div><div class="jGraduate_LightBox"></div><div id="' +
2012-07-14 00:14:24 +00:00
p + '_jGraduate_stopPicker" class="jGraduate_stopPicker"></div>' ) ; var V = $ ( L + "> .jGraduate_colPick" ) , O = $ ( L + "> .jGraduate_gradPick" ) ; O . html ( '<div id="' + p + '_jGraduate_Swatch" class="jGraduate_Swatch"><h2 class="jGraduate_Title">' + w . window . pickerTitle + '</h2><div id="' + p + '_jGraduate_GradContainer" class="jGraduate_GradContainer"></div><div id="' + p + '_jGraduate_StopSlider" class="jGraduate_StopSlider"></div></div><div class="jGraduate_Form jGraduate_Points jGraduate_lg_field"><div class="jGraduate_StopSection"><label class="jGraduate_Form_Heading">Begin Point</label><div class="jGraduate_Form_Section"><label>x:</label><input type="text" id="' +
2012-07-04 14:42:50 +00:00
p + '_jGraduate_x1" size="3" title="Enter starting x value between 0.0 and 1.0"/><label> y:</label><input type="text" id="' + p + '_jGraduate_y1" size="3" title="Enter starting y value between 0.0 and 1.0"/></div></div><div class="jGraduate_StopSection"><label class="jGraduate_Form_Heading">End Point</label><div class="jGraduate_Form_Section"><label>x:</label><input type="text" id="' + p + '_jGraduate_x2" size="3" title="Enter ending x value between 0.0 and 1.0"/><label> y:</label><input type="text" id="' +
p + '_jGraduate_y2" size="3" title="Enter ending y value between 0.0 and 1.0"/></div></div></div><div class="jGraduate_Form jGraduate_Points jGraduate_rg_field"><div class="jGraduate_StopSection"><label class="jGraduate_Form_Heading">Center Point</label><div class="jGraduate_Form_Section"><label>x:</label><input type="text" id="' + p + '_jGraduate_cx" size="3" title="Enter x value between 0.0 and 1.0"/><label> y:</label><input type="text" id="' + p + '_jGraduate_cy" size="3" title="Enter y value between 0.0 and 1.0"/></div></div><div class="jGraduate_StopSection"><label class="jGraduate_Form_Heading">Focal Point</label><div class="jGraduate_Form_Section"><label>Match center: <input type="checkbox" checked="checked" id="' +
p + '_jGraduate_match_ctr"/></label><br/><label>x:</label><input type="text" id="' + p + '_jGraduate_fx" size="3" title="Enter x value between 0.0 and 1.0"/><label> y:</label><input type="text" id="' + p + '_jGraduate_fy" size="3" title="Enter y value between 0.0 and 1.0"/></div></div></div><div class="jGraduate_StopSection jGraduate_SpreadMethod"><label class="jGraduate_Form_Heading">Spread method</label><div class="jGraduate_Form_Section"><select class="jGraduate_spreadMethod"><option value=pad selected>Pad</option><option value=reflect>Reflect</option><option value=repeat>Repeat</option></select></div></div><div class="jGraduate_Form"><div class="jGraduate_Slider jGraduate_RadiusField jGraduate_rg_field"><label class="prelabel">Radius:</label><div id="' +
2012-07-14 00:14:24 +00:00
p + '_jGraduate_Radius" class="jGraduate_SliderBar jGraduate_Radius" title="Click to set radius"><img id="' + p + '_jGraduate_RadiusArrows" class="jGraduate_RadiusArrows" src="' + w . images . clientPath + 'rangearrows2.gif"></div><label><input type="text" id="' + p + '_jGraduate_RadiusInput" size="3" value="100"/>%</label></div><div class="jGraduate_Slider jGraduate_EllipField jGraduate_rg_field"><label class="prelabel">Ellip:</label><div id="' + p + '_jGraduate_Ellip" class="jGraduate_SliderBar jGraduate_Ellip" title="Click to set Ellip"><img id="' +
p + '_jGraduate_EllipArrows" class="jGraduate_EllipArrows" src="' + w . images . clientPath + 'rangearrows2.gif"></div><label><input type="text" id="' + p + '_jGraduate_EllipInput" size="3" value="0"/>%</label></div><div class="jGraduate_Slider jGraduate_AngleField jGraduate_rg_field"><label class="prelabel">Angle:</label><div id="' + p + '_jGraduate_Angle" class="jGraduate_SliderBar jGraduate_Angle" title="Click to set Angle"><img id="' + p + '_jGraduate_AngleArrows" class="jGraduate_AngleArrows" src="' + w . images . clientPath +
'rangearrows2.gif"></div><label><input type="text" id="' + p + '_jGraduate_AngleInput" size="3" value="0"/>\u00ba </label></div><div class="jGraduate_Slider jGraduate_OpacField"><label class="prelabel">Opac:</label><div id="' + p + '_jGraduate_Opac" class="jGraduate_SliderBar jGraduate_Opac" title="Click to set Opac"><img id="' + p + '_jGraduate_OpacArrows" class="jGraduate_OpacArrows" src="' + w . images . clientPath + 'rangearrows2.gif"></div><label><input type="text" id="' + p + '_jGraduate_OpacInput" size="3" value="100"/>%</label></div></div><div class="jGraduate_OkCancel"><input type="button" id="' +
2012-07-12 17:01:07 +00:00
p + '_jGraduate_Ok" class="jGraduate_Ok" value="OK"/><input type="button" id="' + p + '_jGraduate_Cancel" class="jGraduate_Cancel" value="Cancel"/></div>' ) ; var fa = 256 , sa = fa - 0 , ha = fa - 0 , ca , ea , qa , pa = { } ; $ ( ".jGraduate_SliderBar" ) . width ( 145 ) ; var ba = $ ( "#" + p + "_jGraduate_GradContainer" ) [ 0 ] , S = a ( "svg" , { id : p + "_jgraduate_svg" , width : fa , height : fa , xmlns : n . svg } , ba ) ; ca = ca || u . paint . type ; var U = ea = u . paint [ ca ] , ra = u . paint . alpha , la = ca === "solidColor" ; switch ( ca ) { case "solidColor" : case "linearGradient" : if ( ! la ) { ea . id = p + "_lg_jgraduate_grad" ;
2012-07-14 02:04:34 +00:00
U = ea = S . appendChild ( ea ) } a ( "radialGradient" , { id : p + "_rg_jgraduate_grad" } , S ) ; if ( ca === "linearGradient" ) break ; case "radialGradient" : if ( ! la ) { ea . id = p + "_rg_jgraduate_grad" ; U = ea = S . appendChild ( ea ) } a ( "linearGradient" , { id : p + "_lg_jgraduate_grad" } , S ) } if ( la ) { U = ea = $ ( "#" + p + "_lg_jgraduate_grad" ) [ 0 ] ; K = u . paint [ ca ] ; o ( 0 , "#" + K , 1 ) ; var ma = typeof w . newstop ; if ( ma === "string" ) switch ( w . newstop ) { case "same" : o ( 1 , "#" + K , 1 ) ; break ; case "inverse" : ma = "" ; for ( var Z = 0 ; Z < 6 ; Z += 2 ) { K . substr ( Z , 2 ) ; var Aa = ( 255 - parseInt ( K . substr ( Z , 2 ) , 16 ) ) . toString ( 16 ) ;
if ( Aa . length < 2 ) Aa = 0 + Aa ; ma += Aa } o ( 1 , "#" + ma , 1 ) ; break ; case "white" : o ( 1 , "#ffffff" , 1 ) ; break ; case "black" : o ( 1 , "#000000" , 1 ) } else if ( ma === "object" ) o ( 1 , w . newstop . color || "#" + K , "opac" in w . newstop ? w . newstop . opac : 1 ) } K = parseFloat ( U . getAttribute ( "x1" ) || 0 ) ; ma = parseFloat ( U . getAttribute ( "y1" ) || 0 ) ; Z = parseFloat ( U . getAttribute ( "x2" ) || 1 ) ; Aa = parseFloat ( U . getAttribute ( "y2" ) || 0 ) ; var Ka = parseFloat ( U . getAttribute ( "cx" ) || 0.5 ) , Ra = parseFloat ( U . getAttribute ( "cy" ) || 0.5 ) , Na = parseFloat ( U . getAttribute ( "fx" ) || Ka ) , Sa = parseFloat ( U . getAttribute ( "fy" ) ||
Ra ) ; qa = a ( "rect" , { id : p + "_jgraduate_rect" , x : 0 , y : 0 , width : sa , height : ha , fill : "url(#" + p + "_jgraduate_grad)" , "fill-opacity" : ra / 100 } , S ) ; var Xa = $ ( "<div/>" ) . attr ( { "class" : "grad_coord jGraduate_lg_field" , title : "Begin Stop" } ) . text ( 1 ) . css ( { top : ma * fa , left : K * fa } ) . data ( "coord" , "start" ) . appendTo ( ba ) , Oa = Xa . clone ( ) . text ( 2 ) . css ( { top : Aa * fa , left : Z * fa } ) . attr ( "title" , "End stop" ) . data ( "coord" , "end" ) . appendTo ( ba ) , Ia = $ ( "<div/>" ) . attr ( { "class" : "grad_coord jGraduate_rg_field" , title : "Center stop" } ) . text ( "C" ) . css ( { top : Ra * fa , left : Ka *
2012-07-14 00:14:24 +00:00
fa } ) . data ( "coord" , "center" ) . appendTo ( ba ) , Qa = Ia . clone ( ) . text ( "F" ) . css ( { top : Sa * fa , left : Na * fa , display : "none" } ) . attr ( "title" , "Focus point" ) . data ( "coord" , "focus" ) . appendTo ( ba ) ; Qa [ 0 ] . id = p + "_jGraduate_focusCoord" ; $ ( L + " .grad_coord" ) ; $ . each ( [ "x1" , "y1" , "x2" , "y2" , "cx" , "cy" , "fx" , "fy" ] , function ( na , aa ) { var ta = ea . getAttribute ( aa ) , M = isNaN ( aa [ 1 ] ) ; ta || ( ta = M ? "0.5" : aa === "x2" ? "1.0" : "0.0" ) ; pa [ aa ] = $ ( "#" + p + "_jGraduate_" + aa ) . val ( ta ) . change ( function ( ) { if ( isNaN ( parseFloat ( this . value ) ) || this . value < 0 ) this . value = 0 ; else if ( this . value >
2012-07-14 02:04:34 +00:00
1 ) this . value = 1 ; if ( ! ( aa [ 0 ] === "f" && ! rb ) ) if ( M && ca === "radialGradient" || ! M && ca === "linearGradient" ) ea . setAttribute ( aa , this . value ) ; var I = M ? aa [ 0 ] === "c" ? Ia : Qa : aa [ 1 ] === "1" ? Xa : Oa , Y = aa . indexOf ( "x" ) >= 0 ? "left" : "top" ; I . css ( Y , this . value * fa ) } ) . change ( ) } ) ; var Ga , Fb , Ob = $ ( "#" + p + "_jGraduate_StopSlider" ) , lb , $a , Ya , La = a ( "path" , { d : "m9.75,-6l-19.5,19.5m0,-19.5l19.5,19.5" , fill : "none" , stroke : "#D00" , "stroke-width" : 5 , display : "none" } , $a ) , Ea , nb = 1 , Ja = 1 , Za = 0 , Ma = Ka , mb = Ra ; $a = a ( "svg" , { width : "100%" , height : 45 } , Ob [ 0 ] ) ; ba = a ( "pattern" , { width : 16 ,
2012-07-14 00:14:24 +00:00
height : 16 , patternUnits : "userSpaceOnUse" , id : "jGraduate_trans" } , $a ) ; a ( "image" , { width : 16 , height : 16 } , ba ) . setAttributeNS ( n . xlink , "xlink:href" , w . images . clientPath + "map-opacity.png" ) ; $ ( $a ) . click ( function ( na ) { Ea = Ob . offset ( ) ; if ( na . target . tagName !== "path" ) { var aa = na . pageX - Ea . left - 8 ; aa = aa < 10 ? 10 : aa > fa + 10 ? fa + 10 : aa ; o ( aa / fa , 0 , 0 , true ) ; na . stopPropagation ( ) } } ) ; $ ( $a ) . mouseover ( function ( ) { $a . appendChild ( La ) } ) ; Fb = a ( "g" , { } , $a ) ; a ( "line" , { x1 : 10 , y1 : 15 , x2 : fa + 10 , y2 : 15 , "stroke-width" : 2 , stroke : "#000" } , $a ) ; var Ab = O . find ( ".jGraduate_spreadMethod" ) . change ( function ( ) { ea . setAttribute ( "spreadMethod" ,
$ ( this ) . val ( ) ) } ) , eb = null , fb = function ( na ) { var aa = na . pageX - wb . left , ta = na . pageY - wb . top ; aa = aa < 0 ? 0 : aa > fa ? fa : aa ; ta = ta < 0 ? 0 : ta > fa ? fa : ta ; eb . css ( "left" , aa ) . css ( "top" , ta ) ; aa /= sa ; ta /= ha ; var M = eb . data ( "coord" ) , I = ea ; switch ( M ) { case "start" : pa . x1 . val ( aa ) ; pa . y1 . val ( ta ) ; I . setAttribute ( "x1" , aa ) ; I . setAttribute ( "y1" , ta ) ; break ; case "end" : pa . x2 . val ( aa ) ; pa . y2 . val ( ta ) ; I . setAttribute ( "x2" , aa ) ; I . setAttribute ( "y2" , ta ) ; break ; case "center" : pa . cx . val ( aa ) ; pa . cy . val ( ta ) ; I . setAttribute ( "cx" , aa ) ; I . setAttribute ( "cy" , ta ) ; Ma = aa ; mb = ta ;
2012-07-14 02:04:34 +00:00
e ( ) ; break ; case "focus" : pa . fx . val ( aa ) ; pa . fy . val ( ta ) ; I . setAttribute ( "fx" , aa ) ; I . setAttribute ( "fy" , ta ) ; e ( ) } na . preventDefault ( ) } , Pb = function ( ) { eb = null ; da . unbind ( "mousemove" , fb ) . unbind ( "mouseup" , Pb ) } ; Ga = ea . getElementsByTagNameNS ( n . svg , "stop" ) ; if ( xa < 2 ) { for ( ; xa < 2 ; ) { ea . appendChild ( document . createElementNS ( n . svg , "stop" ) ) ; ++ xa } Ga = ea . getElementsByTagNameNS ( n . svg , "stop" ) } var xa = Ga . length ; for ( Z = 0 ; Z < xa ; Z ++ ) o ( 0 , 0 , 0 , 0 , Ga [ Z ] ) ; Ab . val ( ea . getAttribute ( "spreadMethod" ) || "pad" ) ; var wb , rb = false ; qa . setAttribute ( "fill-opacity" ,
ra / 100 ) ; $ ( "#" + p + " div.grad_coord" ) . mousedown ( function ( na ) { na . preventDefault ( ) ; eb = $ ( this ) ; eb . offset ( ) ; wb = eb . parent ( ) . offset ( ) ; da . mousemove ( fb ) . mouseup ( Pb ) } ) ; $ ( "#" + p + "_jGraduate_Ok" ) . bind ( "click" , function ( ) { u . paint . type = ca ; u . paint [ ca ] = ea . cloneNode ( true ) ; u . paint . solidColor = null ; T ( ) } ) ; $ ( "#" + p + "_jGraduate_Cancel" ) . bind ( "click" , function ( ) { N ( ) } ) ; if ( ca === "radialGradient" ) if ( rb ) Qa . show ( ) ; else { Qa . hide ( ) ; pa . fx . val ( "" ) ; pa . fy . val ( "" ) } $ ( "#" + p + "_jGraduate_match_ctr" ) [ 0 ] . checked = ! rb ; var sb , Bb ; $ ( "#" + p + "_jGraduate_match_ctr" ) . change ( function ( ) { rb =
! this . checked ; Qa . toggle ( rb ) ; pa . fx . val ( "" ) ; pa . fy . val ( "" ) ; var na = ea ; if ( rb ) { var aa = sb || 0.5 , ta = Bb || 0.5 ; na . setAttribute ( "fx" , aa ) ; na . setAttribute ( "fy" , ta ) ; pa . fx . val ( aa ) ; pa . fy . val ( ta ) } else { sb = na . getAttribute ( "fx" ) ; Bb = na . getAttribute ( "fy" ) ; na . removeAttribute ( "fx" ) ; na . removeAttribute ( "fy" ) } } ) ; Ga = ea . getElementsByTagNameNS ( n . svg , "stop" ) ; xa = Ga . length ; if ( xa < 2 ) { for ( ; xa < 2 ; ) { ea . appendChild ( document . createElementNS ( n . svg , "stop" ) ) ; ++ xa } Ga = ea . getElementsByTagNameNS ( n . svg , "stop" ) } var kb ; ra = O = 0 ; if ( ca === "radialGradient" ) { S =
ea . gradientTransform . baseVal ; if ( S . numberOfItems === 2 ) { xa = S . getItem ( 0 ) ; S = S . getItem ( 1 ) ; if ( xa . type === 2 && S . type === 3 ) { xa = S . matrix ; if ( xa . a !== 1 ) O = Math . round ( - ( 1 - xa . a ) * 100 ) ; else if ( xa . d !== 1 ) O = Math . round ( ( 1 - xa . d ) * 100 ) } } else if ( S . numberOfItems === 3 ) { ba = S . getItem ( 0 ) ; xa = S . getItem ( 1 ) ; S = S . getItem ( 2 ) ; if ( ba . type === 4 && xa . type === 2 && S . type === 3 ) { ra = Math . round ( ba . angle ) ; xa = S . matrix ; if ( xa . a !== 1 ) O = Math . round ( - ( 1 - xa . a ) * 100 ) ; else if ( xa . d !== 1 ) O = Math . round ( ( 1 - xa . d ) * 100 ) } } } O = { radius : { handle : "#" + p + "_jGraduate_RadiusArrows" , input : "#" +
2012-07-14 00:14:24 +00:00
p + "_jGraduate_RadiusInput" , val : ( ea . getAttribute ( "r" ) || 0.5 ) * 100 } , opacity : { handle : "#" + p + "_jGraduate_OpacArrows" , input : "#" + p + "_jGraduate_OpacInput" , val : u . paint . alpha || 100 } , ellip : { handle : "#" + p + "_jGraduate_EllipArrows" , input : "#" + p + "_jGraduate_EllipInput" , val : O } , angle : { handle : "#" + p + "_jGraduate_AngleArrows" , input : "#" + p + "_jGraduate_AngleInput" , val : ra } } ; $ . each ( O , function ( na , aa ) { var ta = $ ( aa . handle ) ; ta . mousedown ( function ( M ) { var I = ta . parent ( ) ; kb = { type : na , elem : ta , input : $ ( aa . input ) , parent : I , offset : I . offset ( ) } ;
2012-07-14 02:04:34 +00:00
da . mousemove ( Cb ) . mouseup ( Lb ) ; M . preventDefault ( ) } ) ; $ ( aa . input ) . val ( aa . val ) . change ( function ( ) { var M = + this . value , I = 0 , Y = ca === "radialGradient" ; switch ( na ) { case "radius" : Y && ea . setAttribute ( "r" , M / 100 ) ; I = Math . pow ( M / 100 , 0.4 ) / 2 * 145 ; break ; case "opacity" : u . paint . alpha = M ; qa . setAttribute ( "fill-opacity" , M / 100 ) ; I = M * 1.45 ; break ; case "ellip" : nb = Ja = 1 ; if ( M === 0 ) { I = 72.5 ; break } if ( M > 99.5 ) M = 99.5 ; if ( M > 0 ) Ja = 1 - M / 100 ; else nb = - ( M / 100 ) - 1 ; I = 145 * ( ( M + 100 ) / 2 ) / 100 ; Y && e ( ) ; break ; case "angle" : Za = M ; I = Za / 180 ; I += 0.5 ; I *= 145 ; Y && e ( ) } if ( I > 145 ) I =
2012-07-14 00:14:24 +00:00
145 ; else if ( I < 0 ) I = 0 ; ta . css ( { "margin-left" : I - 5 } ) } ) . change ( ) } ) ; var Cb = function ( na ) { var aa = na . pageX - kb . offset . left - parseInt ( kb . parent . css ( "border-left-width" ) ) ; if ( aa > 145 ) aa = 145 ; if ( aa <= 0 ) aa = 0 ; var ta = aa - 5 ; aa /= 145 ; switch ( kb . type ) { case "radius" : aa = Math . pow ( aa * 2 , 2.5 ) ; if ( aa > 0.98 && aa < 1.02 ) aa = 1 ; if ( aa <= 0.01 ) aa = 0.01 ; ea . setAttribute ( "r" , aa ) ; break ; case "opacity" : u . paint . alpha = parseInt ( aa * 100 ) ; qa . setAttribute ( "fill-opacity" , aa ) ; break ; case "ellip" : Ja = nb = 1 ; if ( aa < 0.5 ) { aa /= 0.5 ; nb = aa <= 0 ? 0.01 : aa } else if ( aa > 0.5 ) { aa /= 0.5 ;
2012-07-14 02:04:34 +00:00
aa = 2 - aa ; Ja = aa <= 0 ? 0.01 : aa } e ( ) ; aa -= 1 ; if ( Ja === aa + 1 ) aa = Math . abs ( aa ) ; break ; case "angle" : aa -= 0.5 ; Za = aa *= 180 ; e ( ) ; aa /= 100 } kb . elem . css ( { "margin-left" : ta } ) ; aa = Math . round ( aa * 100 ) ; kb . input . val ( aa ) ; na . preventDefault ( ) } , Lb = function ( ) { da . unbind ( "mousemove" , Cb ) . unbind ( "mouseup" , Lb ) ; kb = null } ; for ( O = ( u . paint . alpha * 255 / 100 ) . toString ( 16 ) ; O . length < 2 ; ) O = "0" + O ; O = O . split ( "." ) [ 0 ] ; K = u . paint . solidColor == "none" ? "" : u . paint . solidColor + O ; la || ( K = Ga [ 0 ] . getAttribute ( "stop-color" ) ) ; $ . extend ( $ . fn . jPicker . defaults . window , { alphaSupport : true ,
effects : { type : "show" , speed : 0 } } ) ; V . jPicker ( { window : { title : w . window . pickerTitle } , images : { clientPath : w . images . clientPath } , color : { active : K , alphaSupport : true } } , function ( na ) { u . paint . type = "solidColor" ; u . paint . alpha = na . val ( "ahex" ) ? Math . round ( na . val ( "a" ) / 255 * 100 ) : 100 ; u . paint . solidColor = na . val ( "hex" ) ? na . val ( "hex" ) : "none" ; u . paint . radialGradient = null ; T ( ) } , null , function ( ) { N ( ) } ) ; var Gb = $ ( L + " .jGraduate_tabs li" ) ; Gb . click ( function ( ) { Gb . removeClass ( "jGraduate_tab_current" ) ; $ ( this ) . addClass ( "jGraduate_tab_current" ) ;
2012-07-04 14:42:50 +00:00
$ ( L + " > div" ) . hide ( ) ; var na = $ ( this ) . attr ( "data-type" ) ; $ ( L + " .jGraduate_gradPick" ) . show ( ) ; if ( na === "rg" || na === "lg" ) { $ ( ".jGraduate_" + na + "_field" ) . show ( ) ; $ ( ".jGraduate_" + ( na === "lg" ? "rg" : "lg" ) + "_field" ) . hide ( ) ; $ ( "#" + p + "_jgraduate_rect" ) [ 0 ] . setAttribute ( "fill" , "url(#" + p + "_" + na + "_jgraduate_grad)" ) ; ca = na === "lg" ? "linearGradient" : "radialGradient" ; $ ( "#" + p + "_jGraduate_OpacInput" ) . val ( u . paint . alpha ) . change ( ) ; var aa = $ ( "#" + p + "_" + na + "_jgraduate_grad" ) [ 0 ] ; if ( ea !== aa ) { var ta = $ ( ea ) . find ( "stop" ) ; $ ( aa ) . empty ( ) . append ( ta ) ;
2012-07-14 02:04:34 +00:00
ea = aa ; aa = Ab . val ( ) ; ea . setAttribute ( "spreadMethod" , aa ) } rb = na === "rg" && ea . getAttribute ( "fx" ) != null && ! ( Ka == Na && Ra == Sa ) ; $ ( "#" + p + "_jGraduate_focusCoord" ) . toggle ( rb ) ; if ( rb ) $ ( "#" + p + "_jGraduate_match_ctr" ) [ 0 ] . checked = false } else { $ ( L + " .jGraduate_gradPick" ) . hide ( ) ; $ ( L + " .jGraduate_colPick" ) . show ( ) } } ) ; $ ( L + " > div" ) . hide ( ) ; Gb . removeClass ( "jGraduate_tab_current" ) ; var Rb ; switch ( u . paint . type ) { case "linearGradient" : Rb = $ ( L + " .jGraduate_tab_lingrad" ) ; break ; case "radialGradient" : Rb = $ ( L + " .jGraduate_tab_radgrad" ) ; break ;
2012-07-14 00:14:24 +00:00
default : Rb = $ ( L + " .jGraduate_tab_color" ) } u . show ( ) ; setTimeout ( function ( ) { Rb . addClass ( "jGraduate_tab_current" ) . click ( ) } , 10 ) } else alert ( "Container element must have an id attribute to maintain unique id strings for sub-elements." ) } ) } } ) ( ) ; $ . fn . SpinButton = function ( a ) { function n ( f , c ) { for ( var m = f [ c ] , o = document . body ; ( f = f . offsetParent ) && f != o ; ) if ( ! $ . browser . msie || f . currentStyle . position != "relative" ) m += f [ c ] ; return m } return this . each ( function ( ) { this . repeating = false ; this . spinCfg = { min : a && ! isNaN ( parseFloat ( a . min ) ) ? Number ( a . min ) : null , max : a && ! isNaN ( parseFloat ( a . max ) ) ? Number ( a . max ) : null , step : a && a . step ? Number ( a . step ) : 1 , stepfunc : a && a . stepfunc ? a . stepfunc : false , page : a && a . page ? Number ( a . page ) : 10 , upClass : a && a . upClass ? a . upClass : "up" , downClass : a && a . downClass ?
2012-06-23 19:40:40 +00:00
a . downClass : "down" , reset : a && a . reset ? a . reset : this . value , delay : a && a . delay ? Number ( a . delay ) : 500 , interval : a && a . interval ? Number ( a . interval ) : 100 , _btn _width : 20 , _direction : null , _delay : null , _repeat : null , callback : a && a . callback ? a . callback : null } ; this . spinCfg . smallStep = a && a . smallStep ? a . smallStep : this . spinCfg . step / 2 ; this . adjustValue = function ( f ) { f = isNaN ( this . value ) ? this . spinCfg . reset : $ . isFunction ( this . spinCfg . stepfunc ) ? this . spinCfg . stepfunc ( this , f ) : Number ( ( Number ( this . value ) + Number ( f ) ) . toFixed ( 5 ) ) ; if ( this . spinCfg . min !==
2012-07-04 14:42:50 +00:00
null ) f = Math . max ( f , this . spinCfg . min ) ; if ( this . spinCfg . max !== null ) f = Math . min ( f , this . spinCfg . max ) ; this . value = f ; $ . isFunction ( this . spinCfg . callback ) && this . spinCfg . callback ( this ) } ; $ ( this ) . addClass ( a && a . spinClass ? a . spinClass : "spin-button" ) . mousemove ( function ( f ) { var c = f . pageX || f . x , m = f . pageY || f . y ; f = f . target || f . srcElement ; var o = svgEditor . tool _scale || 1 , b = $ ( f ) . height ( ) / 2 ; c = c > n ( f , "offsetLeft" ) + f . offsetWidth * o - this . spinCfg . _btn _width ? m < n ( f , "offsetTop" ) + b * o ? 1 : - 1 : 0 ; if ( c !== this . spinCfg . _direction ) { switch ( c ) { case 1 : $ ( this ) . removeClass ( this . spinCfg . downClass ) . addClass ( this . spinCfg . upClass ) ;
2012-06-23 19:40:40 +00:00
break ; case - 1 : $ ( this ) . removeClass ( this . spinCfg . upClass ) . addClass ( this . spinCfg . downClass ) ; break ; default : $ ( this ) . removeClass ( this . spinCfg . upClass ) . removeClass ( this . spinCfg . downClass ) } this . spinCfg . _direction = c } } ) . mouseout ( function ( ) { $ ( this ) . removeClass ( this . spinCfg . upClass ) . removeClass ( this . spinCfg . downClass ) ; this . spinCfg . _direction = null ; window . clearInterval ( this . spinCfg . _repeat ) ; window . clearTimeout ( this . spinCfg . _delay ) } ) . mousedown ( function ( f ) { if ( f . button === 0 && this . spinCfg . _direction != 0 ) { var c = this ,
2012-07-04 14:42:50 +00:00
m = f . shiftKey ? c . spinCfg . smallStep : c . spinCfg . step , o = function ( ) { c . adjustValue ( c . spinCfg . _direction * m ) } ; o ( ) ; c . spinCfg . _delay = window . setTimeout ( function ( ) { o ( ) ; c . spinCfg . _repeat = window . setInterval ( o , c . spinCfg . interval ) } , c . spinCfg . delay ) } } ) . mouseup ( function ( ) { window . clearInterval ( this . spinCfg . _repeat ) ; window . clearTimeout ( this . spinCfg . _delay ) } ) . dblclick ( function ( ) { $ . browser . msie && this . adjustValue ( this . spinCfg . _direction * this . spinCfg . step ) } ) . keydown ( function ( f ) { switch ( f . keyCode ) { case 38 : this . adjustValue ( this . spinCfg . step ) ;
2012-06-23 19:40:40 +00:00
break ; case 40 : this . adjustValue ( - this . spinCfg . step ) ; break ; case 33 : this . adjustValue ( this . spinCfg . page ) ; break ; case 34 : this . adjustValue ( - this . spinCfg . page ) } } ) . keypress ( function ( f ) { if ( this . repeating ) switch ( f . keyCode ) { case 38 : this . adjustValue ( this . spinCfg . step ) ; break ; case 40 : this . adjustValue ( - this . spinCfg . step ) ; break ; case 33 : this . adjustValue ( this . spinCfg . page ) ; break ; case 34 : this . adjustValue ( - this . spinCfg . page ) } else this . repeating = true } ) . keyup ( function ( f ) { this . repeating = false ; switch ( f . keyCode ) { case 38 : case 40 : case 33 : case 34 : case 13 : this . adjustValue ( 0 ) } } ) . bind ( "mousewheel" ,
2012-07-04 14:42:50 +00:00
function ( f ) { if ( f . wheelDelta >= 120 ) this . adjustValue ( this . spinCfg . step ) ; else f . wheelDelta <= - 120 && this . adjustValue ( - this . spinCfg . step ) ; f . preventDefault ( ) } ) . change ( function ( ) { this . adjustValue ( 0 ) } ) ; this . addEventListener && this . addEventListener ( "DOMMouseScroll" , function ( f ) { if ( f . detail > 0 ) this . adjustValue ( - this . spinCfg . step ) ; else f . detail < 0 && this . adjustValue ( this . spinCfg . step ) ; f . preventDefault ( ) } , false ) } ) } ; function touchHandler ( a ) { var n = a . changedTouches , f = n [ 0 ] , c = "" ; switch ( a . type ) { case "touchstart" : c = "mousedown" ; break ; case "touchmove" : c = "mousemove" ; break ; case "touchend" : c = "mouseup" ; break ; default : return } var m = document . createEvent ( "MouseEvent" ) ; m . initMouseEvent ( c , true , true , window , 1 , f . screenX , f . screenY , f . clientX , f . clientY , false , false , false , false , 0 , null ) ; if ( n . length < 2 ) { f . target . dispatchEvent ( m ) ; a . preventDefault ( ) } } ; jQuery && function ( ) { var a = $ ( window ) , n = $ ( document ) ; $ . extend ( $ . fn , { contextMenu : function ( f , c ) { if ( f . menu == undefined ) return false ; if ( f . inSpeed == undefined ) f . inSpeed = 150 ; if ( f . outSpeed == undefined ) f . outSpeed = 75 ; if ( f . inSpeed == 0 ) f . inSpeed = - 1 ; if ( f . outSpeed == 0 ) f . outSpeed = - 1 ; $ ( this ) . each ( function ( ) { var m = $ ( this ) , o = $ ( m ) . offset ( ) , b = $ ( "#" + f . menu ) ; b . addClass ( "contextMenu" ) ; $ ( this ) . bind ( "mousedown" , function ( d ) { $ ( this ) . mouseup ( function ( e ) { var l = $ ( this ) ; l . unbind ( "mouseup" ) ; $ ( ".contextMenu" ) . hide ( ) ; if ( d . button === 2 || f . allowLeft ||
2012-07-14 00:14:24 +00:00
d . ctrlKey && svgedit . browser . isMac ( ) ) { e . stopPropagation ( ) ; if ( m . hasClass ( "disabled" ) || d . altKey ) return false ; var u = e . pageX , w = e . pageY ; e = a . width ( ) - b . width ( ) ; var p = a . height ( ) - b . height ( ) ; if ( u > e - 15 ) u = e - 15 ; if ( w > p - 30 ) w = p - 30 ; n . unbind ( "click" ) ; b . css ( { top : w , left : u } ) . fadeIn ( f . inSpeed ) ; b . find ( "A" ) . mouseover ( function ( ) { b . find ( "LI.hover" ) . removeClass ( "hover" ) ; $ ( this ) . parent ( ) . addClass ( "hover" ) } ) . mouseout ( function ( ) { b . find ( "LI.hover" ) . removeClass ( "hover" ) } ) ; n . keypress ( function ( L ) { switch ( L . keyCode ) { case 38 : if ( b . find ( "LI.hover" ) . length ) { b . find ( "LI.hover" ) . removeClass ( "hover" ) . prevAll ( "LI:not(.disabled)" ) . eq ( 0 ) . addClass ( "hover" ) ;
2012-06-23 19:40:40 +00:00
b . find ( "LI.hover" ) . length || b . find ( "LI:last" ) . addClass ( "hover" ) } else b . find ( "LI:last" ) . addClass ( "hover" ) ; break ; case 40 : if ( b . find ( "LI.hover" ) . length == 0 ) b . find ( "LI:first" ) . addClass ( "hover" ) ; else { b . find ( "LI.hover" ) . removeClass ( "hover" ) . nextAll ( "LI:not(.disabled)" ) . eq ( 0 ) . addClass ( "hover" ) ; b . find ( "LI.hover" ) . length || b . find ( "LI:first" ) . addClass ( "hover" ) } break ; case 13 : b . find ( "LI.hover A" ) . trigger ( "click" ) ; break ; case 27 : n . trigger ( "click" ) } } ) ; b . find ( "A" ) . unbind ( "mouseup" ) ; b . find ( "LI:not(.disabled) A" ) . mouseup ( function ( ) { n . unbind ( "click" ) . unbind ( "keypress" ) ;
2012-07-14 00:14:24 +00:00
$ ( ".contextMenu" ) . hide ( ) ; c && c ( $ ( this ) . attr ( "href" ) . substr ( 1 ) , $ ( l ) , { x : u - o . left , y : w - o . top , docX : u , docY : w } ) ; return false } ) ; setTimeout ( function ( ) { n . click ( function ( ) { n . unbind ( "click" ) . unbind ( "keypress" ) ; b . fadeOut ( f . outSpeed ) ; return false } ) } , 0 ) } } ) } ) ; if ( $ . browser . mozilla ) $ ( "#" + f . menu ) . each ( function ( ) { $ ( this ) . css ( { MozUserSelect : "none" } ) } ) ; else $ . browser . msie ? $ ( "#" + f . menu ) . each ( function ( ) { $ ( this ) . bind ( "selectstart.disableTextSelect" , function ( ) { return false } ) } ) : $ ( "#" + f . menu ) . each ( function ( ) { $ ( this ) . bind ( "mousedown.disableTextSelect" ,
2012-06-23 19:40:40 +00:00
function ( ) { return false } ) } ) ; $ ( m ) . add ( $ ( "UL.contextMenu" ) ) . bind ( "contextmenu" , function ( ) { return false } ) } ) ; return $ ( this ) } , disableContextMenuItems : function ( f ) { if ( f == undefined ) { $ ( this ) . find ( "LI" ) . addClass ( "disabled" ) ; return $ ( this ) } $ ( this ) . each ( function ( ) { if ( f != undefined ) for ( var c = f . split ( "," ) , m = 0 ; m < c . length ; m ++ ) $ ( this ) . find ( 'A[href="' + c [ m ] + '"]' ) . parent ( ) . addClass ( "disabled" ) } ) ; return $ ( this ) } , enableContextMenuItems : function ( f ) { if ( f == undefined ) { $ ( this ) . find ( "LI.disabled" ) . removeClass ( "disabled" ) ; return $ ( this ) } $ ( this ) . each ( function ( ) { if ( f !=
undefined ) for ( var c = f . split ( "," ) , m = 0 ; m < c . length ; m ++ ) $ ( this ) . find ( 'A[href="' + c [ m ] + '"]' ) . parent ( ) . removeClass ( "disabled" ) } ) ; return $ ( this ) } , disableContextMenu : function ( ) { $ ( this ) . each ( function ( ) { $ ( this ) . addClass ( "disabled" ) } ) ; return $ ( this ) } , enableContextMenu : function ( ) { $ ( this ) . each ( function ( ) { $ ( this ) . removeClass ( "disabled" ) } ) ; return $ ( this ) } , destroyContextMenu : function ( ) { $ ( this ) . each ( function ( ) { $ ( this ) . unbind ( "mousedown" ) . unbind ( "mouseup" ) } ) ; return $ ( this ) } } ) } ( jQuery ) ; var svgedit = svgedit || { } ;
2012-07-04 14:42:50 +00:00
( function ( ) { if ( ! svgedit . browser ) svgedit . browser = { } ; var a = ! ! document . createElementNS && ! ! document . createElementNS ( "http://www.w3.org/2000/svg" , "svg" ) . createSVGRect ; svgedit . browser . supportsSvg = function ( ) { return a } ; if ( svgedit . browser . supportsSvg ( ) ) { var n = navigator . userAgent , f = document . createElementNS ( "http://www.w3.org/2000/svg" , "svg" ) , c = ! ! window . opera , m = n . indexOf ( "AppleWebKit" ) >= 0 , o = n . indexOf ( "Gecko/" ) >= 0 , b = n . indexOf ( "MSIE" ) >= 0 , d = n . indexOf ( "Chrome/" ) >= 0 , e = n . indexOf ( "Windows" ) >= 0 , l = n . indexOf ( "Macintosh" ) >=
2012-07-14 00:14:24 +00:00
0 , u = "ontouchstart" in window , w = ! ! f . querySelector , p = ! ! document . evaluate , L = function ( ) { var sa = document . createElementNS ( "http://www.w3.org/2000/svg" , "path" ) ; sa . setAttribute ( "d" , "M0,0 10,10" ) ; var ha = sa . pathSegList ; sa = sa . createSVGPathSegLinetoAbs ( 5 , 5 ) ; try { ha . replaceItem ( sa , 0 ) ; return true } catch ( ca ) { } return false } ( ) , T = function ( ) { var sa = document . createElementNS ( "http://www.w3.org/2000/svg" , "path" ) ; sa . setAttribute ( "d" , "M0,0 10,10" ) ; var ha = sa . pathSegList ; sa = sa . createSVGPathSegLinetoAbs ( 5 , 5 ) ; try { ha . insertItemBefore ( sa ,
2012-07-14 02:04:34 +00:00
0 ) ; return true } catch ( ca ) { } return false } ( ) , N = function ( ) { var sa = document . createElementNS ( "http://www.w3.org/2000/svg" , "svg" ) , ha = document . createElementNS ( "http://www.w3.org/2000/svg" , "svg" ) ; document . documentElement . appendChild ( sa ) ; ha . setAttribute ( "x" , 5 ) ; sa . appendChild ( ha ) ; var ca = document . createElementNS ( "http://www.w3.org/2000/svg" , "text" ) ; ca . textContent = "a" ; ha . appendChild ( ca ) ; ha = ca . getStartPositionOfChar ( 0 ) . x ; document . documentElement . removeChild ( sa ) ; return ha === 0 } ( ) , K = function ( ) { var sa = document . createElementNS ( "http://www.w3.org/2000/svg" ,
2012-07-12 17:01:07 +00:00
"svg" ) ; document . documentElement . appendChild ( sa ) ; var ha = document . createElementNS ( "http://www.w3.org/2000/svg" , "path" ) ; ha . setAttribute ( "d" , "M0,0 C0,0 10,10 10,0" ) ; sa . appendChild ( ha ) ; ha = ha . getBBox ( ) ; document . documentElement . removeChild ( sa ) ; return ha . height > 4 && ha . height < 5 } ( ) , da = function ( ) { var sa = document . createElementNS ( "http://www.w3.org/2000/svg" , "svg" ) ; document . documentElement . appendChild ( sa ) ; var ha = document . createElementNS ( "http://www.w3.org/2000/svg" , "path" ) ; ha . setAttribute ( "d" , "M0,0 10,0" ) ; var ca =
document . createElementNS ( "http://www.w3.org/2000/svg" , "path" ) ; ca . setAttribute ( "d" , "M5,0 15,0" ) ; var ea = document . createElementNS ( "http://www.w3.org/2000/svg" , "g" ) ; ea . appendChild ( ha ) ; ea . appendChild ( ca ) ; sa . appendChild ( ea ) ; ha = ea . getBBox ( ) ; document . documentElement . removeChild ( sa ) ; return ha . width == 15 } ( ) , V = function ( ) { var sa = document . createElementNS ( "http://www.w3.org/2000/svg" , "rect" ) ; sa . setAttribute ( "x" , 0.1 ) ; ( sa = sa . cloneNode ( false ) . getAttribute ( "x" ) . indexOf ( "," ) == - 1 ) || $ . alert ( "NOTE: This version of Opera is known to contain bugs in SVG-edit.\n\t\tPlease upgrade to the <a href='http://opera.com'>latest version</a> in which the problems have been fixed." ) ;
return sa } ( ) , O = function ( ) { var sa = document . createElementNS ( "http://www.w3.org/2000/svg" , "rect" ) ; sa . setAttribute ( "style" , "vector-effect:non-scaling-stroke" ) ; return sa . style . vectorEffect === "non-scaling-stroke" } ( ) , fa = function ( ) { var sa = document . createElementNS ( "http://www.w3.org/2000/svg" , "rect" ) . transform . baseVal , ha = f . createSVGTransform ( ) ; sa . appendItem ( ha ) ; return sa . getItem ( 0 ) == ha } ( ) ; svgedit . browser . isOpera = function ( ) { return c } ; svgedit . browser . isWebkit = function ( ) { return m } ; svgedit . browser . isGecko = function ( ) { return o } ;
2012-07-14 02:04:34 +00:00
svgedit . browser . isIE = function ( ) { return b } ; svgedit . browser . isChrome = function ( ) { return d } ; svgedit . browser . isWindows = function ( ) { return e } ; svgedit . browser . isMac = function ( ) { return l } ; svgedit . browser . isTouch = function ( ) { return u } ; svgedit . browser . supportsSelectors = function ( ) { return w } ; svgedit . browser . supportsXpath = function ( ) { return p } ; svgedit . browser . supportsPathReplaceItem = function ( ) { return L } ; svgedit . browser . supportsPathInsertItemBefore = function ( ) { return T } ; svgedit . browser . supportsPathBBox = function ( ) { return K } ;
2012-06-23 19:40:40 +00:00
svgedit . browser . supportsHVLineContainerBBox = function ( ) { return da } ; svgedit . browser . supportsGoodTextCharPos = function ( ) { return N } ; svgedit . browser . supportsEditableText = function ( ) { return c } ; svgedit . browser . supportsGoodDecimals = function ( ) { return V } ; svgedit . browser . supportsNonScalingStroke = function ( ) { return O } ; svgedit . browser . supportsNativeTransformLists = function ( ) { return fa } } else window . location = "browser-not-supported.html" } ) ( ) ; svgedit = svgedit || { } ;
2012-07-04 14:42:50 +00:00
( function ( ) { if ( ! svgedit . transformlist ) svgedit . transformlist = { } ; var a = document . createElementNS ( "http://www.w3.org/2000/svg" , "svg" ) , n = { } ; svgedit . transformlist . SVGTransformList = function ( f ) { this . _elem = f || null ; this . _xforms = [ ] ; this . _update = function ( ) { var c = "" ; a . createSVGMatrix ( ) ; for ( var m = 0 ; m < this . numberOfItems ; ++ m ) { var o = this . _list . getItem ( m ) ; c = c ; o = o ; var b = o . matrix , d = "" ; switch ( o . type ) { case 1 : d = "matrix(" + [ b . a , b . b , b . c , b . d , b . e , b . f ] . join ( "," ) + ")" ; break ; case 2 : d = "translate(" + b . e + "," + b . f + ")" ; break ; case 3 : d =
b . a == b . d ? "scale(" + b . a + ")" : "scale(" + b . a + "," + b . d + ")" ; break ; case 4 : var e = 0 ; d = 0 ; if ( o . angle != 0 ) { e = 1 - b . a ; d = ( e * b . f + b . b * b . e ) / ( e * e + b . b * b . b ) ; e = ( b . e - b . b * d ) / e } d = "rotate(" + o . angle + " " + e + "," + d + ")" } c = c + ( d + " " ) } this . _elem . setAttribute ( "transform" , c ) } ; this . _list = this ; this . _init = function ( ) { var c = this . _elem . getAttribute ( "transform" ) ; if ( c ) for ( var m = /\s*((scale|matrix|rotate|translate)\s*\(.*?\))\s*,?\s*/ , o = true ; o ; ) { o = c . match ( m ) ; c = c . replace ( m , "" ) ; if ( o && o [ 1 ] ) { var b = o [ 1 ] . split ( /\s*\(/ ) , d = b [ 0 ] ; b = b [ 1 ] . match ( /\s*(.*?)\s*\)/ ) ;
2012-07-14 00:14:24 +00:00
b [ 1 ] = b [ 1 ] . replace ( /(\d)-/g , "$1 -" ) ; var e = b [ 1 ] . split ( /[, ]+/ ) , l = "abcdef" . split ( "" ) , u = a . createSVGMatrix ( ) ; $ . each ( e , function ( L , T ) { e [ L ] = parseFloat ( T ) ; if ( d == "matrix" ) u [ l [ L ] ] = e [ L ] } ) ; b = a . createSVGTransform ( ) ; var w = "set" + d . charAt ( 0 ) . toUpperCase ( ) + d . slice ( 1 ) , p = d == "matrix" ? [ u ] : e ; if ( d == "scale" && p . length == 1 ) p . push ( p [ 0 ] ) ; else if ( d == "translate" && p . length == 1 ) p . push ( 0 ) ; else if ( d == "rotate" && p . length == 1 ) { p . push ( 0 ) ; p . push ( 0 ) } b [ w ] . apply ( b , p ) ; this . _list . appendItem ( b ) } } } ; this . _removeFromOtherLists = function ( c ) { if ( c ) { var m =
2012-07-04 14:42:50 +00:00
false , o ; for ( o in n ) { for ( var b = n [ o ] , d = 0 , e = b . _xforms . length ; d < e ; ++ d ) if ( b . _xforms [ d ] == c ) { m = true ; b . removeItem ( d ) ; break } if ( m ) break } } } ; this . numberOfItems = 0 ; this . clear = function ( ) { this . numberOfItems = 0 ; this . _xforms = [ ] } ; this . initialize = function ( c ) { this . numberOfItems = 1 ; this . _removeFromOtherLists ( c ) ; this . _xforms = [ c ] } ; this . getItem = function ( c ) { if ( c < this . numberOfItems && c >= 0 ) return this . _xforms [ c ] ; throw { code : 1 } ; } ; this . insertItemBefore = function ( c , m ) { var o = null ; if ( m >= 0 ) if ( m < this . numberOfItems ) { this . _removeFromOtherLists ( c ) ;
o = Array ( this . numberOfItems + 1 ) ; for ( var b = 0 ; b < m ; ++ b ) o [ b ] = this . _xforms [ b ] ; o [ b ] = c ; for ( var d = b + 1 ; b < this . numberOfItems ; ++ d , ++ b ) o [ d ] = this . _xforms [ b ] ; this . numberOfItems ++ ; this . _xforms = o ; o = c ; this . _list . _update ( ) } else o = this . _list . appendItem ( c ) ; return o } ; this . replaceItem = function ( c , m ) { var o = null ; if ( m < this . numberOfItems && m >= 0 ) { this . _removeFromOtherLists ( c ) ; o = this . _xforms [ m ] = c ; this . _list . _update ( ) } return o } ; this . removeItem = function ( c ) { if ( c < this . numberOfItems && c >= 0 ) { for ( var m = this . _xforms [ c ] , o = Array ( this . numberOfItems -
1 ) , b = 0 ; b < c ; ++ b ) o [ b ] = this . _xforms [ b ] ; for ( c = b ; c < this . numberOfItems - 1 ; ++ c , ++ b ) o [ c ] = this . _xforms [ b + 1 ] ; this . numberOfItems -- ; this . _xforms = o ; this . _list . _update ( ) ; return m } else throw { code : 1 } ; } ; this . appendItem = function ( c ) { this . _removeFromOtherLists ( c ) ; this . _xforms . push ( c ) ; this . numberOfItems ++ ; this . _list . _update ( ) ; return c } } ; svgedit . transformlist . resetListMap = function ( ) { n = { } } ; svgedit . transformlist . removeElementFromListMap = function ( f ) { f . id && n [ f . id ] && delete n [ f . id ] } ; svgedit . transformlist . getTransformList = function ( f ) { if ( svgedit . browser . supportsNativeTransformLists ( ) ) if ( f . transform ) return f . transform . baseVal ;
2012-06-23 19:40:40 +00:00
else if ( f . gradientTransform ) return f . gradientTransform . baseVal ; else { if ( f . patternTransform ) return f . patternTransform . baseVal } else { var c = f . id ; c || ( c = "temp" ) ; var m = n [ c ] ; if ( ! m || c == "temp" ) { n [ c ] = new svgedit . transformlist . SVGTransformList ( f ) ; n [ c ] . _init ( ) ; m = n [ c ] } return m } return null } } ) ( ) ; svgedit = svgedit || { } ;
( function ( ) { if ( ! svgedit . math ) svgedit . math = { } ; var a = document . createElementNS ( "http://www.w3.org/2000/svg" , "svg" ) ; svgedit . math . transformPoint = function ( n , f , c ) { return { x : c . a * n + c . c * f + c . e , y : c . b * n + c . d * f + c . f } } ; svgedit . math . isIdentity = function ( n ) { return n . a === 1 && n . b === 0 && n . c === 0 && n . d === 1 && n . e === 0 && n . f === 0 } ; svgedit . math . matrixMultiply = function ( ) { for ( var n = arguments , f = n . length , c = n [ f - 1 ] ; f -- > 1 ; ) c = n [ f - 1 ] . multiply ( c ) ; if ( Math . abs ( c . a ) < 1.0 E - 14 ) c . a = 0 ; if ( Math . abs ( c . b ) < 1.0 E - 14 ) c . b = 0 ; if ( Math . abs ( c . c ) < 1.0 E - 14 ) c . c = 0 ; if ( Math . abs ( c . d ) <
2012-07-04 14:42:50 +00:00
1.0 E - 14 ) c . d = 0 ; if ( Math . abs ( c . e ) < 1.0 E - 14 ) c . e = 0 ; if ( Math . abs ( c . f ) < 1.0 E - 14 ) c . f = 0 ; return c } ; svgedit . math . hasMatrixTransform = function ( n ) { if ( ! n ) return false ; for ( var f = n . numberOfItems ; f -- ; ) { var c = n . getItem ( f ) ; if ( c . type == 1 && ! svgedit . math . isIdentity ( c . matrix ) ) return true } return false } ; svgedit . math . transformBox = function ( n , f , c , m , o ) { var b = { x : n , y : f } , d = { x : n + c , y : f } ; c = { x : n + c , y : f + m } ; n = { x : n , y : f + m } ; f = svgedit . math . transformPoint ; b = f ( b . x , b . y , o ) ; var e = m = b . x , l = b . y , u = b . y ; d = f ( d . x , d . y , o ) ; m = Math . min ( m , d . x ) ; e = Math . max ( e , d . x ) ;
l = Math . min ( l , d . y ) ; u = Math . max ( u , d . y ) ; n = f ( n . x , n . y , o ) ; m = Math . min ( m , n . x ) ; e = Math . max ( e , n . x ) ; l = Math . min ( l , n . y ) ; u = Math . max ( u , n . y ) ; c = f ( c . x , c . y , o ) ; m = Math . min ( m , c . x ) ; e = Math . max ( e , c . x ) ; l = Math . min ( l , c . y ) ; u = Math . max ( u , c . y ) ; return { tl : b , tr : d , bl : n , br : c , aabox : { x : m , y : l , width : e - m , height : u - l } } } ; svgedit . math . transformListToTransform = function ( n , f , c ) { if ( n == null ) return a . createSVGTransformFromMatrix ( a . createSVGMatrix ( ) ) ; f = f == undefined ? 0 : f ; c = c == undefined ? n . numberOfItems - 1 : c ; f = parseInt ( f ) ; c = parseInt ( c ) ; if ( f > c ) { var m = c ; c = f ;
f = m } m = a . createSVGMatrix ( ) ; for ( f = f ; f <= c ; ++ f ) { var o = f >= 0 && f < n . numberOfItems ? n . getItem ( f ) . matrix : a . createSVGMatrix ( ) ; m = svgedit . math . matrixMultiply ( m , o ) } return a . createSVGTransformFromMatrix ( m ) } ; svgedit . math . getMatrix = function ( n ) { n = svgedit . transformlist . getTransformList ( n ) ; return svgedit . math . transformListToTransform ( n ) . matrix } ; svgedit . math . snapToAngle = function ( n , f , c , m ) { var o = Math . PI / 4 ; c = c - n ; var b = m - f ; m = Math . sqrt ( c * c + b * b ) ; o = Math . round ( Math . atan2 ( b , c ) / o ) * o ; return { x : n + m * Math . cos ( o ) , y : f + m * Math . sin ( o ) , a : o } } ;
2012-06-23 19:40:40 +00:00
svgedit . math . rectsIntersect = function ( n , f ) { return f . x < n . x + n . width && f . x + f . width > n . x && f . y < n . y + n . height && f . y + f . height > n . y } } ) ( ) ; svgedit = svgedit || { } ;
( function ( ) { if ( ! svgedit . units ) svgedit . units = { } ; var a = [ "x" , "x1" , "cx" , "rx" , "width" ] , n = [ "y" , "y1" , "cy" , "ry" , "height" ] , f = $ . merge ( [ "r" , "radius" ] , a ) ; $ . merge ( f , n ) ; var c , m = { px : 1 } ; svgedit . units . init = function ( b ) { c = b ; b = document . createElementNS ( "http://www.w3.org/2000/svg" , "svg" ) ; document . body . appendChild ( b ) ; var d = document . createElementNS ( "http://www.w3.org/2000/svg" , "rect" ) ; d . setAttribute ( "width" , "1em" ) ; d . setAttribute ( "height" , "1ex" ) ; d . setAttribute ( "x" , "1in" ) ; b . appendChild ( d ) ; d = d . getBBox ( ) ; document . body . removeChild ( b ) ;
b = d . x ; m . em = d . width ; m . ex = d . height ; m [ "in" ] = b ; m . cm = b / 2.54 ; m . mm = b / 25.4 ; m . pt = b / 72 ; m . pc = b / 6 ; m [ "%" ] = 0 } ; svgedit . units . getTypeMap = function ( ) { return m } ; svgedit . units . shortFloat = function ( b ) { var d = c . getRoundDigits ( ) ; if ( isNaN ( b ) ) { if ( $ . isArray ( b ) ) return svgedit . units . shortFloat ( b [ 0 ] ) + "," + svgedit . units . shortFloat ( b [ 1 ] ) } else return + ( + b ) . toFixed ( d ) ; return parseFloat ( b ) . toFixed ( d ) - 0 } ; svgedit . units . convertUnit = function ( b , d ) { d = d || c . getBaseUnit ( ) ; return svgedit . unit . shortFloat ( b / m [ d ] ) } ; svgedit . units . setUnitAttr = function ( b ,
2012-07-14 00:14:24 +00:00
d , e ) { isNaN ( e ) || b . getAttribute ( d ) ; b . setAttribute ( d , e ) } ; var o = { line : [ "x1" , "x2" , "y1" , "y2" ] , circle : [ "cx" , "cy" , "r" ] , ellipse : [ "cx" , "cy" , "rx" , "ry" ] , foreignObject : [ "x" , "y" , "width" , "height" ] , rect : [ "x" , "y" , "width" , "height" ] , image : [ "x" , "y" , "width" , "height" ] , use : [ "x" , "y" , "width" , "height" ] , text : [ "x" , "y" ] } ; svgedit . units . convertAttrs = function ( b ) { var d = b . tagName , e = c . getBaseUnit ( ) ; if ( d = o [ d ] ) for ( var l = d . length , u = 0 ; u < l ; u ++ ) { var w = d [ u ] , p = b . getAttribute ( w ) ; if ( p ) isNaN ( p ) || b . setAttribute ( w , p / m [ e ] + e ) } } ; svgedit . units . convertToNum =
2012-07-04 14:42:50 +00:00
function ( b , d ) { if ( ! isNaN ( d ) ) return d - 0 ; if ( d . substr ( - 1 ) === "%" ) { var e = d . substr ( 0 , d . length - 1 ) / 100 , l = c . getWidth ( ) , u = c . getHeight ( ) ; return a . indexOf ( b ) >= 0 ? e * l : n . indexOf ( b ) >= 0 ? e * u : e * Math . sqrt ( l * l + u * u ) / Math . sqrt ( 2 ) } else { l = d . substr ( - 2 ) ; e = d . substr ( 0 , d . length - 2 ) ; return e * m [ l ] } } ; svgedit . units . isValidUnit = function ( b , d , e ) { var l = false ; if ( f . indexOf ( b ) >= 0 ) if ( isNaN ( d ) ) { d = d . toLowerCase ( ) ; $ . each ( m , function ( p ) { if ( ! l ) if ( RegExp ( "^-?[\\d\\.]+" + p + "$" ) . test ( d ) ) l = true } ) } else l = true ; else if ( b == "id" ) { b = false ; try { var u = c . getElement ( d ) ;
2012-07-14 00:14:24 +00:00
b = u == null || u === e } catch ( w ) { } return b } else l = true ; return l } } ) ( ) ; svgedit = svgedit || { } ;
( function ( ) { function a ( b ) { if ( svgedit . browser . supportsHVLineContainerBBox ( ) ) try { return b . getBBox ( ) } catch ( d ) { } var e = $ . data ( b , "ref" ) , l = null ; if ( e ) { var u = $ ( e ) . children ( ) . clone ( ) . attr ( "visibility" , "hidden" ) ; $ ( o ) . append ( u ) ; l = u . filter ( "line, path" ) } else l = $ ( b ) . find ( "line, path" ) ; var w = false ; if ( l . length ) { l . each ( function ( ) { var p = this . getBBox ( ) ; if ( ! p . width || ! p . height ) w = true } ) ; if ( w ) { b = e ? u : $ ( b ) . children ( ) ; ret = getStrokedBBox ( b ) } else ret = b . getBBox ( ) } else ret = b . getBBox ( ) ; e && u . remove ( ) ; return ret } if ( ! svgedit . utilities ) svgedit . utilities =
2012-07-04 14:42:50 +00:00
{ } ; var n = "a,circle,ellipse,foreignObject,g,image,line,path,polygon,polyline,rect,svg,text,tspan,use" . split ( "," ) , f = null , c = null , m = null , o = null ; svgedit . utilities . init = function ( b ) { f = b ; c = b . getDOMDocument ( ) ; m = b . getDOMContainer ( ) ; o = b . getSVGRoot ( ) } ; svgedit . utilities . toXml = function ( b ) { return $ ( "<p/>" ) . text ( b ) . html ( ) } ; svgedit . utilities . fromXml = function ( b ) { return $ ( "<p/>" ) . html ( b ) . text ( ) } ; svgedit . utilities . encode64 = function ( b ) { b = svgedit . utilities . convertToXMLReferences ( b ) ; if ( window . btoa ) return window . btoa ( b ) ;
2012-07-14 00:14:24 +00:00
var d = Array ( Math . floor ( ( b . length + 2 ) / 3 ) * 4 ) , e , l , u , w , p , L , T = 0 , N = 0 ; do { e = b . charCodeAt ( T ++ ) ; l = b . charCodeAt ( T ++ ) ; u = b . charCodeAt ( T ++ ) ; w = e >> 2 ; e = ( e & 3 ) << 4 | l >> 4 ; p = ( l & 15 ) << 2 | u >> 6 ; L = u & 63 ; if ( isNaN ( l ) ) p = L = 64 ; else if ( isNaN ( u ) ) L = 64 ; d [ N ++ ] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" . charAt ( w ) ; d [ N ++ ] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" . charAt ( e ) ; d [ N ++ ] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" . charAt ( p ) ; d [ N ++ ] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" . charAt ( L ) } while ( T <
b . length ) ; return d . join ( "" ) } ; svgedit . utilities . decode64 = function ( b ) { if ( window . atob ) return window . atob ( b ) ; var d = "" , e , l , u = "" , w , p = "" , L = 0 ; b = b . replace ( /[^A-Za-z0-9\+\/\=]/g , "" ) ; do { e = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" . indexOf ( b . charAt ( L ++ ) ) ; l = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" . indexOf ( b . charAt ( L ++ ) ) ; w = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" . indexOf ( b . charAt ( L ++ ) ) ; p = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" . indexOf ( b . charAt ( L ++ ) ) ;
e = e << 2 | l >> 4 ; l = ( l & 15 ) << 4 | w >> 2 ; u = ( w & 3 ) << 6 | p ; d += String . fromCharCode ( e ) ; if ( w != 64 ) d += String . fromCharCode ( l ) ; if ( p != 64 ) d += String . fromCharCode ( u ) } while ( L < b . length ) ; return unescape ( d ) } ; svgedit . utilities . convertToXMLReferences = function ( b ) { for ( var d = "" , e = 0 ; e < b . length ; e ++ ) { var l = b . charCodeAt ( e ) ; if ( l < 128 ) d += b [ e ] ; else if ( l > 127 ) d += "&#" + l + ";" } return d } ; svgedit . utilities . text2xml = function ( b ) { if ( b . indexOf ( "<svg:svg" ) >= 0 ) b = b . replace ( /<(\/?)svg:/g , "<$1" ) . replace ( "xmlns:svg" , "xmlns" ) ; var d ; try { var e = window . DOMParser ?
2012-06-23 19:40:40 +00:00
new DOMParser : new ActiveXObject ( "Microsoft.XMLDOM" ) ; e . async = false } catch ( l ) { throw Error ( "XML Parser could not be instantiated" ) ; } try { d = e . loadXML ? e . loadXML ( b ) ? e : false : e . parseFromString ( b , "text/xml" ) } catch ( u ) { throw Error ( "Error parsing XML string" ) ; } return d } ; svgedit . utilities . bboxToObj = function ( b ) { return { x : b . x , y : b . y , width : b . width , height : b . height } } ; svgedit . utilities . walkTree = function ( b , d ) { if ( b && b . nodeType == 1 ) { d ( b ) ; for ( var e = b . childNodes . length ; e -- ; ) svgedit . utilities . walkTree ( b . childNodes . item ( e ) , d ) } } ;
svgedit . utilities . walkTreePost = function ( b , d ) { if ( b && b . nodeType == 1 ) { for ( var e = b . childNodes . length ; e -- ; ) svgedit . utilities . walkTree ( b . childNodes . item ( e ) , d ) ; d ( b ) } } ; svgedit . utilities . getUrlFromAttr = function ( b ) { if ( b ) if ( b . indexOf ( 'url("' ) === 0 ) return b . substring ( 5 , b . indexOf ( '"' , 6 ) ) ; else if ( b . indexOf ( "url('" ) === 0 ) return b . substring ( 5 , b . indexOf ( "'" , 6 ) ) ; else if ( b . indexOf ( "url(" ) === 0 ) return b . substring ( 4 , b . indexOf ( ")" ) ) ; return null } ; svgedit . utilities . getHref = function ( b ) { return b . getAttributeNS ( "http://www.w3.org/1999/xlink" ,
"href" ) } ; svgedit . utilities . setHref = function ( b , d ) { b . setAttributeNS ( "http://www.w3.org/1999/xlink" , "xlink:href" , d ) } ; svgedit . utilities . findDefs = function ( b ) { b = f . getSVGContent ( ) . documentElement ; var d = b . getElementsByTagNameNS ( "http://www.w3.org/2000/svg" , "defs" ) ; return d = d . length > 0 ? d [ 0 ] : b . insertBefore ( b . ownerDocument . createElementNS ( "http://www.w3.org/2000/svg" , "defs" ) , b . firstChild . nextSibling ) } ; svgedit . utilities . getPathBBox = function ( b ) { var d = b . pathSegList , e = d . numberOfItems ; b = [ [ ] , [ ] ] ; var l = d . getItem ( 0 ) ,
2012-07-14 02:04:34 +00:00
u = [ l . x , l . y ] ; for ( l = 0 ; l < e ; l ++ ) { var w = d . getItem ( l ) ; if ( typeof w . x != "undefined" ) { b [ 0 ] . push ( u [ 0 ] ) ; b [ 1 ] . push ( u [ 1 ] ) ; if ( w . x1 ) { for ( var p = [ w . x1 , w . y1 ] , L = [ w . x2 , w . y2 ] , T = [ w . x , w . y ] , N = 0 ; N < 2 ; N ++ ) { w = function ( fa ) { return Math . pow ( 1 - fa , 3 ) * u [ N ] + 3 * Math . pow ( 1 - fa , 2 ) * fa * p [ N ] + 3 * ( 1 - fa ) * Math . pow ( fa , 2 ) * L [ N ] + Math . pow ( fa , 3 ) * T [ N ] } ; var K = 6 * u [ N ] - 12 * p [ N ] + 6 * L [ N ] , da = - 3 * u [ N ] + 9 * p [ N ] - 9 * L [ N ] + 3 * T [ N ] , V = 3 * p [ N ] - 3 * u [ N ] ; if ( da == 0 ) { if ( K != 0 ) { K = - V / K ; 0 < K && K < 1 && b [ N ] . push ( w ( K ) ) } } else { V = Math . pow ( K , 2 ) - 4 * V * da ; if ( ! ( V < 0 ) ) { var O = ( - K + Math . sqrt ( V ) ) / ( 2 * da ) ; 0 < O &&
O < 1 && b [ N ] . push ( w ( O ) ) ; K = ( - K - Math . sqrt ( V ) ) / ( 2 * da ) ; 0 < K && K < 1 && b [ N ] . push ( w ( K ) ) } } } u = T } else { b [ 0 ] . push ( w . x ) ; b [ 1 ] . push ( w . y ) } } } d = Math . min . apply ( null , b [ 0 ] ) ; e = Math . max . apply ( null , b [ 0 ] ) - d ; l = Math . min . apply ( null , b [ 1 ] ) ; b = Math . max . apply ( null , b [ 1 ] ) - l ; return { x : d , y : l , width : e , height : b } } ; svgedit . utilities . getBBox = function ( b ) { var d = b || f . geSelectedElements ( ) [ 0 ] ; if ( b . nodeType != 1 ) return null ; b = null ; var e = d . nodeName ; switch ( e ) { case "text" : if ( d . textContent === "" ) { d . textContent = "a" ; b = d . getBBox ( ) ; d . textContent = "" } else try { b = d . getBBox ( ) } catch ( l ) { } break ;
2012-07-14 00:14:24 +00:00
case "path" : if ( svgedit . browser . supportsPathBBox ( ) ) try { b = d . getBBox ( ) } catch ( u ) { } else b = svgedit . utilities . getPathBBox ( d ) ; break ; case "g" : case "a" : b = a ( d ) ; break ; default : if ( e === "use" ) b = a ( d , true ) ; if ( e === "use" ) { b || ( b = d . getBBox ( ) ) ; if ( ! svgedit . browser . isWebkit ( ) ) { e = { } ; e . width = b . width ; e . height = b . height ; e . x = b . x + parseFloat ( d . getAttribute ( "x" ) || 0 ) ; e . y = b . y + parseFloat ( d . getAttribute ( "y" ) || 0 ) ; b = e } } else if ( ~ n . indexOf ( e ) ) try { b = d . getBBox ( ) } catch ( w ) { d = $ ( d ) . closest ( "foreignObject" ) ; if ( d . length ) try { b = d [ 0 ] . getBBox ( ) } catch ( p ) { b =
null } else b = null } } if ( b ) b = svgedit . utilities . bboxToObj ( b ) ; return b } ; svgedit . utilities . getRotationAngle = function ( b , d ) { var e = b || f . getSelectedElements ( ) [ 0 ] ; e = svgedit . transformlist . getTransformList ( e ) ; if ( ! e ) return 0 ; for ( var l = e . numberOfItems , u = 0 ; u < l ; ++ u ) { var w = e . getItem ( u ) ; if ( w . type == 4 ) return d ? w . angle * Math . PI / 180 : w . angle } return 0 } ; svgedit . utilities . getElem = svgedit . browser . supportsSelectors ( ) ? function ( b ) { return o . querySelector ( "#" + b ) } : svgedit . browser . supportsXpath ( ) ? function ( b ) { return c . evaluate ( 'svg:svg[@id="svgroot"]//svg:*[@id="' +
2012-07-04 14:42:50 +00:00
b + '"]' , m , function ( ) { return "http://www.w3.org/2000/svg" } , 9 , null ) . singleNodeValue } : function ( b ) { return $ ( o ) . find ( "[id=" + b + "]" ) [ 0 ] } ; svgedit . utilities . assignAttributes = function ( b , d , e , l ) { e || ( e = 0 ) ; svgedit . browser . isOpera ( ) || o . suspendRedraw ( e ) ; for ( var u in d ) if ( e = u . substr ( 0 , 4 ) === "xml:" ? "http://www.w3.org/XML/1998/namespace" : u . substr ( 0 , 6 ) === "xlink:" ? "http://www.w3.org/1999/xlink" : null ) b . setAttributeNS ( e , u , d [ u ] ) ; else l ? svgedit . units . setUnitAttr ( b , u , d [ u ] ) : b . setAttribute ( u , d [ u ] ) ; svgedit . browser . isOpera ( ) || o . unsuspendRedraw ( null ) } ;
svgedit . utilities . cleanupElement = function ( b ) { var d = o . suspendRedraw ( 60 ) , e = { "fill-opacity" : 1 , "stop-opacity" : 1 , opacity : 1 , stroke : "none" , "stroke-dasharray" : "none" , "stroke-linejoin" : "miter" , "stroke-linecap" : "butt" , "stroke-opacity" : 1 , "stroke-width" : 1 , rx : 0 , ry : 0 } , l ; for ( l in e ) { var u = e [ l ] ; b . getAttribute ( l ) == u && b . removeAttribute ( l ) } o . unsuspendRedraw ( d ) } } ) ( ) ; svgedit = svgedit || { } ;
( function ( ) { if ( ! svgedit . sanitize ) svgedit . sanitize = { } ; var a = { } ; a [ "http://www.w3.org/1999/xlink" ] = "xlink" ; a [ "http://www.w3.org/XML/1998/namespace" ] = "xml" ; a [ "http://www.w3.org/2000/xmlns/" ] = "xmlns" ; a [ "http://svg-edit.googlecode.com" ] = "se" ; a [ "http://www.w3.org/1999/xhtml" ] = "xhtml" ; a [ "http://www.w3.org/1998/Math/MathML" ] = "mathml" ; var n = { } ; $ . each ( a , function ( m , o ) { n [ o ] = m } ) ; var f = { a : [ "class" , "clip-path" , "clip-rule" , "fill" , "fill-opacity" , "fill-rule" , "filter" , "id" , "mask" , "opacity" , "stroke" , "stroke-dasharray" ,
2012-06-23 19:40:40 +00:00
"stroke-dashoffset" , "stroke-linecap" , "stroke-linejoin" , "stroke-miterlimit" , "stroke-opacity" , "stroke-width" , "style" , "systemLanguage" , "transform" , "xlink:href" , "xlink:title" ] , circle : [ "class" , "clip-path" , "clip-rule" , "cx" , "cy" , "fill" , "fill-opacity" , "fill-rule" , "filter" , "id" , "mask" , "opacity" , "r" , "requiredFeatures" , "stroke" , "stroke-dasharray" , "stroke-dashoffset" , "stroke-linecap" , "stroke-linejoin" , "stroke-miterlimit" , "stroke-opacity" , "stroke-width" , "style" , "systemLanguage" , "transform" ] , clipPath : [ "class" ,
"clipPathUnits" , "id" ] , defs : [ ] , style : [ "type" ] , desc : [ ] , ellipse : [ "class" , "clip-path" , "clip-rule" , "cx" , "cy" , "fill" , "fill-opacity" , "fill-rule" , "filter" , "id" , "mask" , "opacity" , "requiredFeatures" , "rx" , "ry" , "stroke" , "stroke-dasharray" , "stroke-dashoffset" , "stroke-linecap" , "stroke-linejoin" , "stroke-miterlimit" , "stroke-opacity" , "stroke-width" , "style" , "systemLanguage" , "transform" ] , feGaussianBlur : [ "class" , "color-interpolation-filters" , "id" , "requiredFeatures" , "stdDeviation" ] , filter : [ "class" , "color-interpolation-filters" ,
"filterRes" , "filterUnits" , "height" , "id" , "primitiveUnits" , "requiredFeatures" , "width" , "x" , "xlink:href" , "y" ] , foreignObject : [ "class" , "font-size" , "height" , "id" , "opacity" , "requiredFeatures" , "style" , "transform" , "width" , "x" , "y" ] , g : [ "class" , "clip-path" , "clip-rule" , "id" , "display" , "fill" , "fill-opacity" , "fill-rule" , "filter" , "mask" , "opacity" , "requiredFeatures" , "stroke" , "stroke-dasharray" , "stroke-dashoffset" , "stroke-linecap" , "stroke-linejoin" , "stroke-miterlimit" , "stroke-opacity" , "stroke-width" , "style" , "systemLanguage" ,
"transform" , "font-family" , "font-size" , "font-style" , "font-weight" , "text-anchor" ] , image : [ "class" , "clip-path" , "clip-rule" , "filter" , "height" , "id" , "mask" , "opacity" , "requiredFeatures" , "style" , "systemLanguage" , "transform" , "width" , "x" , "xlink:href" , "xlink:title" , "y" ] , line : [ "class" , "clip-path" , "clip-rule" , "fill" , "fill-opacity" , "fill-rule" , "filter" , "id" , "marker-end" , "marker-mid" , "marker-start" , "mask" , "opacity" , "requiredFeatures" , "stroke" , "stroke-dasharray" , "stroke-dashoffset" , "stroke-linecap" , "stroke-linejoin" ,
"stroke-miterlimit" , "stroke-opacity" , "stroke-width" , "style" , "systemLanguage" , "transform" , "x1" , "x2" , "y1" , "y2" ] , linearGradient : [ "class" , "id" , "gradientTransform" , "gradientUnits" , "requiredFeatures" , "spreadMethod" , "systemLanguage" , "x1" , "x2" , "xlink:href" , "y1" , "y2" ] , marker : [ "id" , "class" , "markerHeight" , "markerUnits" , "markerWidth" , "orient" , "preserveAspectRatio" , "refX" , "refY" , "systemLanguage" , "viewBox" ] , mask : [ "class" , "height" , "id" , "maskContentUnits" , "maskUnits" , "width" , "x" , "y" ] , metadata : [ "class" , "id" ] , path : [ "class" ,
"clip-path" , "clip-rule" , "d" , "fill" , "fill-opacity" , "fill-rule" , "filter" , "id" , "marker-end" , "marker-mid" , "marker-start" , "mask" , "opacity" , "requiredFeatures" , "stroke" , "stroke-dasharray" , "stroke-dashoffset" , "stroke-linecap" , "stroke-linejoin" , "stroke-miterlimit" , "stroke-opacity" , "stroke-width" , "style" , "systemLanguage" , "transform" ] , pattern : [ "class" , "height" , "id" , "patternContentUnits" , "patternTransform" , "patternUnits" , "requiredFeatures" , "style" , "systemLanguage" , "viewBox" , "width" , "x" , "xlink:href" , "y" ] , polygon : [ "class" ,
"clip-path" , "clip-rule" , "id" , "fill" , "fill-opacity" , "fill-rule" , "filter" , "id" , "class" , "marker-end" , "marker-mid" , "marker-start" , "mask" , "opacity" , "points" , "requiredFeatures" , "stroke" , "stroke-dasharray" , "stroke-dashoffset" , "stroke-linecap" , "stroke-linejoin" , "stroke-miterlimit" , "stroke-opacity" , "stroke-width" , "style" , "systemLanguage" , "transform" ] , polyline : [ "class" , "clip-path" , "clip-rule" , "id" , "fill" , "fill-opacity" , "fill-rule" , "filter" , "marker-end" , "marker-mid" , "marker-start" , "mask" , "opacity" , "points" ,
"requiredFeatures" , "stroke" , "stroke-dasharray" , "stroke-dashoffset" , "stroke-linecap" , "stroke-linejoin" , "stroke-miterlimit" , "stroke-opacity" , "stroke-width" , "style" , "systemLanguage" , "transform" ] , radialGradient : [ "class" , "cx" , "cy" , "fx" , "fy" , "gradientTransform" , "gradientUnits" , "id" , "r" , "requiredFeatures" , "spreadMethod" , "systemLanguage" , "xlink:href" ] , rect : [ "class" , "clip-path" , "clip-rule" , "fill" , "fill-opacity" , "fill-rule" , "filter" , "height" , "id" , "mask" , "opacity" , "requiredFeatures" , "rx" , "ry" , "stroke" , "stroke-dasharray" ,
"stroke-dashoffset" , "stroke-linecap" , "stroke-linejoin" , "stroke-miterlimit" , "stroke-opacity" , "stroke-width" , "style" , "systemLanguage" , "transform" , "width" , "x" , "y" ] , stop : [ "class" , "id" , "offset" , "requiredFeatures" , "stop-color" , "stop-opacity" , "style" , "systemLanguage" ] , svg : [ "class" , "clip-path" , "clip-rule" , "filter" , "id" , "height" , "mask" , "preserveAspectRatio" , "requiredFeatures" , "style" , "systemLanguage" , "viewBox" , "width" , "x" , "xmlns" , "xmlns:se" , "xmlns:xlink" , "y" ] , "switch" : [ "class" , "id" , "requiredFeatures" , "systemLanguage" ] ,
symbol : [ "class" , "fill" , "fill-opacity" , "fill-rule" , "filter" , "font-family" , "font-size" , "font-style" , "font-weight" , "id" , "opacity" , "preserveAspectRatio" , "requiredFeatures" , "stroke" , "stroke-dasharray" , "stroke-dashoffset" , "stroke-linecap" , "stroke-linejoin" , "stroke-miterlimit" , "stroke-opacity" , "stroke-width" , "style" , "systemLanguage" , "transform" , "viewBox" ] , text : [ "class" , "clip-path" , "clip-rule" , "fill" , "fill-opacity" , "fill-rule" , "filter" , "font-family" , "font-size" , "font-style" , "font-weight" , "id" , "mask" , "opacity" ,
"requiredFeatures" , "stroke" , "stroke-dasharray" , "stroke-dashoffset" , "stroke-linecap" , "stroke-linejoin" , "stroke-miterlimit" , "stroke-opacity" , "stroke-width" , "style" , "systemLanguage" , "text-anchor" , "transform" , "x" , "xml:space" , "y" ] , textPath : [ "class" , "id" , "method" , "requiredFeatures" , "spacing" , "startOffset" , "style" , "systemLanguage" , "transform" , "xlink:href" ] , title : [ ] , tspan : [ "class" , "clip-path" , "clip-rule" , "dx" , "dy" , "fill" , "fill-opacity" , "fill-rule" , "filter" , "font-family" , "font-size" , "font-style" , "font-weight" ,
"id" , "mask" , "opacity" , "requiredFeatures" , "rotate" , "stroke" , "stroke-dasharray" , "stroke-dashoffset" , "stroke-linecap" , "stroke-linejoin" , "stroke-miterlimit" , "stroke-opacity" , "stroke-width" , "style" , "systemLanguage" , "text-anchor" , "textLength" , "transform" , "x" , "xml:space" , "y" ] , use : [ "class" , "clip-path" , "clip-rule" , "fill" , "fill-opacity" , "fill-rule" , "filter" , "height" , "id" , "mask" , "stroke" , "stroke-dasharray" , "stroke-dashoffset" , "stroke-linecap" , "stroke-linejoin" , "stroke-miterlimit" , "stroke-opacity" , "stroke-width" ,
"style" , "transform" , "width" , "x" , "xlink:href" , "y" ] , annotation : [ "encoding" ] , "annotation-xml" : [ "encoding" ] , maction : [ "actiontype" , "other" , "selection" ] , math : [ "class" , "id" , "display" , "xmlns" ] , menclose : [ "notation" ] , merror : [ ] , mfrac : [ "linethickness" ] , mi : [ "mathvariant" ] , mmultiscripts : [ ] , mn : [ ] , mo : [ "fence" , "lspace" , "maxsize" , "minsize" , "rspace" , "stretchy" ] , mover : [ ] , mpadded : [ "lspace" , "width" , "height" , "depth" , "voffset" ] , mphantom : [ ] , mprescripts : [ ] , mroot : [ ] , mrow : [ "xlink:href" , "xlink:type" , "xmlns:xlink" ] , mspace : [ "depth" ,
2012-07-04 14:42:50 +00:00
"height" , "width" ] , msqrt : [ ] , mstyle : [ "displaystyle" , "mathbackground" , "mathcolor" , "mathvariant" , "scriptlevel" ] , msub : [ ] , msubsup : [ ] , msup : [ ] , mtable : [ "align" , "columnalign" , "columnlines" , "columnspacing" , "displaystyle" , "equalcolumns" , "equalrows" , "frame" , "rowalign" , "rowlines" , "rowspacing" , "width" ] , mtd : [ "columnalign" , "columnspan" , "rowalign" , "rowspan" ] , mtext : [ ] , mtr : [ "columnalign" , "rowalign" ] , munder : [ ] , munderover : [ ] , none : [ ] , semantics : [ ] } , c = { } ; $ . each ( f , function ( m , o ) { var b = { } ; $ . each ( o , function ( d , e ) { if ( e . indexOf ( ":" ) >=
2012-07-14 00:14:24 +00:00
0 ) { var l = e . split ( ":" ) ; b [ l [ 1 ] ] = n [ l [ 0 ] ] } else b [ e ] = e == "xmlns" ? "http://www.w3.org/2000/xmlns/" : null } ) ; c [ m ] = b } ) ; svgedit . sanitize . getNSMap = function ( ) { return a } ; svgedit . sanitize . sanitizeSvg = function ( m ) { if ( m . nodeType == 3 ) { m . nodeValue = m . nodeValue . replace ( /^\s+|\s+$/g , "" ) ; m . nodeValue . length || m . parentNode . removeChild ( m ) } if ( m . nodeType == 1 ) { var o = m . parentNode ; if ( m . ownerDocument && o ) { var b = f [ m . nodeName ] , d = c [ m . nodeName ] ; if ( b != undefined ) { for ( var e = [ ] , l = m . attributes . length ; l -- ; ) { var u = m . attributes . item ( l ) , w = u . nodeName ,
p = u . localName , L = u . namespaceURI ; if ( ! ( d . hasOwnProperty ( p ) && L == d [ p ] && L != "http://www.w3.org/2000/xmlns/" ) && ! ( L == "http://www.w3.org/2000/xmlns/" && a [ u . nodeValue ] ) ) { w . indexOf ( "se:" ) == 0 && e . push ( [ w , u . nodeValue ] ) ; m . removeAttributeNS ( L , p ) } if ( svgedit . browser . isGecko ( ) ) switch ( w ) { case "transform" : case "gradientTransform" : case "patternTransform" : p = u . nodeValue . replace ( /(\d)-/g , "$1 -" ) ; m . setAttribute ( w , p ) } if ( w == "style" ) { u = u . nodeValue . split ( ";" ) ; for ( w = u . length ; w -- ; ) { p = u [ w ] . split ( ":" ) ; b . indexOf ( p [ 0 ] ) >= 0 && m . setAttribute ( p [ 0 ] ,
2012-07-04 14:42:50 +00:00
p [ 1 ] ) } m . removeAttribute ( "style" ) } } $ . each ( e , function ( T , N ) { m . setAttributeNS ( "http://svg-edit.googlecode.com" , N [ 0 ] , N [ 1 ] ) } ) ; if ( ( l = svgedit . utilities . getHref ( m ) ) && [ "filter" , "linearGradient" , "pattern" , "radialGradient" , "textPath" , "use" ] . indexOf ( m . nodeName ) >= 0 ) if ( l [ 0 ] != "#" ) { svgedit . utilities . setHref ( m , "" ) ; m . removeAttributeNS ( "http://www.w3.org/1999/xlink" , "href" ) } if ( m . nodeName == "use" && ! svgedit . utilities . getHref ( m ) ) o . removeChild ( m ) ; else { $ . each ( [ "clip-path" , "fill" , "filter" , "marker-end" , "marker-mid" , "marker-start" ,
2012-07-14 02:04:34 +00:00
"mask" , "stroke" ] , function ( T , N ) { var K = m . getAttribute ( N ) ; if ( K ) if ( ( K = svgedit . utilities . getUrlFromAttr ( K ) ) && K [ 0 ] !== "#" ) { m . setAttribute ( N , "" ) ; m . removeAttribute ( N ) } } ) ; for ( l = m . childNodes . length ; l -- ; ) svgedit . sanitize . sanitizeSvg ( m . childNodes . item ( l ) ) } } else { for ( b = [ ] ; m . hasChildNodes ( ) ; ) b . push ( o . insertBefore ( m . firstChild , m ) ) ; o . removeChild ( m ) ; for ( l = b . length ; l -- ; ) svgedit . sanitize . sanitizeSvg ( b [ l ] ) } } } } } ) ( ) ; svgedit = svgedit || { } ;
2012-06-23 19:40:40 +00:00
( function ( ) { if ( ! svgedit . history ) svgedit . history = { } ; svgedit . history . HistoryEventTypes = { BEFORE _APPLY : "before_apply" , AFTER _APPLY : "after_apply" , BEFORE _UNAPPLY : "before_unapply" , AFTER _UNAPPLY : "after_unapply" } ; svgedit . history . MoveElementCommand = function ( a , n , f , c ) { this . elem = a ; this . text = c ? "Move " + a . tagName + " to " + c : "Move " + a . tagName ; this . oldNextSibling = n ; this . oldParent = f ; this . newNextSibling = a . nextSibling ; this . newParent = a . parentNode } ; svgedit . history . MoveElementCommand . type = function ( ) { return "svgedit.history.MoveElementCommand" } ; svgedit . history . MoveElementCommand . prototype . type =
svgedit . history . MoveElementCommand . type ; svgedit . history . MoveElementCommand . prototype . getText = function ( ) { return this . text } ; svgedit . history . MoveElementCommand . prototype . apply = function ( a ) { a && a . handleHistoryEvent ( svgedit . history . HistoryEventTypes . BEFORE _APPLY , this ) ; this . elem = this . newParent . insertBefore ( this . elem , this . newNextSibling ) ; a && a . handleHistoryEvent ( svgedit . history . HistoryEventTypes . AFTER _APPLY , this ) } ; svgedit . history . MoveElementCommand . prototype . unapply = function ( a ) { a && a . handleHistoryEvent ( svgedit . history . HistoryEventTypes . BEFORE _UNAPPLY ,
this ) ; this . elem = this . oldParent . insertBefore ( this . elem , this . oldNextSibling ) ; a && a . handleHistoryEvent ( svgedit . history . HistoryEventTypes . AFTER _UNAPPLY , this ) } ; svgedit . history . MoveElementCommand . prototype . elements = function ( ) { return [ this . elem ] } ; svgedit . history . InsertElementCommand = function ( a , n ) { this . elem = a ; this . text = n || "Create " + a . tagName ; this . parent = a . parentNode ; this . nextSibling = this . elem . nextSibling } ; svgedit . history . InsertElementCommand . type = function ( ) { return "svgedit.history.InsertElementCommand" } ; svgedit . history . InsertElementCommand . prototype . type =
svgedit . history . InsertElementCommand . type ; svgedit . history . InsertElementCommand . prototype . getText = function ( ) { return this . text } ; svgedit . history . InsertElementCommand . prototype . apply = function ( a ) { a && a . handleHistoryEvent ( svgedit . history . HistoryEventTypes . BEFORE _APPLY , this ) ; this . elem = this . parent . insertBefore ( this . elem , this . nextSibling ) ; a && a . handleHistoryEvent ( svgedit . history . HistoryEventTypes . AFTER _APPLY , this ) } ; svgedit . history . InsertElementCommand . prototype . unapply = function ( a ) { a && a . handleHistoryEvent ( svgedit . history . HistoryEventTypes . BEFORE _UNAPPLY ,
this ) ; this . parent = this . elem . parentNode ; this . elem = this . elem . parentNode . removeChild ( this . elem ) ; a && a . handleHistoryEvent ( svgedit . history . HistoryEventTypes . AFTER _UNAPPLY , this ) } ; svgedit . history . InsertElementCommand . prototype . elements = function ( ) { return [ this . elem ] } ; svgedit . history . RemoveElementCommand = function ( a , n , f , c ) { this . elem = a ; this . text = c || "Delete " + a . tagName ; this . nextSibling = n ; this . parent = f ; svgedit . transformlist . removeElementFromListMap ( a ) } ; svgedit . history . RemoveElementCommand . type = function ( ) { return "svgedit.history.RemoveElementCommand" } ;
svgedit . history . RemoveElementCommand . prototype . type = svgedit . history . RemoveElementCommand . type ; svgedit . history . RemoveElementCommand . prototype . getText = function ( ) { return this . text } ; svgedit . history . RemoveElementCommand . prototype . apply = function ( a ) { a && a . handleHistoryEvent ( svgedit . history . HistoryEventTypes . BEFORE _APPLY , this ) ; svgedit . transformlist . removeElementFromListMap ( this . elem ) ; this . parent = this . elem . parentNode ; this . elem = this . parent . removeChild ( this . elem ) ; a && a . handleHistoryEvent ( svgedit . history . HistoryEventTypes . AFTER _APPLY ,
this ) } ; svgedit . history . RemoveElementCommand . prototype . unapply = function ( a ) { a && a . handleHistoryEvent ( svgedit . history . HistoryEventTypes . BEFORE _UNAPPLY , this ) ; svgedit . transformlist . removeElementFromListMap ( this . elem ) ; this . nextSibling == null && window . console && console . log ( "Error: reference element was lost" ) ; this . parent . insertBefore ( this . elem , this . nextSibling ) ; a && a . handleHistoryEvent ( svgedit . history . HistoryEventTypes . AFTER _UNAPPLY , this ) } ; svgedit . history . RemoveElementCommand . prototype . elements = function ( ) { return [ this . elem ] } ;
svgedit . history . ChangeElementCommand = function ( a , n , f ) { this . elem = a ; this . text = f ? "Change " + a . tagName + " " + f : "Change " + a . tagName ; this . newValues = { } ; this . oldValues = n ; for ( var c in n ) this . newValues [ c ] = c == "#text" ? a . textContent : c == "#href" ? svgedit . utilities . getHref ( a ) : a . getAttribute ( c ) } ; svgedit . history . ChangeElementCommand . type = function ( ) { return "svgedit.history.ChangeElementCommand" } ; svgedit . history . ChangeElementCommand . prototype . type = svgedit . history . ChangeElementCommand . type ; svgedit . history . ChangeElementCommand . prototype . getText =
function ( ) { return this . text } ; svgedit . history . ChangeElementCommand . prototype . apply = function ( a ) { a && a . handleHistoryEvent ( svgedit . history . HistoryEventTypes . BEFORE _APPLY , this ) ; var n = false , f ; for ( f in this . newValues ) { if ( this . newValues [ f ] ) if ( f == "#text" ) this . elem . textContent = this . newValues [ f ] ; else f == "#href" ? svgedit . utilities . setHref ( this . elem , this . newValues [ f ] ) : this . elem . setAttribute ( f , this . newValues [ f ] ) ; else if ( f == "#text" ) this . elem . textContent = "" ; else { this . elem . setAttribute ( f , "" ) ; this . elem . removeAttribute ( f ) } if ( f ==
"transform" ) n = true } if ( ! n ) if ( n = svgedit . utilities . getRotationAngle ( this . elem ) ) { f = elem . getBBox ( ) ; n = [ "rotate(" , n , " " , f . x + f . width / 2 , "," , f . y + f . height / 2 , ")" ] . join ( "" ) ; n != elem . getAttribute ( "transform" ) && elem . setAttribute ( "transform" , n ) } a && a . handleHistoryEvent ( svgedit . history . HistoryEventTypes . AFTER _APPLY , this ) ; return true } ; svgedit . history . ChangeElementCommand . prototype . unapply = function ( a ) { a && a . handleHistoryEvent ( svgedit . history . HistoryEventTypes . BEFORE _UNAPPLY , this ) ; var n = false , f ; for ( f in this . oldValues ) { if ( this . oldValues [ f ] ) if ( f ==
"#text" ) this . elem . textContent = this . oldValues [ f ] ; else f == "#href" ? svgedit . utilities . setHref ( this . elem , this . oldValues [ f ] ) : this . elem . setAttribute ( f , this . oldValues [ f ] ) ; else if ( f == "#text" ) this . elem . textContent = "" ; else this . elem . removeAttribute ( f ) ; if ( f == "transform" ) n = true } if ( ! n ) if ( n = svgedit . utilities . getRotationAngle ( this . elem ) ) { f = elem . getBBox ( ) ; n = [ "rotate(" , n , " " , f . x + f . width / 2 , "," , f . y + f . height / 2 , ")" ] . join ( "" ) ; n != elem . getAttribute ( "transform" ) && elem . setAttribute ( "transform" , n ) } svgedit . transformlist . removeElementFromListMap ( this . elem ) ;
a && a . handleHistoryEvent ( svgedit . history . HistoryEventTypes . AFTER _UNAPPLY , this ) ; return true } ; svgedit . history . ChangeElementCommand . prototype . elements = function ( ) { return [ this . elem ] } ; svgedit . history . BatchCommand = function ( a ) { this . text = a || "Batch Command" ; this . stack = [ ] } ; svgedit . history . BatchCommand . type = function ( ) { return "svgedit.history.BatchCommand" } ; svgedit . history . BatchCommand . prototype . type = svgedit . history . BatchCommand . type ; svgedit . history . BatchCommand . prototype . getText = function ( ) { return this . text } ; svgedit . history . BatchCommand . prototype . apply =
function ( a ) { a && a . handleHistoryEvent ( svgedit . history . HistoryEventTypes . BEFORE _APPLY , this ) ; for ( var n = this . stack . length , f = 0 ; f < n ; ++ f ) this . stack [ f ] . apply ( a ) ; a && a . handleHistoryEvent ( svgedit . history . HistoryEventTypes . AFTER _APPLY , this ) } ; svgedit . history . BatchCommand . prototype . unapply = function ( a ) { a && a . handleHistoryEvent ( svgedit . history . HistoryEventTypes . BEFORE _UNAPPLY , this ) ; for ( var n = this . stack . length - 1 ; n >= 0 ; n -- ) this . stack [ n ] . unapply ( a ) ; a && a . handleHistoryEvent ( svgedit . history . HistoryEventTypes . AFTER _UNAPPLY ,
this ) } ; svgedit . history . BatchCommand . prototype . elements = function ( ) { for ( var a = [ ] , n = this . stack . length ; n -- ; ) for ( var f = this . stack [ n ] . elements ( ) , c = f . length ; c -- ; ) a . indexOf ( f [ c ] ) == - 1 && a . push ( f [ c ] ) ; return a } ; svgedit . history . BatchCommand . prototype . addSubCommand = function ( a ) { this . stack . push ( a ) } ; svgedit . history . BatchCommand . prototype . isEmpty = function ( ) { return this . stack . length == 0 } ; svgedit . history . UndoManager = function ( a ) { this . handler _ = a || null ; this . undoStackPointer = 0 ; this . undoStack = [ ] ; this . undoChangeStackPointer =
- 1 ; this . undoableChangeStack = [ ] } ; svgedit . history . UndoManager . prototype . resetUndoStack = function ( ) { this . undoStack = [ ] ; this . undoStackPointer = 0 } ; svgedit . history . UndoManager . prototype . getUndoStackSize = function ( ) { return this . undoStackPointer } ; svgedit . history . UndoManager . prototype . getRedoStackSize = function ( ) { return this . undoStack . length - this . undoStackPointer } ; svgedit . history . UndoManager . prototype . getNextUndoCommandText = function ( ) { return this . undoStackPointer > 0 ? this . undoStack [ this . undoStackPointer - 1 ] . getText ( ) :
"" } ; svgedit . history . UndoManager . prototype . getNextRedoCommandText = function ( ) { return this . undoStackPointer < this . undoStack . length ? this . undoStack [ this . undoStackPointer ] . getText ( ) : "" } ; svgedit . history . UndoManager . prototype . undo = function ( ) { this . undoStackPointer > 0 && this . undoStack [ -- this . undoStackPointer ] . unapply ( this . handler _ ) } ; svgedit . history . UndoManager . prototype . redo = function ( ) { this . undoStackPointer < this . undoStack . length && this . undoStack . length > 0 && this . undoStack [ this . undoStackPointer ++ ] . apply ( this . handler _ ) } ;
2012-07-04 14:42:50 +00:00
svgedit . history . UndoManager . prototype . addCommandToHistory = function ( a ) { if ( this . undoStackPointer < this . undoStack . length && this . undoStack . length > 0 ) this . undoStack = this . undoStack . splice ( 0 , this . undoStackPointer ) ; this . undoStack . push ( a ) ; this . undoStackPointer = this . undoStack . length } ; svgedit . history . UndoManager . prototype . beginUndoableChange = function ( a , n ) { for ( var f = ++ this . undoChangeStackPointer , c = n . length , m = Array ( c ) , o = Array ( c ) ; c -- ; ) { var b = n [ c ] ; if ( b != null ) { o [ c ] = b ; m [ c ] = b . getAttribute ( a ) } } this . undoableChangeStack [ f ] =
{ attrName : a , oldValues : m , elements : o } } ; svgedit . history . UndoManager . prototype . finishUndoableChange = function ( ) { for ( var a = this . undoChangeStackPointer -- , n = this . undoableChangeStack [ a ] , f = n . elements . length , c = n . attrName , m = new svgedit . history . BatchCommand ( "Change " + c ) ; f -- ; ) { var o = n . elements [ f ] ; if ( o != null ) { var b = { } ; b [ c ] = n . oldValues [ f ] ; b [ c ] != o . getAttribute ( c ) && m . addSubCommand ( new svgedit . history . ChangeElementCommand ( o , b , c ) ) } } this . undoableChangeStack [ a ] = null ; return m } } ) ( ) ; svgedit = svgedit || { } ;
2012-06-27 18:18:46 +00:00
( function ( ) { if ( ! svgedit . select ) svgedit . select = { } ; var a , n , f ; svgedit . select . Selector = function ( c , m ) { this . id = c ; this . selectedElement = m ; this . locked = true ; this . selectorGroup = a . createSVGElement ( { element : "g" , attr : { id : "selectorGroup" + this . id } } ) ; this . selectorRect = this . selectorGroup . appendChild ( a . createSVGElement ( { element : "path" , attr : { id : "selectedBox" + this . id , fill : "none" , stroke : "#4F80FF" , "stroke-width" : "1" , "shape-rendering" : "crispEdges" , style : "pointer-events:none" } } ) ) ; this . gripCoords = { nw : null , n : null , ne : null , e : null ,
2012-07-04 14:42:50 +00:00
se : null , s : null , sw : null , w : null } ; this . reset ( this . selectedElement ) } ; svgedit . select . Selector . prototype . reset = function ( c ) { this . locked = true ; this . selectedElement = c ; this . resize ( ) ; this . selectorGroup . setAttribute ( "display" , "inline" ) } ; svgedit . select . Selector . prototype . updateGripCursors = function ( c ) { var m = [ ] ; c = Math . round ( c / 45 ) ; if ( c < 0 ) c += 8 ; for ( var o in f . selectorGrips ) m . push ( o ) ; for ( ; c > 0 ; ) { m . push ( m . shift ( ) ) ; c -- } c = 0 ; for ( o in f . selectorGrips ) { f . selectorGrips [ o ] . setAttribute ( "style" , "cursor:" + m [ c ] + "-resize" ) ; c ++ } } ;
svgedit . select . Selector . prototype . showGrips = function ( c ) { f . selectorGripsGroup . setAttribute ( "display" , c ? "inline" : "none" ) ; var m = this . selectedElement ; this . hasGrips = c ; if ( m && c ) { this . selectorGroup . appendChild ( f . selectorGripsGroup ) ; this . updateGripCursors ( svgedit . utilities . getRotationAngle ( m ) ) } } ; svgedit . select . Selector . prototype . resize = function ( ) { var c = this . selectorRect , m = f , o = m . selectorGrips , b = this . selectedElement , d = b . getAttribute ( "stroke-width" ) , e = a . currentZoom ( ) , l = 1 / e ; if ( b . getAttribute ( "stroke" ) !== "none" &&
2012-07-14 00:14:24 +00:00
! isNaN ( d ) ) l += d / 2 ; var u = b . tagName ; if ( u === "text" ) l += 2 / e ; d = svgedit . transformlist . getTransformList ( b ) ; d = svgedit . math . transformListToTransform ( d ) . matrix ; d . e *= e ; d . f *= e ; var w = svgedit . utilities . getBBox ( b ) ; if ( u === "g" && ! $ . data ( b , "gsvg" ) ) if ( u = a . getStrokedBBox ( b . childNodes ) ) w = u ; u = w . x ; var p = w . y , L = w . width ; w = w . height ; l *= e ; e = svgedit . math . transformBox ( u * e , p * e , L * e , w * e , d ) ; d = e . aabox ; u = d . x - l ; p = d . y - l ; L = d . width + l * 2 ; var T = d . height + l * 2 ; d = u + L / 2 ; w = p + T / 2 ; if ( b = svgedit . utilities . getRotationAngle ( b ) ) { u = a . svgRoot ( ) . createSVGTransform ( ) ;
2012-07-14 02:04:34 +00:00
u . setRotate ( - b , d , w ) ; u = u . matrix ; e . tl = svgedit . math . transformPoint ( e . tl . x , e . tl . y , u ) ; e . tr = svgedit . math . transformPoint ( e . tr . x , e . tr . y , u ) ; e . bl = svgedit . math . transformPoint ( e . bl . x , e . bl . y , u ) ; e . br = svgedit . math . transformPoint ( e . br . x , e . br . y , u ) ; u = e . tl ; L = u . x ; T = u . y ; var N = u . x , K = u . y ; u = Math . min ; p = Math . max ; L = u ( L , u ( e . tr . x , u ( e . bl . x , e . br . x ) ) ) - l ; T = u ( T , u ( e . tr . y , u ( e . bl . y , e . br . y ) ) ) - l ; N = p ( N , p ( e . tr . x , p ( e . bl . x , e . br . x ) ) ) + l ; K = p ( K , p ( e . tr . y , p ( e . bl . y , e . br . y ) ) ) + l ; u = L ; p = T ; L = N - L ; T = K - T } l = a . svgRoot ( ) . suspendRedraw ( 100 ) ; c . setAttribute ( "d" ,
2012-07-14 00:14:24 +00:00
"M" + u + "," + p + " L" + ( u + L ) + "," + p + " " + ( u + L ) + "," + ( p + T ) + " " + u + "," + ( p + T ) + "z" ) ; this . selectorGroup . setAttribute ( "transform" , b ? "rotate(" + [ b , d , w ] . join ( "," ) + ")" : "" ) ; u -= 3.5 ; p -= 3.5 ; this . gripCoords = { nw : [ u , p ] , ne : [ u + L , p ] , sw : [ u , p + T ] , se : [ u + L , p + T ] , n : [ u + L / 2 , p ] , w : [ u , p + T / 2 ] , e : [ u + L , p + T / 2 ] , s : [ u + L / 2 , p + T ] } ; for ( var da in this . gripCoords ) { c = this . gripCoords [ da ] ; o [ da ] . setAttribute ( "x" , c [ 0 ] ) ; o [ da ] . setAttribute ( "y" , c [ 1 ] ) } this . rotateCoords = { nw : [ u , p ] , ne : [ u + L + 8 , p ] , sw : [ u , p + T + 8 ] , se : [ u + L + 8 , p + T + 8 ] } ; for ( da in this . rotateCoords ) { c = this . rotateCoords [ da ] ;
2012-06-27 18:18:46 +00:00
m . rotateGrips [ da ] . setAttribute ( "cx" , c [ 0 ] ) ; m . rotateGrips [ da ] . setAttribute ( "cy" , c [ 1 ] ) } a . svgRoot ( ) . unsuspendRedraw ( l ) } ; svgedit . select . SelectorManager = function ( ) { this . rubberBandBox = this . selectorParentGroup = null ; this . selectors = [ ] ; this . selectorMap = { } ; this . selectorGrips = { nw : null , n : null , ne : null , e : null , se : null , s : null , sw : null , w : null } ; this . selectorGripsGroup = null ; this . rotateGrips = { nw : null , ne : null , se : null , sw : null } ; this . initGroup ( ) } ; svgedit . select . SelectorManager . prototype . initGroup = function ( ) { this . selectorParentGroup &&
this . selectorParentGroup . parentNode && this . selectorParentGroup . parentNode . removeChild ( this . selectorParentGroup ) ; this . selectorParentGroup = a . createSVGElement ( { element : "g" , attr : { id : "selectorParentGroup" } } ) ; this . selectorGripsGroup = a . createSVGElement ( { element : "g" , attr : { display : "none" } } ) ; this . selectorParentGroup . appendChild ( this . selectorGripsGroup ) ; a . svgRoot ( ) . appendChild ( this . selectorParentGroup ) ; this . selectorMap = { } ; this . selectors = [ ] ; this . rubberBandBox = null ; for ( var c in this . rotateGrips ) { var m = a . createSVGElement ( { element : "circle" ,
attr : { id : "selectorGrip_rotate_" + c , fill : "transparent" , r : 8 , stroke : "transparent" , "stroke-width" : 0 , style : "cursor:url(" + n . imgPath + "rotate.png) 12 12, auto;" } } ) ; $ . data ( m , "dir" , c ) ; $ . data ( m , "type" , "rotate" ) ; this . rotateGrips [ c ] = this . selectorGripsGroup . appendChild ( m ) } for ( c in this . selectorGrips ) { m = a . createSVGElement ( { element : "rect" , attr : { id : "selectorGrip_resize_" + c , width : 7 , height : 7 , fill : "#4F80FF" , stroke : "transparent" , "stroke-width" : 2 , style : "cursor:" + c + "-resize" , "pointer-events" : "all" } } ) ; $ . data ( m , "dir" , c ) ; $ . data ( m ,
"type" , "resize" ) ; this . selectorGrips [ c ] = this . selectorGripsGroup . appendChild ( m ) } if ( ! $ ( "#canvasBackground" ) . length ) { c = n . dimensions ; c = a . createSVGElement ( { element : "svg" , attr : { id : "canvasBackground" , width : c [ 0 ] , height : c [ 1 ] , x : 0 , y : 0 , overflow : svgedit . browser . isWebkit ( ) ? "none" : "visible" , style : "pointer-events:none" } } ) ; m = a . createSVGElement ( { element : "rect" , attr : { width : "100%" , height : "100%" , x : 0 , y : 0 , "stroke-width" : 1 , stroke : "#000" , fill : "#FFF" , style : "pointer-events:none" } } ) ; c . appendChild ( m ) ; a . svgRoot ( ) . insertBefore ( c ,
2012-07-04 14:42:50 +00:00
a . svgContent ( ) ) } } ; svgedit . select . SelectorManager . prototype . requestSelector = function ( c ) { if ( c == null ) return null ; var m = this . selectors . length ; if ( typeof this . selectorMap [ c . id ] == "object" ) { this . selectorMap [ c . id ] . locked = true ; return this . selectorMap [ c . id ] } for ( var o = 0 ; o < m ; ++ o ) if ( this . selectors [ o ] && ! this . selectors [ o ] . locked ) { this . selectors [ o ] . locked = true ; this . selectors [ o ] . reset ( c ) ; this . selectorMap [ c . id ] = this . selectors [ o ] ; return this . selectors [ o ] } this . selectors [ m ] = new svgedit . select . Selector ( m , c ) ; this . selectorParentGroup . appendChild ( this . selectors [ m ] . selectorGroup ) ;
this . selectorMap [ c . id ] = this . selectors [ m ] ; return this . selectors [ m ] } ; svgedit . select . SelectorManager . prototype . releaseSelector = function ( c ) { if ( c != null ) for ( var m = this . selectors . length , o = this . selectorMap [ c . id ] , b = 0 ; b < m ; ++ b ) if ( this . selectors [ b ] && this . selectors [ b ] == o ) { o . locked == false && console . log ( "WARNING! selector was released but was already unlocked" ) ; delete this . selectorMap [ c . id ] ; o . locked = false ; o . selectedElement = null ; o . showGrips ( false ) ; try { o . selectorGroup . setAttribute ( "display" , "none" ) } catch ( d ) { } break } } ;
2012-06-27 18:18:46 +00:00
svgedit . select . SelectorManager . prototype . getRubberBandBox = function ( ) { if ( ! this . rubberBandBox ) this . rubberBandBox = this . selectorParentGroup . appendChild ( a . createSVGElement ( { element : "rect" , attr : { id : "selectorRubberBand" , fill : "transparent" , stroke : "#666" , "stroke-width" : 1 , "stroke-dasharray" : "3,2" , display : "none" , style : "pointer-events:none" } } ) ) ; return this . rubberBandBox } ; svgedit . select . init = function ( c , m ) { n = c ; a = m ; f = new svgedit . select . SelectorManager } ; svgedit . select . getSelectorManager = function ( ) { return f } } ) ( ) ; svgedit = svgedit || { } ;
2012-06-23 19:40:40 +00:00
( function ( ) { if ( ! svgedit . draw ) svgedit . draw = { } ; var a = "a,circle,ellipse,foreignObject,g,image,line,path,polygon,polyline,rect,svg,text,tspan,use" . split ( "," ) , n = { LET _DOCUMENT _DECIDE : 0 , ALWAYS _RANDOMIZE : 1 , NEVER _RANDOMIZE : 2 } , f = n . LET _DOCUMENT _DECIDE ; svgedit . draw . Layer = function ( c , m ) { this . name _ = c ; this . group _ = m } ; svgedit . draw . Layer . prototype . getName = function ( ) { return this . name _ } ; svgedit . draw . Layer . prototype . getGroup = function ( ) { return this . group _ } ; svgedit . draw . randomizeIds = function ( c , m ) { f = c == false ? n . NEVER _RANDOMIZE :
n . ALWAYS _RANDOMIZE ; if ( f == n . ALWAYS _RANDOMIZE && ! m . getNonce ( ) ) m . setNonce ( Math . floor ( Math . random ( ) * 100001 ) ) ; else f == n . NEVER _RANDOMIZE && m . getNonce ( ) && m . clearNonce ( ) } ; svgedit . draw . Drawing = function ( c , m ) { if ( ! c || ! c . tagName || ! c . namespaceURI || c . tagName != "svg" || c . namespaceURI != "http://www.w3.org/2000/svg" ) throw "Error: svgedit.draw.Drawing instance initialized without a <svg> element" ; this . svgElem _ = c ; this . obj _num = 0 ; this . idPrefix = m || "svg_" ; this . releasedNums = [ ] ; this . all _layers = [ ] ; this . current _layer = null ; this . nonce _ =
2012-07-04 14:42:50 +00:00
"" ; var o = this . svgElem _ . getAttributeNS ( "http://svg-edit.googlecode.com" , "nonce" ) ; if ( o && f != n . NEVER _RANDOMIZE ) this . nonce _ = o ; else f == n . ALWAYS _RANDOMIZE && this . setNonce ( Math . floor ( Math . random ( ) * 100001 ) ) } ; svgedit . draw . Drawing . prototype . getElem _ = function ( c ) { return this . svgElem _ . querySelector ? this . svgElem _ . querySelector ( "#" + c ) : $ ( this . svgElem _ ) . find ( "[id=" + c + "]" ) [ 0 ] } ; svgedit . draw . Drawing . prototype . getSvgElem = function ( ) { return this . svgElem _ } ; svgedit . draw . Drawing . prototype . getNonce = function ( ) { return this . nonce _ } ;
2012-06-23 19:40:40 +00:00
svgedit . draw . Drawing . prototype . setNonce = function ( c ) { this . svgElem _ . setAttributeNS ( "http://www.w3.org/2000/xmlns/" , "xmlns:se" , "http://svg-edit.googlecode.com" ) ; this . svgElem _ . setAttributeNS ( "http://svg-edit.googlecode.com" , "se:nonce" , c ) ; this . nonce _ = c } ; svgedit . draw . Drawing . prototype . clearNonce = function ( ) { this . nonce _ = "" } ; svgedit . draw . Drawing . prototype . getId = function ( ) { return this . nonce _ ? this . idPrefix + this . nonce _ + "_" + this . obj _num : this . idPrefix + this . obj _num } ; svgedit . draw . Drawing . prototype . getNextId = function ( ) { var c =
2012-07-04 14:42:50 +00:00
this . obj _num , m = false ; if ( this . releasedNums . length > 0 ) { this . obj _num = this . releasedNums . pop ( ) ; m = true } else this . obj _num ++ ; for ( var o = this . getId ( ) ; this . getElem _ ( o ) ; ) { if ( m ) { this . obj _num = c ; m = false } this . obj _num ++ ; o = this . getId ( ) } if ( m ) this . obj _num = c ; return o } ; svgedit . draw . Drawing . prototype . releaseId = function ( c ) { var m = this . idPrefix + ( this . nonce _ ? this . nonce _ + "_" : "" ) ; if ( typeof c != "string" || c . indexOf ( m ) != 0 ) return false ; c = parseInt ( c . substr ( m . length ) ) ; if ( typeof c != "number" || c <= 0 || this . releasedNums . indexOf ( c ) != - 1 ) return false ;
2012-06-23 19:40:40 +00:00
this . releasedNums . push ( c ) ; return true } ; svgedit . draw . Drawing . prototype . getNumLayers = function ( ) { return this . all _layers . length } ; svgedit . draw . Drawing . prototype . hasLayer = function ( c ) { for ( var m = 0 ; m < this . getNumLayers ( ) ; m ++ ) if ( this . all _layers [ m ] [ 0 ] == c ) return true ; return false } ; svgedit . draw . Drawing . prototype . getLayerName = function ( c ) { if ( c >= 0 && c < this . getNumLayers ( ) ) return this . all _layers [ c ] [ 0 ] ; return "" } ; svgedit . draw . Drawing . prototype . getCurrentLayer = function ( ) { return this . current _layer } ; svgedit . draw . Drawing . prototype . getCurrentLayerName =
function ( ) { for ( var c = 0 ; c < this . getNumLayers ( ) ; ++ c ) if ( this . all _layers [ c ] [ 1 ] == this . current _layer ) return this . getLayerName ( c ) ; return "" } ; svgedit . draw . Drawing . prototype . setCurrentLayer = function ( c ) { for ( var m = 0 ; m < this . getNumLayers ( ) ; ++ m ) if ( c == this . getLayerName ( m ) ) { if ( this . current _layer != this . all _layers [ m ] [ 1 ] ) { this . current _layer . setAttribute ( "style" , "pointer-events:none" ) ; this . current _layer = this . all _layers [ m ] [ 1 ] ; this . current _layer . setAttribute ( "style" , "pointer-events:all" ) } return true } return false } ; svgedit . draw . Drawing . prototype . deleteCurrentLayer =
2012-07-04 14:42:50 +00:00
function ( ) { if ( this . current _layer && this . getNumLayers ( ) > 1 ) { var c = this . current _layer . parentNode . removeChild ( this . current _layer ) ; this . identifyLayers ( ) ; return c } return null } ; svgedit . draw . Drawing . prototype . identifyLayers = function ( ) { this . all _layers = [ ] ; for ( var c = this . svgElem _ . childNodes . length , m = [ ] , o = [ ] , b = null , d = false , e = 0 ; e < c ; ++ e ) { var l = this . svgElem _ . childNodes . item ( e ) ; if ( l && l . nodeType == 1 ) if ( l . tagName == "g" ) { d = true ; var u = $ ( "title" , l ) . text ( ) ; if ( ! u && svgedit . browser . isOpera ( ) && l . querySelectorAll ) u = $ ( l . querySelectorAll ( "title" ) ) . text ( ) ;
2012-07-14 00:14:24 +00:00
if ( u ) { o . push ( u ) ; this . all _layers . push ( [ u , l ] ) ; b = l ; svgedit . utilities . walkTree ( l , function ( w ) { w . setAttribute ( "style" , "pointer-events:inherit" ) } ) ; b . setAttribute ( "style" , "pointer-events:none" ) } else m . push ( l ) } else if ( ~ a . indexOf ( l . nodeName ) ) { svgedit . utilities . getBBox ( l ) ; m . push ( l ) } } c = this . svgElem _ . ownerDocument ; if ( m . length > 0 || ! d ) { for ( e = 1 ; o . indexOf ( "Layer " + e ) >= 0 ; ) e ++ ; o = "Layer " + e ; b = c . createElementNS ( "http://www.w3.org/2000/svg" , "g" ) ; d = c . createElementNS ( "http://www.w3.org/2000/svg" , "title" ) ; d . textContent = o ;
b . appendChild ( d ) ; for ( d = 0 ; d < m . length ; ++ d ) b . appendChild ( m [ d ] ) ; this . svgElem _ . appendChild ( b ) ; this . all _layers . push ( [ o , b ] ) } svgedit . utilities . walkTree ( b , function ( w ) { w . setAttribute ( "style" , "pointer-events:inherit" ) } ) ; this . current _layer = b ; this . current _layer . setAttribute ( "style" , "pointer-events:all" ) } ; svgedit . draw . Drawing . prototype . createLayer = function ( c ) { var m = this . svgElem _ . ownerDocument , o = m . createElementNS ( "http://www.w3.org/2000/svg" , "g" ) ; m = m . createElementNS ( "http://www.w3.org/2000/svg" , "title" ) ; m . textContent =
2012-07-04 14:42:50 +00:00
c ; o . appendChild ( m ) ; this . svgElem _ . appendChild ( o ) ; this . identifyLayers ( ) ; return o } ; svgedit . draw . Drawing . prototype . getLayerVisibility = function ( c ) { for ( var m = null , o = 0 ; o < this . getNumLayers ( ) ; ++ o ) if ( this . getLayerName ( o ) == c ) { m = this . all _layers [ o ] [ 1 ] ; break } if ( ! m ) return false ; return m . getAttribute ( "display" ) != "none" } ; svgedit . draw . Drawing . prototype . setLayerVisibility = function ( c , m ) { if ( typeof m != "boolean" ) return null ; for ( var o = null , b = 0 ; b < this . getNumLayers ( ) ; ++ b ) if ( this . getLayerName ( b ) == c ) { o = this . all _layers [ b ] [ 1 ] ;
break } if ( ! o ) return null ; o . getAttribute ( "display" ) ; o . setAttribute ( "display" , m ? "inline" : "none" ) ; return o } ; svgedit . draw . Drawing . prototype . getLayerOpacity = function ( c ) { for ( var m = 0 ; m < this . getNumLayers ( ) ; ++ m ) if ( this . getLayerName ( m ) == c ) { ( c = this . all _layers [ m ] [ 1 ] . getAttribute ( "opacity" ) ) || ( c = "1.0" ) ; return parseFloat ( c ) } return null } ; svgedit . draw . Drawing . prototype . setLayerOpacity = function ( c , m ) { if ( ! ( typeof m != "number" || m < 0 || m > 1 ) ) for ( var o = 0 ; o < this . getNumLayers ( ) ; ++ o ) if ( this . getLayerName ( o ) == c ) { this . all _layers [ o ] [ 1 ] . setAttribute ( "opacity" ,
2012-06-23 19:40:40 +00:00
m ) ; break } } } ) ( ) ; svgedit = svgedit || { } ;
2012-07-04 14:42:50 +00:00
( function ( ) { if ( ! svgedit . path ) svgedit . path = { } ; var a = { pathNodeTooltip : "Drag node to move it. Double-click node to change segment type" , pathCtrlPtTooltip : "Drag control point to adjust curve properties" } , n = { 2 : [ "x" , "y" ] , 4 : [ "x" , "y" ] , 6 : [ "x" , "y" , "x1" , "y1" , "x2" , "y2" ] , 8 : [ "x" , "y" , "x1" , "y1" ] , 10 : [ "x" , "y" , "r1" , "r2" , "angle" , "largeArcFlag" , "sweepFlag" ] , 12 : [ "x" ] , 14 : [ "y" ] , 16 : [ "x" , "y" , "x2" , "y2" ] , 18 : [ "x" , "y" ] } , f = [ ] , c = true , m = { } ; svgedit . path . setLinkControlPoints = function ( d ) { c = d } ; var o = svgedit . path . path = null ; svgedit . path . init =
2012-07-14 00:14:24 +00:00
function ( d ) { o = d ; f = [ 0 , "ClosePath" ] ; $ . each ( [ "Moveto" , "Lineto" , "CurvetoCubic" , "CurvetoQuadratic" , "Arc" , "LinetoHorizontal" , "LinetoVertical" , "CurvetoCubicSmooth" , "CurvetoQuadraticSmooth" ] , function ( e , l ) { f . push ( l + "Abs" ) ; f . push ( l + "Rel" ) } ) } ; svgedit . path . insertItemBefore = function ( d , e , l ) { d = d . pathSegList ; if ( svgedit . browser . supportsPathInsertItemBefore ( ) ) d . insertItemBefore ( e , l ) ; else { for ( var u = d . numberOfItems , w = [ ] , p = 0 ; p < u ; p ++ ) { var L = d . getItem ( p ) ; w . push ( L ) } d . clear ( ) ; for ( p = 0 ; p < u ; p ++ ) { p == l && d . appendItem ( e ) ; d . appendItem ( w [ p ] ) } } } ;
svgedit . path . ptObjToArr = function ( d , e ) { for ( var l = n [ d ] , u = l . length , w = Array ( u ) , p = 0 ; p < u ; p ++ ) w [ p ] = e [ l [ p ] ] ; return w } ; svgedit . path . getGripPt = function ( d , e ) { var l = { x : e ? e . x : d . item . x , y : e ? e . y : d . item . y } , u = d . path ; if ( u . matrix ) l = svgedit . math . transformPoint ( l . x , l . y , u . matrix ) ; l . x *= o . getCurrentZoom ( ) ; l . y *= o . getCurrentZoom ( ) ; return l } ; svgedit . path . getPointFromGrip = function ( d , e ) { var l = { x : d . x , y : d . y } ; if ( e . matrix ) { d = svgedit . math . transformPoint ( l . x , l . y , e . imatrix ) ; l . x = d . x ; l . y = d . y } l . x /= o . getCurrentZoom ( ) ; l . y /= o . getCurrentZoom ( ) ;
return l } ; svgedit . path . addPointGrip = function ( d , e , l ) { var u = svgedit . path . getGripContainer ( ) , w = svgedit . utilities . getElem ( "pathpointgrip_" + d ) ; if ( ! w ) { w = document . createElementNS ( "http://www.w3.org/2000/svg" , "rect" ) ; svgedit . utilities . assignAttributes ( w , { id : "pathpointgrip_" + d , display : "none" , width : 5 , height : 5 , fill : "#fff" , stroke : "#4F80FF" , "shape-rendering" : "crispEdges" , "stroke-width" : 1 , cursor : "move" , style : "pointer-events:all" , "xlink:title" : a . pathNodeTooltip } ) ; w = u . appendChild ( w ) ; $ ( "#pathpointgrip_" + d ) . dblclick ( function ( ) { svgedit . path . path &&
svgedit . path . path . setSegType ( ) } ) } e && l && svgedit . utilities . assignAttributes ( w , { x : e - 2.5 , y : l - 2.5 , display : "inline" } ) ; return w } ; svgedit . path . getGripContainer = function ( ) { var d = svgedit . utilities . getElem ( "pathpointgrip_container" ) ; if ( ! d ) { d = svgedit . utilities . getElem ( "selectorParentGroup" ) . appendChild ( document . createElementNS ( "http://www.w3.org/2000/svg" , "g" ) ) ; d . id = "pathpointgrip_container" } return d } ; svgedit . path . addCtrlGrip = function ( d ) { var e = svgedit . utilities . getElem ( "ctrlpointgrip_" + d ) ; if ( e ) return e ; e = document . createElementNS ( "http://www.w3.org/2000/svg" ,
2012-06-23 19:40:40 +00:00
"circle" ) ; svgedit . utilities . assignAttributes ( e , { id : "ctrlpointgrip_" + d , display : "none" , r : 3 , fill : "#4F80FF" , cursor : "move" , style : "pointer-events:all" , "xlink:title" : a . pathCtrlPtTooltip } ) ; svgedit . path . getGripContainer ( ) . appendChild ( e ) ; return e } ; svgedit . path . getCtrlLine = function ( d ) { var e = svgedit . utilities . getElem ( "ctrlLine_" + d ) ; if ( e ) return e ; e = document . createElementNS ( "http://www.w3.org/2000/svg" , "line" ) ; svgedit . utilities . assignAttributes ( e , { id : "ctrlLine_" + d , stroke : "#4F80FF" , "stroke-width" : 1 , style : "pointer-events:none" } ) ;
2012-07-14 00:14:24 +00:00
svgedit . path . getGripContainer ( ) . appendChild ( e ) ; return e } ; svgedit . path . getPointGrip = function ( d , e ) { var l = svgedit . path . addPointGrip ( d . index ) ; if ( e ) { var u = svgedit . path . getGripPt ( d ) ; svgedit . utilities . assignAttributes ( l , { x : u . x - 2.5 , y : u . y - 2.5 , display : "inline" } ) } return l } ; svgedit . path . getControlPoints = function ( d ) { var e = d . item , l = d . index ; if ( ! ( "x1" in e ) || ! ( "x2" in e ) ) return null ; var u = { } ; svgedit . path . getGripContainer ( ) ; for ( var w = [ svgedit . path . path . segs [ l - 1 ] . item , e ] , p = 1 ; p < 3 ; p ++ ) { var L = l + "c" + p , T = u [ "c" + p + "_line" ] =
2012-07-14 02:04:34 +00:00
svgedit . path . getCtrlLine ( L ) , N = svgedit . path . getGripPt ( d , { x : e [ "x" + p ] , y : e [ "y" + p ] } ) , K = svgedit . path . getGripPt ( d , { x : w [ p - 1 ] . x , y : w [ p - 1 ] . y } ) ; svgedit . utilities . assignAttributes ( T , { x1 : N . x , y1 : N . y , x2 : K . x , y2 : K . y , display : "inline" } ) ; u [ "c" + p + "_line" ] = T ; pointGrip = u [ "c" + p ] = svgedit . path . addCtrlGrip ( L ) ; svgedit . utilities . assignAttributes ( pointGrip , { cx : N . x , cy : N . y , display : "inline" } ) ; u [ "c" + p ] = pointGrip } return u } ; svgedit . path . replacePathSeg = function ( d , e , l , u ) { u = u || svgedit . path . path . elem ; d = u [ "createSVGPathSeg" + f [ d ] ] . apply ( u ,
2012-07-14 00:14:24 +00:00
l ) ; if ( svgedit . browser . supportsPathReplaceItem ( ) ) u . pathSegList . replaceItem ( d , e ) ; else { l = u . pathSegList ; u = l . numberOfItems ; for ( var w = [ ] , p = 0 ; p < u ; p ++ ) { var L = l . getItem ( p ) ; w . push ( L ) } l . clear ( ) ; for ( p = 0 ; p < u ; p ++ ) p == e ? l . appendItem ( d ) : l . appendItem ( w [ p ] ) } } ; svgedit . path . getSegSelector = function ( d , e ) { var l = d . index , u = svgedit . utilities . getElem ( "segline_" + l ) ; if ( ! u ) { var w = svgedit . path . getGripContainer ( ) ; u = document . createElementNS ( "http://www.w3.org/2000/svg" , "path" ) ; svgedit . utilities . assignAttributes ( u , { id : "segline_" + l ,
display : "none" , fill : "none" , stroke : "#0FF" , "stroke-width" : 2 , style : "pointer-events:none" , d : "M0,0 0,0" } ) ; w . appendChild ( u ) } if ( e ) { l = d . prev ; if ( ! l ) { u . setAttribute ( "display" , "none" ) ; return u } l = svgedit . path . getGripPt ( l ) ; svgedit . path . replacePathSeg ( 2 , 0 , [ l . x , l . y ] , u ) ; w = svgedit . path . ptObjToArr ( d . type , d . item , true ) ; for ( var p = 0 ; p < w . length ; p += 2 ) { l = svgedit . path . getGripPt ( d , { x : w [ p ] , y : w [ p + 1 ] } ) ; w [ p ] = l . x ; w [ p + 1 ] = l . y } svgedit . path . replacePathSeg ( d . type , 1 , w , u ) } return u } ; svgedit . path . smoothControlPoints = this . smoothControlPoints =
function ( d , e , l ) { var u = d . x - l . x , w = d . y - l . y , p = e . x - l . x , L = e . y - l . y ; if ( ( u != 0 || w != 0 ) && ( p != 0 || L != 0 ) ) { d = Math . atan2 ( w , u ) ; e = Math . atan2 ( L , p ) ; u = Math . sqrt ( u * u + w * w ) ; p = Math . sqrt ( p * p + L * L ) ; w = o . getSVGRoot ( ) . createSVGPoint ( ) ; L = o . getSVGRoot ( ) . createSVGPoint ( ) ; if ( d < 0 ) d += 2 * Math . PI ; if ( e < 0 ) e += 2 * Math . PI ; var T = Math . abs ( d - e ) , N = Math . abs ( Math . PI - T ) / 2 ; if ( d - e > 0 ) { d = T < Math . PI ? d + N : d - N ; e = T < Math . PI ? e - N : e + N } else { d = T < Math . PI ? d - N : d + N ; e = T < Math . PI ? e + N : e - N } w . x = u * Math . cos ( d ) + l . x ; w . y = u * Math . sin ( d ) + l . y ; L . x = p * Math . cos ( e ) + l . x ; L . y = p * Math . sin ( e ) + l . y ;
return [ w , L ] } } ; svgedit . path . Segment = function ( d , e ) { this . selected = false ; this . index = d ; this . item = e ; this . type = e . pathSegType ; this . ctrlpts = [ ] ; this . segsel = this . ptgrip = null } ; svgedit . path . Segment . prototype . showCtrlPts = function ( d ) { for ( var e in this . ctrlpts ) this . ctrlpts [ e ] . setAttribute ( "display" , d ? "inline" : "none" ) } ; svgedit . path . Segment . prototype . selectCtrls = function ( ) { $ ( "#ctrlpointgrip_" + this . index + "c1, #ctrlpointgrip_" + this . index + "c2" ) . attr ( "fill" , "#4F80FF" ) } ; svgedit . path . Segment . prototype . show = function ( d ) { if ( this . ptgrip ) { this . ptgrip . setAttribute ( "display" ,
2012-06-23 19:40:40 +00:00
d ? "inline" : "none" ) ; this . segsel . setAttribute ( "display" , d ? "inline" : "none" ) ; this . showCtrlPts ( d ) } } ; svgedit . path . Segment . prototype . select = function ( d ) { if ( this . ptgrip ) { this . ptgrip . setAttribute ( "stroke" , d ? "#0FF" : "#00F" ) ; this . segsel . setAttribute ( "display" , d ? "inline" : "none" ) ; this . ctrlpts && this . selectCtrls ( d ) ; this . selected = d } } ; svgedit . path . Segment . prototype . addGrip = function ( ) { this . ptgrip = svgedit . path . getPointGrip ( this , true ) ; this . ctrlpts = svgedit . path . getControlPoints ( this , true ) ; this . segsel = svgedit . path . getSegSelector ( this ,
true ) } ; svgedit . path . Segment . prototype . update = function ( d ) { if ( this . ptgrip ) { var e = svgedit . path . getGripPt ( this ) ; svgedit . utilities . assignAttributes ( this . ptgrip , this . ptgrip . nodeName == "rect" ? { x : e . x - 2.5 , y : e . y - 2.5 } : { cx : e . x , cy : e . y } ) ; svgedit . path . getSegSelector ( this , true ) ; if ( this . ctrlpts ) { if ( d ) { this . item = svgedit . path . path . elem . pathSegList . getItem ( this . index ) ; this . type = this . item . pathSegType } svgedit . path . getControlPoints ( this ) } } } ; svgedit . path . Segment . prototype . move = function ( d , e ) { var l = this . item ; l = this . ctrlpts ?
[ l . x += d , l . y += e , l . x1 , l . y1 , l . x2 += d , l . y2 += e ] : [ l . x += d , l . y += e ] ; svgedit . path . replacePathSeg ( this . type , this . index , l ) ; if ( this . next && this . next . ctrlpts ) { l = this . next . item ; l = [ l . x , l . y , l . x1 += d , l . y1 += e , l . x2 , l . y2 ] ; svgedit . path . replacePathSeg ( this . next . type , this . next . index , l ) } if ( this . mate ) { l = this . mate . item ; l = [ l . x += d , l . y += e ] ; svgedit . path . replacePathSeg ( this . mate . type , this . mate . index , l ) } this . update ( true ) ; this . next && this . next . update ( true ) } ; svgedit . path . Segment . prototype . setLinked = function ( d ) { var e , l , u ; if ( d == 2 ) { l = 1 ; e =
2012-07-14 00:14:24 +00:00
this . next ; if ( ! e ) return ; u = this . item } else { l = 2 ; e = this . prev ; if ( ! e ) return ; u = e . item } var w = e . item ; w [ "x" + l ] = u . x + ( u . x - this . item [ "x" + d ] ) ; w [ "y" + l ] = u . y + ( u . y - this . item [ "y" + d ] ) ; svgedit . path . replacePathSeg ( e . type , e . index , [ w . x , w . y , w . x1 , w . y1 , w . x2 , w . y2 ] ) ; e . update ( true ) } ; svgedit . path . Segment . prototype . moveCtrl = function ( d , e , l ) { var u = this . item ; u [ "x" + d ] += e ; u [ "y" + d ] += l ; svgedit . path . replacePathSeg ( this . type , this . index , [ u . x , u . y , u . x1 , u . y1 , u . x2 , u . y2 ] ) ; this . update ( true ) } ; svgedit . path . Segment . prototype . setType = function ( d , e ) { svgedit . path . replacePathSeg ( d ,
2012-06-23 19:40:40 +00:00
this . index , e ) ; this . type = d ; this . item = svgedit . path . path . elem . pathSegList . getItem ( this . index ) ; this . showCtrlPts ( d === 6 ) ; this . ctrlpts = svgedit . path . getControlPoints ( this ) ; this . update ( true ) } ; svgedit . path . Path = function ( d ) { if ( ! d || d . tagName !== "path" ) throw "svgedit.path.Path constructed without a <path> element" ; this . elem = d ; this . segs = [ ] ; this . selected _pts = [ ] ; svgedit . path . path = this ; this . init ( ) } ; svgedit . path . Path . prototype . init = function ( ) { $ ( svgedit . path . getGripContainer ( ) ) . find ( "*" ) . attr ( "display" , "none" ) ; var d =
2012-07-14 00:14:24 +00:00
this . elem . pathSegList , e = d . numberOfItems ; this . segs = [ ] ; this . selected _pts = [ ] ; this . first _seg = null ; for ( var l = 0 ; l < e ; l ++ ) { var u = d . getItem ( l ) ; u = new svgedit . path . Segment ( l , u ) ; u . path = this ; this . segs . push ( u ) } d = this . segs ; u = null ; for ( l = 0 ; l < e ; l ++ ) { var w = d [ l ] , p = l + 1 >= e ? null : d [ l + 1 ] , L = l - 1 < 0 ? null : d [ l - 1 ] ; if ( w . type === 2 ) { if ( L && L . type !== 1 ) { p = d [ u ] ; p . next = d [ u + 1 ] ; p . next . prev = p ; p . addGrip ( ) } u = l } else if ( p && p . type === 1 ) { w . next = d [ u + 1 ] ; w . next . prev = w ; w . mate = d [ u ] ; w . addGrip ( ) ; if ( this . first _seg == null ) this . first _seg = w } else if ( p ) { if ( w . type !==
1 ) { w . addGrip ( ) ; if ( p && p . type !== 2 ) { w . next = p ; w . next . prev = w } } } else if ( w . type !== 1 ) { p = d [ u ] ; p . next = d [ u + 1 ] ; p . next . prev = p ; p . addGrip ( ) ; w . addGrip ( ) ; if ( ! this . first _seg ) this . first _seg = d [ u ] } } return this } ; svgedit . path . Path . prototype . eachSeg = function ( d ) { for ( var e = this . segs . length , l = 0 ; l < e ; l ++ ) if ( d . call ( this . segs [ l ] , l ) === false ) break } ; svgedit . path . Path . prototype . addSeg = function ( d ) { var e = this . segs [ d ] ; if ( e . prev ) { var l = e . prev , u ; switch ( e . item . pathSegType ) { case 4 : var w = ( e . item . x + l . item . x ) / 2 , p = ( e . item . y + l . item . y ) / 2 ; u = this . elem . createSVGPathSegLinetoAbs ( w ,
2012-07-14 02:04:34 +00:00
p ) ; break ; case 6 : u = ( l . item . x + e . item . x1 ) / 2 ; var L = ( e . item . x1 + e . item . x2 ) / 2 , T = ( e . item . x2 + e . item . x ) / 2 , N = ( u + L ) / 2 ; L = ( L + T ) / 2 ; w = ( N + L ) / 2 ; var K = ( l . item . y + e . item . y1 ) / 2 , da = ( e . item . y1 + e . item . y2 ) / 2 ; l = ( e . item . y2 + e . item . y ) / 2 ; var V = ( K + da ) / 2 ; da = ( da + l ) / 2 ; p = ( V + da ) / 2 ; u = this . elem . createSVGPathSegCurvetoCubicAbs ( w , p , u , K , N , V ) ; svgedit . path . replacePathSeg ( e . type , d , [ e . item . x , e . item . y , L , da , T , l ] ) } svgedit . path . insertItemBefore ( this . elem , u , d ) } } ; svgedit . path . Path . prototype . deleteSeg = function ( d ) { var e = this . segs [ d ] , l = this . elem . pathSegList ;
2012-07-14 00:14:24 +00:00
e . show ( false ) ; var u = e . next ; if ( e . mate ) { var w = [ u . item . x , u . item . y ] ; svgedit . path . replacePathSeg ( 2 , u . index , w ) ; svgedit . path . replacePathSeg ( 4 , e . index , w ) ; l . removeItem ( e . mate . index ) } else { if ( ! e . prev ) { w = [ u . item . x , u . item . y ] ; svgedit . path . replacePathSeg ( 2 , e . next . index , w ) } l . removeItem ( d ) } } ; svgedit . path . Path . prototype . subpathIsClosed = function ( d ) { var e = false ; svgedit . path . path . eachSeg ( function ( l ) { if ( l <= d ) return true ; if ( this . type === 2 ) return false ; else if ( this . type === 1 ) { e = true ; return false } } ) ; return e } ; svgedit . path . Path . prototype . removePtFromSelection =
2012-06-23 19:40:40 +00:00
function ( d ) { var e = this . selected _pts . indexOf ( d ) ; if ( e != - 1 ) { this . segs [ d ] . select ( false ) ; this . selected _pts . splice ( e , 1 ) } } ; svgedit . path . Path . prototype . clearSelection = function ( ) { this . eachSeg ( function ( ) { this . select ( false ) } ) ; this . selected _pts = [ ] } ; svgedit . path . Path . prototype . storeD = function ( ) { this . last _d = this . elem . getAttribute ( "d" ) } ; svgedit . path . Path . prototype . show = function ( d ) { this . eachSeg ( function ( ) { this . show ( d ) } ) ; d && this . selectPt ( this . first _seg . index ) ; return this } ; svgedit . path . Path . prototype . movePts = function ( d ,
2012-07-14 00:14:24 +00:00
e ) { for ( var l = this . selected _pts . length ; l -- ; ) this . segs [ this . selected _pts [ l ] ] . move ( d , e ) } ; svgedit . path . Path . prototype . moveCtrl = function ( d , e ) { var l = this . segs [ this . selected _pts [ 0 ] ] ; l . moveCtrl ( this . dragctrl , d , e ) ; c && l . setLinked ( this . dragctrl ) } ; svgedit . path . Path . prototype . setSegType = function ( d ) { this . storeD ( ) ; for ( var e = this . selected _pts . length , l ; e -- ; ) { var u = this . segs [ this . selected _pts [ e ] ] , w = u . prev ; if ( w ) { if ( ! d ) { l = "Toggle Path Segment Type" ; d = u . type == 6 ? 4 : 6 } d -= 0 ; var p = u . item . x , L = u . item . y , T = w . item . x ; w = w . item . y ;
2012-07-14 02:04:34 +00:00
var N ; switch ( d ) { case 6 : if ( u . olditem ) { T = u . olditem ; N = [ p , L , T . x1 , T . y1 , T . x2 , T . y2 ] } else { N = p - T ; var K = L - w ; N = [ p , L , T + N / 3 , w + K / 3 , p - N / 3 , L - K / 3 ] } break ; case 4 : N = [ p , L ] ; u . olditem = u . item } u . setType ( d , N ) } } svgedit . path . path . endChanges ( l ) } ; svgedit . path . Path . prototype . selectPt = function ( d , e ) { this . clearSelection ( ) ; d == null && this . eachSeg ( function ( l ) { if ( this . prev ) d = l } ) ; this . addPtsToSelection ( d ) ; if ( e ) { this . dragctrl = e ; c && this . segs [ d ] . setLinked ( e ) } } ; svgedit . path . Path . prototype . update = function ( ) { var d = this . elem ; if ( svgedit . utilities . getRotationAngle ( d ) ) { this . matrix =
2012-06-23 19:40:40 +00:00
svgedit . math . getMatrix ( d ) ; this . imatrix = this . matrix . inverse ( ) } else this . imatrix = this . matrix = null ; this . eachSeg ( function ( e ) { this . item = d . pathSegList . getItem ( e ) ; this . update ( ) } ) ; return this } ; svgedit . path . getPath _ = function ( d ) { var e = m [ d . id ] ; e || ( e = m [ d . id ] = new svgedit . path . Path ( d ) ) ; return e } ; svgedit . path . removePath _ = function ( d ) { d in m && delete m [ d ] } ; var b = function ( d , e ) { dx = d - oldcx ; dy = e - oldcy ; r = Math . sqrt ( dx * dx + dy * dy ) ; theta = Math . atan2 ( dy , dx ) + angle ; dx = r * Math . cos ( theta ) + oldcx ; dy = r * Math . sin ( theta ) + oldcy ; dx -= newcx ;
2012-07-14 00:14:24 +00:00
dy -= newcy ; r = Math . sqrt ( dx * dx + dy * dy ) ; theta = Math . atan2 ( dy , dx ) - angle ; return { x : ( r * Math . cos ( theta ) + newcx ) / 1 , y : ( r * Math . sin ( theta ) + newcy ) / 1 } } ; svgedit . path . recalcRotatedPath = function ( ) { var d = svgedit . path . path . elem , e = svgedit . utilities . getRotationAngle ( d , true ) ; if ( e ) { var l = svgedit . utilities . getBBox ( d ) , u = svgedit . path . path . oldbbox , w = u . x + u . width / 2 , p = u . y + u . height / 2 ; u = l . x + l . width / 2 ; l = l . y + l . height / 2 ; u = u - w ; var L = l - p ; l = Math . sqrt ( u * u + L * L ) ; L = Math . atan2 ( L , u ) + e ; u = l * Math . cos ( L ) + w ; l = l * Math . sin ( L ) + p ; w = d . pathSegList ; for ( p = w . numberOfItems ; p ; ) { p -=
1 ; L = w . getItem ( p ) ; var T = L . pathSegType ; if ( T != 1 ) { var N = b ( L . x , L . y ) ; N = [ N . x , N . y ] ; if ( L . x1 != null && L . x2 != null ) { c _vals1 = b ( L . x1 , L . y1 ) ; c _vals2 = b ( L . x2 , L . y2 ) ; N . splice ( N . length , 0 , c _vals1 . x , c _vals1 . y , c _vals2 . x , c _vals2 . y ) } svgedit . path . replacePathSeg ( T , p , N ) } } svgedit . utilities . getBBox ( d ) ; w = svgroot . createSVGTransform ( ) ; d = svgedit . transformlist . getTransformList ( d ) ; w . setRotate ( e * 180 / Math . PI , u , l ) ; d . replaceItem ( w , 0 ) } } ; svgedit . path . clearData = function ( ) { m = { } } } ) ( ) ; if ( ! window . console ) { window . console = { } ; window . console . log = function ( ) { } ; window . console . dir = function ( ) { } } if ( window . opera ) { window . console . log = function ( a ) { opera . postError ( a ) } ; window . console . dir = function ( ) { } }
2012-07-04 14:42:50 +00:00
( function ( ) { var a = jQuery . fn . attr ; jQuery . fn . attr = function ( n , f ) { var c = this . length ; if ( ! c ) return a . apply ( this , arguments ) ; for ( var m = 0 ; m < c ; m ++ ) { var o = this [ m ] ; if ( o . namespaceURI === "http://www.w3.org/2000/svg" ) if ( f !== undefined ) o . setAttribute ( n , f ) ; else if ( $ . isArray ( n ) ) { c = n . length ; for ( m = { } ; c -- ; ) { var b = n [ c ] , d = o . getAttribute ( b ) ; if ( d || d === "0" ) d = isNaN ( d ) ? d : d - 0 ; m [ b ] = d } return m } else if ( typeof n === "object" ) for ( b in n ) o . setAttribute ( b , n [ b ] ) ; else { if ( ( d = o . getAttribute ( n ) ) || d === "0" ) d = isNaN ( d ) ? d : d - 0 ; return d } else return a . apply ( this ,
2012-06-23 19:40:40 +00:00
arguments ) } return this } } ) ( ) ;
2012-07-14 02:04:34 +00:00
$ . SvgCanvas = function ( a , n ) { function f ( g , h ) { for ( var k = svgedit . utilities . getBBox ( g ) , v = 0 ; v < 2 ; v ++ ) { var t = v === 0 ? "fill" : "stroke" , E = g . getAttribute ( t ) ; if ( E && E . indexOf ( "url(" ) === 0 ) { E = Y ( E ) ; if ( E . tagName === "linearGradient" ) { var z = E . getAttribute ( "x1" ) || 0 , s = E . getAttribute ( "y1" ) || 0 , A = E . getAttribute ( "x2" ) || 1 , F = E . getAttribute ( "y2" ) || 0 ; z = k . width * z + k . x ; s = k . height * s + k . y ; A = k . width * A + k . x ; F = k . height * F + k . y ; z = O ( z , s , h ) ; F = O ( A , F , h ) ; A = { } ; A . x1 = ( z . x - k . x ) / k . width ; A . y1 = ( z . y - k . y ) / k . height ; A . x2 = ( F . x - k . x ) / k . width ; A . y2 = ( F . y - k . y ) / k . height ;
2012-07-14 00:14:24 +00:00
E = E . cloneNode ( true ) ; $ ( E ) . attr ( A ) ; E . id = M ( ) ; xb ( ) . appendChild ( E ) ; g . setAttribute ( t , "url(#" + E . id + ")" ) } } } } var c = "http://www.w3.org/2000/svg" , m = { show _outside _canvas : true , selectNew : true , dimensions : [ 640 , 480 ] } ; n && $ . extend ( m , n ) ; var o = m . dimensions , b = this , d = a . ownerDocument , e = d . importNode ( svgedit . utilities . text2xml ( '<svg id="svgroot" xmlns="' + c + '" xlinkns="http://www.w3.org/1999/xlink" width="' + o [ 0 ] + '" height="' + o [ 1 ] + '" x="' + o [ 0 ] + '" y="' + o [ 1 ] + '" overflow="visible"><defs><filter id="canvashadow" filterUnits="objectBoundingBox"><feGaussianBlur in="SourceAlpha" stdDeviation="4" result="blur"/><feOffset in="blur" dx="5" dy="5" result="offsetBlur"/><feMerge><feMergeNode in="offsetBlur"/><feMergeNode in="SourceGraphic"/></feMerge></filter></defs></svg>' ) . documentElement ,
2012-07-04 14:42:50 +00:00
true ) ; a . appendChild ( e ) ; var l = d . createElementNS ( c , "svg" ) ; ( b . clearSvgContentElement = function ( ) { for ( ; l . firstChild ; ) l . removeChild ( l . firstChild ) ; $ ( l ) . attr ( { id : "svgcontent" , width : o [ 0 ] , height : o [ 1 ] , x : o [ 0 ] , y : o [ 1 ] , overflow : m . show _outside _canvas ? "visible" : "hidden" , xmlns : c , "xmlns:se" : "http://svg-edit.googlecode.com" , "xmlns:xlink" : "http://www.w3.org/1999/xlink" } ) . appendTo ( e ) ; var g = d . createComment ( " Created with SVG-edit - http://svg-edit.googlecode.com/ " ) ; l . appendChild ( g ) } ) ( ) ; var u = "svg_" ; b . setIdPrefix = function ( g ) { u =
2012-07-14 00:14:24 +00:00
g } ; b . current _drawing _ = new svgedit . draw . Drawing ( l , u ) ; var w = b . getCurrentDrawing = function ( ) { return b . current _drawing _ } , p = 1 , L = null , T = { shape : { fill : ( m . initFill . color == "none" ? "" : "#" ) + m . initFill . color , fill _paint : null , fill _opacity : m . initFill . opacity , stroke : "#" + m . initStroke . color , stroke _paint : null , stroke _opacity : m . initStroke . opacity , stroke _width : m . initStroke . width , stroke _dasharray : "none" , stroke _linejoin : "miter" , stroke _linecap : "butt" , opacity : m . initOpacity } } ; T . text = $ . extend ( true , { } , T . shape ) ; $ . extend ( T . text , { fill : "#000000" ,
2012-07-14 02:04:34 +00:00
stroke _width : 0 , font _size : 24 , font _family : "Junction" } ) ; var N = T . shape , K = Array ( 1 ) , da = this . addSvgElementFromJson = function ( g ) { var h = svgedit . utilities . getElem ( g . attr . id ) , k = w ( ) . getCurrentLayer ( ) ; if ( h && g . element != h . tagName ) { k . removeChild ( h ) ; h = null } if ( ! h ) { h = d . createElementNS ( c , g . element ) ; if ( k ) ( L || k ) . appendChild ( h ) } g . curStyles && svgedit . utilities . assignAttributes ( h , { fill : N . fill , stroke : N . stroke , "stroke-width" : N . stroke _width , "stroke-dasharray" : N . stroke _dasharray , "stroke-linejoin" : N . stroke _linejoin , "stroke-linecap" : N . stroke _linecap ,
2012-07-12 17:01:07 +00:00
"stroke-opacity" : N . stroke _opacity , "fill-opacity" : N . fill _opacity , opacity : N . opacity / 2 , style : "pointer-events:inherit" } , 100 ) ; svgedit . utilities . assignAttributes ( h , g . attr , 100 ) ; svgedit . utilities . cleanupElement ( h ) ; return h } , V = b . getTransformList = svgedit . transformlist . getTransformList , O = svgedit . math . transformPoint , fa = b . matrixMultiply = svgedit . math . matrixMultiply , sa = b . hasMatrixTransform = svgedit . math . hasMatrixTransform , ha = b . transformListToTransform = svgedit . math . transformListToTransform , ca = svgedit . math . snapToAngle ,
2012-07-14 02:04:34 +00:00
ea = svgedit . math . getMatrix ; svgedit . units . init ( { getBaseUnit : function ( ) { return m . baseUnit } , getElement : svgedit . utilities . getElem , getHeight : function ( ) { return l . getAttribute ( "height" ) / p } , getWidth : function ( ) { return l . getAttribute ( "width" ) / p } , getRoundDigits : function ( ) { return nb . round _digits } } ) ; var qa = b . convertToNum = svgedit . units . convertToNum ; svgedit . utilities . init ( { getDOMDocument : function ( ) { return d } , getDOMContainer : function ( ) { return a } , getSVGRoot : function ( ) { return e } , getSelectedElements : function ( ) { return K } ,
getSVGContent : function ( ) { return l } } ) ; var pa = b . getUrlFromAttr = svgedit . utilities . getUrlFromAttr , ba = b . getHref = svgedit . utilities . getHref , S = b . setHref = svgedit . utilities . setHref , U = svgedit . utilities . getPathBBox ; b . getBBox = svgedit . utilities . getBBox ; var ra = b . getRotationAngle = svgedit . utilities . getRotationAngle , la = b . getElem = svgedit . utilities . getElem , ma = b . assignAttributes = svgedit . utilities . assignAttributes , Z = this . cleanupElement = svgedit . utilities . cleanupElement , Aa = svgedit . sanitize . getNSMap ( ) , Ka = b . sanitizeSvg = svgedit . sanitize . sanitizeSvg ,
2012-07-14 00:14:24 +00:00
Ra = svgedit . history . MoveElementCommand , Na = svgedit . history . InsertElementCommand , Sa = svgedit . history . RemoveElementCommand , Xa = svgedit . history . ChangeElementCommand , Oa = svgedit . history . BatchCommand ; b . undoMgr = new svgedit . history . UndoManager ( { handleHistoryEvent : function ( g , h ) { var k = svgedit . history . HistoryEventTypes ; if ( g == k . BEFORE _UNAPPLY || g == k . BEFORE _APPLY ) b . clearSelection ( ) ; else if ( g == k . AFTER _APPLY || g == k . AFTER _UNAPPLY ) { var v = h . elements ( ) ; b . pathActions . clear ( ) ; I ( "changed" , v ) ; v = h . type ( ) ; k = g == k . AFTER _APPLY ; if ( v ==
Ra . type ( ) ) { k = k ? h . newParent : h . oldParent ; k == l && b . identifyLayers ( ) } else if ( v == Na . type ( ) || v == Sa . type ( ) ) { h . parent == l && b . identifyLayers ( ) ; if ( v == Na . type ( ) ) k && $a ( h . elem ) ; else k || $a ( h . elem ) ; h . elem . tagName === "use" && $b ( h . elem ) } else if ( v == Xa . type ( ) ) { h . elem . tagName == "title" && h . elem . parentNode . parentNode == l && b . identifyLayers ( ) ; k = k ? h . newValues : h . oldValues ; k . stdDeviation && b . setBlurOffsets ( h . elem . parentNode , k . stdDeviation ) ; if ( h . elem . tagName === "use" && svgedit . browser . isWebkit ( ) ) { v = h . elem ; if ( ! v . getAttribute ( "x" ) && ! v . getAttribute ( "y" ) ) { k =
v . parentNode ; var t = v . nextSibling ; k . removeChild ( v ) ; k . insertBefore ( v , t ) } } } } } } ) ; var Ia = function ( g ) { b . undoMgr . addCommandToHistory ( g ) } ; svgedit . select . init ( m , { createSVGElement : function ( g ) { return b . addSvgElementFromJson ( g ) } , svgRoot : function ( ) { return e } , svgContent : function ( ) { return l } , currentZoom : function ( ) { return p } , getStrokedBBox : function ( g ) { return b . getStrokedBBox ( [ g ] ) } } ) ; var Qa = this . selectorManager = svgedit . select . getSelectorManager ( ) ; svgedit . path . init ( { getCurrentZoom : function ( ) { return p } , getSVGRoot : function ( ) { return e } } ) ;
svgedit . utilities . snapToGrid = function ( g ) { var h = m . snappingStep , k = m . baseUnit ; if ( k !== "px" ) h *= svgedit . units . getTypeMap ( ) [ k ] ; return g = Math . round ( g / h ) * h } ; var Ga = svgedit . utilities . snapToGrid , Fb = { exportNoBlur : "Blurred elements will appear as un-blurred" , exportNoforeignObject : "foreignObject elements will not appear" , exportNoDashArray : "Strokes will appear filled" , exportNoText : "Text may not appear as expected" } , Ob = [ "clip-path" , "fill" , "filter" , "marker-end" , "marker-mid" , "marker-start" , "mask" , "stroke" ] , lb = $ . data ,
2012-07-14 02:04:34 +00:00
$a = function ( g ) { var h = $ ( g ) . attr ( Ob ) , k ; for ( k in h ) { var v = h [ k ] ; if ( v && v . indexOf ( "url(" ) === 0 ) { v = pa ( v ) . substr ( 1 ) ; if ( ! la ( v ) ) { xb ( ) . appendChild ( Bb [ v ] ) ; delete Bb [ v ] } } } g = g . getElementsByTagName ( "*" ) ; if ( g . length ) { h = 0 ; for ( k = g . length ; h < k ; h ++ ) $a ( g [ h ] ) } } , Ya = { } , La = m . imgPath + "logo.png" , Ea = [ ] , nb = { round _digits : 5 } , Ja = false , Za = null , Ma = "select" , mb = "none" , Ab = { } , eb = T . text , fb = N , Pb = null , xa = null , wb = [ ] , rb = { } , sb = null , Bb = { } ; b . clipBoard = [ ] ; var kb = this . runExtensions = function ( g , h , k ) { var v = false ; if ( k ) v = [ ] ; $ . each ( rb , function ( t , E ) { if ( g in
E ) if ( k ) v . push ( E [ g ] ( h ) ) ; else v = E [ g ] ( h ) } ) ; return v } ; this . addExtension = function ( g , h ) { if ( g in rb ) console . log ( 'Cannot add extension "' + g + '", an extension by that name already exists"' ) ; else { var k = $ . isFunction ( h ) ? h ( $ . extend ( b . getPrivateMethods ( ) , { svgroot : e , svgcontent : l , nonce : w ( ) . getNonce ( ) , selectorManager : Qa } ) ) : h ; rb [ g ] = k ; I ( "extension_added" , k ) } } ; var Cb = this . round = function ( g ) { return parseInt ( g * p ) / p } , Lb = this . getIntersectionList = function ( g ) { if ( xa == null ) return null ; var h = L || w ( ) . getCurrentLayer ( ) ; wb . length ||
( wb = Rb ( h ) ) ; var k = null ; try { k = h . getIntersectionList ( g , null ) } catch ( v ) { } if ( k == null || typeof k . item != "function" ) { k = [ ] ; if ( g ) g = g ; else { g = xa . getBBox ( ) ; h = { } ; for ( var t in g ) h [ t ] = g [ t ] / p ; g = h } for ( t = wb . length ; t -- ; ) g . width && g . width && svgedit . math . rectsIntersect ( g , wb [ t ] . bbox ) && k . push ( wb [ t ] . elem ) } return k } ; getStrokedBBox = this . getStrokedBBox = function ( g ) { g || ( g = Gb ( ) ) ; if ( ! g . length ) return false ; var h = function ( F ) { try { var C = svgedit . utilities . getBBox ( F ) , D = svgedit . utilities . getRotationAngle ( F ) ; if ( D && D % 90 || svgedit . math . hasMatrixTransform ( svgedit . transformlist . getTransformList ( F ) ) ) { D =
false ; if ( [ "ellipse" , "path" , "line" , "polyline" , "polygon" ] . indexOf ( F . tagName ) >= 0 ) C = D = b . convertToPath ( F , true ) ; else if ( F . tagName == "rect" ) { var G = F . getAttribute ( "rx" ) , H = F . getAttribute ( "ry" ) ; if ( G || H ) C = D = b . convertToPath ( F , true ) } if ( ! D ) { var P = F . cloneNode ( true ) , R = document . createElementNS ( c , "g" ) , W = F . parentNode ; W . appendChild ( R ) ; R . appendChild ( P ) ; C = svgedit . utilities . bboxToObj ( R . getBBox ( ) ) ; W . removeChild ( R ) } } return C } catch ( ua ) { console . log ( F , ua ) ; return null } } , k ; $ . each ( g , function ( ) { if ( ! k ) if ( this . parentNode ) k = h ( this ) } ) ;
2012-07-14 00:14:24 +00:00
if ( k == null ) return null ; var v = k . x + k . width , t = k . y + k . height , E = k . x , z = k . y , s = function ( F ) { var C = F . getAttribute ( "stroke-width" ) , D = 0 ; if ( F . getAttribute ( "stroke" ) != "none" && ! isNaN ( C ) ) D += C / 2 ; return D } , A = [ ] ; $ . each ( g , function ( F , C ) { var D = h ( C ) ; if ( D ) { var G = s ( C ) ; E = Math . min ( E , D . x - G ) ; z = Math . min ( z , D . y - G ) ; A . push ( D ) } } ) ; k . x = E ; k . y = z ; $ . each ( g , function ( F , C ) { var D = A [ F ] ; if ( D && C . nodeType == 1 ) { var G = s ( C ) ; v = Math . max ( v , D . x + D . width + G ) ; t = Math . max ( t , D . y + D . height + G ) } } ) ; k . width = v - E ; k . height = t - z ; return k } ; var Gb = this . getVisibleElements = function ( g ) { g ||
( g = $ ( l ) . children ( ) ) ; var h = [ ] ; $ ( g ) . children ( ) . each ( function ( k , v ) { try { v . getBBox ( ) && h . push ( v ) } catch ( t ) { } } ) ; return h . reverse ( ) } , Rb = this . getVisibleElementsAndBBoxes = function ( g ) { g || ( g = $ ( l ) . children ( ) ) ; var h = [ ] ; $ ( g ) . children ( ) . each ( function ( k , v ) { try { v . getBBox ( ) && h . push ( { elem : v , bbox : getStrokedBBox ( [ v ] ) } ) } catch ( t ) { } } ) ; return h . reverse ( ) } , na = this . groupSvgElem = function ( g ) { var h = document . createElementNS ( c , "g" ) ; g . parentNode . replaceChild ( h , g ) ; $ ( h ) . append ( g ) . data ( "gsvg" , g ) [ 0 ] . id = M ( ) } , aa = function ( g ) { var h = document . createElementNS ( g . namespaceURI ,
2012-07-04 14:42:50 +00:00
g . nodeName ) ; h . removeAttribute ( "id" ) ; $ . each ( g . attributes , function ( v , t ) { t . localName != "-moz-math-font-style" && h . setAttributeNS ( t . namespaceURI , t . nodeName , t . nodeValue ) } ) ; if ( svgedit . browser . isWebkit ( ) && g . nodeName == "path" ) { var k = Ua . convertPath ( g ) ; h . setAttribute ( "d" , k ) } $ . each ( g . childNodes , function ( v , t ) { switch ( t . nodeType ) { case 1 : h . appendChild ( aa ( t ) ) ; break ; case 3 : h . textContent = t . nodeValue } } ) ; if ( $ ( g ) . data ( "gsvg" ) ) $ ( h ) . data ( "gsvg" , h . firstChild ) ; else if ( $ ( g ) . data ( "symbol" ) ) { g = $ ( g ) . data ( "symbol" ) ; $ ( h ) . data ( "ref" ,
2012-07-14 00:14:24 +00:00
g ) . data ( "symbol" , g ) } else h . tagName == "image" && ac ( h ) ; h . id = M ( ) ; console . log ( h ) ; return h } , ta , M , I ; ( function ( g ) { var h = { } ; ta = g . getId = function ( ) { return w ( ) . getId ( ) } ; M = g . getNextId = function ( ) { return w ( ) . getNextId ( ) } ; I = g . call = function ( k , v ) { if ( h [ k ] ) return h [ k ] ( this , v ) } ; g . bind = function ( k , v ) { var t = h [ k ] ; h [ k ] = v ; return t } } ) ( b ) ; this . prepareSvg = function ( g ) { this . sanitizeSvg ( g . documentElement ) ; g = g . getElementsByTagNameNS ( c , "path" ) ; for ( var h = 0 , k = g . length ; h < k ; ++ h ) { var v = g [ h ] ; v . setAttribute ( "d" , Ua . convertPath ( v ) ) ; Ua . fixEnd ( v ) } } ;
2012-07-14 02:04:34 +00:00
var Y = this . getRefElem = function ( g ) { return la ( pa ( g ) . substr ( 1 ) ) } , Pa = function ( g ) { if ( ! svgedit . browser . isGecko ( ) ) return g ; var h = g . cloneNode ( true ) ; g . parentNode . insertBefore ( h , g ) ; g . parentNode . removeChild ( g ) ; Qa . releaseSelector ( g ) ; K [ 0 ] = h ; Qa . requestSelector ( h ) . showGrips ( true ) ; return h } ; this . setRotationAngle = function ( g , h ) { g = parseFloat ( g ) ; var k = K [ 0 ] , v = k . getAttribute ( "transform" ) , t = svgedit . utilities . getBBox ( k ) , E = t . x + t . width / 2 , z = t . y + t . height / 2 ; t = V ( k ) ; t . numberOfItems > 0 && t . getItem ( 0 ) . type == 4 && t . removeItem ( 0 ) ; if ( g !=
0 ) { E = O ( E , z , ha ( t ) . matrix ) ; z = e . createSVGTransform ( ) ; z . setRotate ( g , E . x , E . y ) ; t . numberOfItems ? t . insertItemBefore ( z , 0 ) : t . appendItem ( z ) } else t . numberOfItems == 0 && k . removeAttribute ( "transform" ) ; if ( ! h ) { t = k . getAttribute ( "transform" ) ; k . setAttribute ( "transform" , v ) ; ob ( "transform" , t , K ) ; I ( "changed" , K ) } la ( "pathpointgrip_container" ) ; k = Qa . requestSelector ( K [ 0 ] ) ; k . resize ( ) ; k . updateGripCursors ( g ) } ; var Wa = this . recalculateAllSelectedDimensions = function ( ) { for ( var g = new Oa ( mb == "none" ? "position" : "size" ) , h = K . length ; h -- ; ) { var k =
pb ( K [ h ] ) ; k && g . addSubCommand ( k ) } if ( ! g . isEmpty ( ) ) { Ia ( g ) ; I ( "changed" , K ) } } , db = [ 0 , "z" , "M" , "m" , "L" , "l" , "C" , "c" , "Q" , "q" , "A" , "a" , "H" , "h" , "V" , "v" , "S" , "s" , "T" , "t" ] , tb = function ( g ) { console . log ( [ g . a , g . b , g . c , g . d , g . e , g . f ] ) } , ub = this . remapElement = function ( g , h , k ) { var v = m . gridSnapping && g . parentNode . parentNode . localName === "svg" , t = function ( ) { if ( v ) for ( var D in h ) h [ D ] = Ga ( h [ D ] ) ; ma ( g , h , 1E3 , true ) } ; box = svgedit . utilities . getBBox ( g ) ; for ( var E = 0 ; E < 2 ; E ++ ) { var z = E === 0 ? "fill" : "stroke" , s = g . getAttribute ( z ) ; if ( s && s . indexOf ( "url(" ) ===
0 ) if ( k . a < 0 || k . d < 0 ) { s = Y ( s ) . cloneNode ( true ) ; if ( k . a < 0 ) { var A = s . getAttribute ( "x1" ) , F = s . getAttribute ( "x2" ) ; s . setAttribute ( "x1" , - ( A - 1 ) ) ; s . setAttribute ( "x2" , - ( F - 1 ) ) } if ( k . d < 0 ) { A = s . getAttribute ( "y1" ) ; F = s . getAttribute ( "y2" ) ; s . setAttribute ( "y1" , - ( A - 1 ) ) ; s . setAttribute ( "y2" , - ( F - 1 ) ) } s . id = M ( ) ; xb ( ) . appendChild ( s ) ; g . setAttribute ( z , "url(#" + s . id + ")" ) } } E = g . tagName ; if ( E === "g" || E === "text" || E === "use" ) if ( k . a == 1 && k . b == 0 && k . c == 0 && k . d == 1 && ( k . e != 0 || k . f != 0 ) ) { z = ha ( g ) . matrix ; z = fa ( z . inverse ( ) , k , z ) ; h . x = parseFloat ( h . x ) + z . e ; h . y = parseFloat ( h . y ) +
2012-07-14 00:14:24 +00:00
z . f } else { z = V ( g ) ; s = e . createSVGTransform ( ) ; s . setMatrix ( fa ( ha ( z ) . matrix , k ) ) ; z . clear ( ) ; z . appendItem ( s ) } switch ( E ) { case "foreignObject" : case "rect" : case "image" : if ( E === "image" && ( k . a < 0 || k . d < 0 ) ) { z = V ( g ) ; s = e . createSVGTransform ( ) ; s . setMatrix ( fa ( ha ( z ) . matrix , k ) ) ; z . clear ( ) ; z . appendItem ( s ) } else { z = O ( h . x , h . y , k ) ; h . width = k . a * h . width ; h . height = k . d * h . height ; h . x = z . x + Math . min ( 0 , h . width ) ; h . y = z . y + Math . min ( 0 , h . height ) ; h . width = Math . abs ( h . width ) ; h . height = Math . abs ( h . height ) } t ( ) ; break ; case "ellipse" : E = O ( h . cx , h . cy , k ) ; h . cx = E . x ;
h . cy = E . y ; h . rx = k . a * h . rx ; h . ry = k . d * h . ry ; h . rx = Math . abs ( h . rx ) ; h . ry = Math . abs ( h . ry ) ; t ( ) ; break ; case "circle" : E = O ( h . cx , h . cy , k ) ; h . cx = E . x ; h . cy = E . y ; E = svgedit . math . transformBox ( box . x , box . y , box . width , box . height , k ) ; h . r = Math . min ( ( E . tr . x - E . tl . x ) / 2 , ( E . bl . y - E . tl . y ) / 2 ) ; if ( h . r ) h . r = Math . abs ( h . r ) ; t ( ) ; break ; case "line" : z = O ( h . x1 , h . y1 , k ) ; A = O ( h . x2 , h . y2 , k ) ; h . x1 = z . x ; h . y1 = z . y ; h . x2 = A . x ; h . y2 = A . y ; case "text" : k = g . querySelectorAll ( "tspan" ) ; for ( E = k . length ; E -- ; ) { z = qa ( "x" , g . getAttribute ( "x" ) ) ; s = qa ( "x" , k [ E ] . getAttribute ( "x" ) ) ; A = qa ( "y" ,
g . getAttribute ( "y" ) ) ; F = qa ( "y" , k [ E ] . getAttribute ( "y" ) ) ; var C = { } ; if ( ! isNaN ( z ) && ! isNaN ( s ) && z != 0 && s != 0 && h . x ) C . x = h . x - ( z - s ) ; if ( ! isNaN ( A ) && ! isNaN ( F ) && A != 0 && F != 0 && h . y ) C . y = h . y - ( A - F ) ; if ( C . x || C . y ) ma ( k [ E ] , C , 1E3 , true ) } t ( ) ; break ; case "use" : t ( ) ; break ; case "g" : ( t = $ ( g ) . data ( "gsvg" ) ) && ma ( t , h , 1E3 , true ) ; break ; case "polyline" : case "polygon" : t = h . points . length ; for ( E = 0 ; E < t ; ++ E ) { F = h . points [ E ] ; F = O ( F . x , F . y , k ) ; h . points [ E ] . x = F . x ; h . points [ E ] . y = F . y } t = h . points . length ; k = "" ; for ( E = 0 ; E < t ; ++ E ) { F = h . points [ E ] ; k += F . x + "," + F . y + " " } g . setAttribute ( "points" ,
k ) ; break ; case "path" : z = g . pathSegList ; t = z . numberOfItems ; h . d = Array ( t ) ; for ( E = 0 ; E < t ; ++ E ) { s = z . getItem ( E ) ; h . d [ E ] = { type : s . pathSegType , x : s . x , y : s . y , x1 : s . x1 , y1 : s . y1 , x2 : s . x2 , y2 : s . y2 , r1 : s . r1 , r2 : s . r2 , angle : s . angle , largeArcFlag : s . largeArcFlag , sweepFlag : s . sweepFlag } } t = h . d . length ; E = h . d [ 0 ] ; C = O ( E . x , E . y , k ) ; h . d [ 0 ] . x = C . x ; h . d [ 0 ] . y = C . y ; for ( E = 1 ; E < t ; ++ E ) { s = h . d [ E ] ; z = s . type ; if ( z % 2 == 0 ) { F = O ( s . x != undefined ? s . x : C . x , s . y != undefined ? s . y : C . y , k ) ; z = O ( s . x1 , s . y1 , k ) ; A = O ( s . x2 , s . y2 , k ) ; s . x = F . x ; s . y = F . y ; s . x1 = z . x ; s . y1 = z . y ; s . x2 = A . x ; s . y2 = A . y } else { s . x =
k . a * s . x ; s . y = k . d * s . y ; s . x1 = k . a * s . x1 ; s . y1 = k . d * s . y1 ; s . x2 = k . a * s . x2 ; s . y2 = k . d * s . y2 } s . r1 = k . a * s . r1 ; s . r2 = k . d * s . r2 } k = "" ; t = h . d . length ; for ( E = 0 ; E < t ; ++ E ) { s = h . d [ E ] ; z = s . type ; k += db [ z ] ; switch ( z ) { case 13 : case 12 : k += s . x + " " ; break ; case 15 : case 14 : k += s . y + " " ; break ; case 3 : case 5 : case 19 : case 2 : case 4 : case 18 : k += s . x + "," + s . y + " " ; break ; case 7 : case 6 : k += s . x1 + "," + s . y1 + " " + s . x2 + "," + s . y2 + " " + s . x + "," + s . y + " " ; break ; case 9 : case 8 : k += s . x1 + "," + s . y1 + " " + s . x + "," + s . y + " " ; break ; case 11 : case 10 : k += s . r1 + "," + s . r2 + " " + s . angle + " " + + s . largeArcFlag +
2012-07-14 02:04:34 +00:00
" " + + s . sweepFlag + " " + s . x + "," + s . y + " " ; break ; case 17 : case 16 : k += s . x2 + "," + s . y2 + " " + s . x + "," + s . y + " " } } g . setAttribute ( "d" , k ) } } , zb = function ( g , h , k ) { g = Y ( g ) . firstChild ; var v = V ( g ) , t = e . createSVGTransform ( ) ; t . setTranslate ( h , k ) ; v . appendItem ( t ) ; pb ( g ) } , pb = this . recalculateDimensions = function ( g ) { if ( g == null ) return null ; var h = V ( g ) ; if ( h && h . numberOfItems > 0 ) { for ( var k = h . numberOfItems ; k -- ; ) { var v = h . getItem ( k ) ; if ( v . type === 0 ) h . removeItem ( k ) ; else if ( v . type === 1 ) svgedit . math . isIdentity ( v . matrix ) && h . removeItem ( k ) ; else v . type ===
2012-07-04 14:42:50 +00:00
4 && v . angle === 0 && h . removeItem ( k ) } if ( h . numberOfItems === 1 && ra ( g ) ) return null } if ( ! h || h . numberOfItems == 0 ) { g . removeAttribute ( "transform" ) ; return null } if ( h ) { k = h . numberOfItems ; for ( var t = [ ] ; k -- ; ) { v = h . getItem ( k ) ; if ( v . type === 1 ) t . push ( [ v . matrix , k ] ) ; else if ( t . length ) t = [ ] } if ( t . length === 2 ) { k = e . createSVGTransformFromMatrix ( fa ( t [ 1 ] [ 0 ] , t [ 0 ] [ 0 ] ) ) ; h . removeItem ( t [ 0 ] [ 1 ] ) ; h . removeItem ( t [ 1 ] [ 1 ] ) ; h . insertItemBefore ( k , t [ 1 ] [ 1 ] ) } k = h . numberOfItems ; if ( k >= 2 && h . getItem ( k - 2 ) . type === 1 && h . getItem ( k - 1 ) . type === 2 ) { t = e . createSVGTransform ( ) ;
2012-07-14 00:14:24 +00:00
v = fa ( h . getItem ( k - 2 ) . matrix , h . getItem ( k - 1 ) . matrix ) ; t . setMatrix ( v ) ; h . removeItem ( k - 2 ) ; h . removeItem ( k - 2 ) ; h . appendItem ( t ) } } switch ( g . tagName ) { case "line" : case "polyline" : case "polygon" : case "path" : break ; default : if ( h . numberOfItems === 1 && h . getItem ( 0 ) . type === 1 || h . numberOfItems === 2 && h . getItem ( 0 ) . type === 1 && h . getItem ( 0 ) . type === 4 ) return null } var E = $ ( g ) . data ( "gsvg" ) ; k = new Oa ( "Transform" ) ; var z = { } , s = null ; v = [ ] ; switch ( g . tagName ) { case "line" : v = [ "x1" , "y1" , "x2" , "y2" ] ; break ; case "circle" : v = [ "cx" , "cy" , "r" ] ; break ; case "ellipse" : v =
[ "cx" , "cy" , "rx" , "ry" ] ; break ; case "foreignObject" : case "rect" : case "image" : v = [ "width" , "height" , "x" , "y" ] ; break ; case "use" : case "text" : case "tspan" : v = [ "x" , "y" ] ; break ; case "polygon" : case "polyline" : s = { } ; s . points = g . getAttribute ( "points" ) ; t = g . points ; var A = t . numberOfItems ; z . points = Array ( A ) ; for ( var F = 0 ; F < A ; ++ F ) { var C = t . getItem ( F ) ; z . points [ F ] = { x : C . x , y : C . y } } break ; case "path" : s = { } ; s . d = g . getAttribute ( "d" ) ; z . d = g . getAttribute ( "d" ) } if ( v . length ) { z = $ ( g ) . attr ( v ) ; $ . each ( z , function ( Db , gb ) { z [ Db ] = qa ( Db , gb ) } ) } else if ( E ) z =
{ x : $ ( E ) . attr ( "x" ) || 0 , y : $ ( E ) . attr ( "y" ) || 0 } ; if ( s == null ) { s = $ . extend ( true , { } , z ) ; $ . each ( s , function ( Db , gb ) { s [ Db ] = qa ( Db , gb ) } ) } s . transform = Za ? Za : "" ; if ( g . tagName == "g" && ! E || g . tagName == "a" ) { t = svgedit . utilities . getBBox ( g ) ; var D = { x : t . x + t . width / 2 , y : t . y + t . height / 2 } , G = O ( t . x + t . width / 2 , t . y + t . height / 2 , ha ( h ) . matrix ) ; v = e . createSVGMatrix ( ) ; if ( t = ra ( g ) ) { F = t * Math . PI / 180 ; A = Math . abs ( F ) > 1.0 E - 10 ? Math . sin ( F ) / ( 1 - Math . cos ( F ) ) : 2 / F ; for ( F = 0 ; F < h . numberOfItems ; ++ F ) { v = h . getItem ( F ) ; if ( v . type == 4 ) { v = v . matrix ; D . y = ( A * v . e + v . f ) / 2 ; D . x = ( v . e - A *
2012-07-14 02:04:34 +00:00
v . f ) / 2 ; h . removeItem ( F ) ; break } } } F = v = E = 0 ; var H = h . numberOfItems ; if ( H ) var P = h . getItem ( 0 ) . matrix ; if ( H >= 3 && h . getItem ( H - 2 ) . type == 3 && h . getItem ( H - 3 ) . type == 2 && h . getItem ( H - 1 ) . type == 2 ) { F = 3 ; var R = h . getItem ( H - 3 ) . matrix , W = h . getItem ( H - 2 ) . matrix , ua = h . getItem ( H - 1 ) . matrix ; A = g . childNodes ; for ( C = A . length ; C -- ; ) { var wa = A . item ( C ) ; v = E = 0 ; if ( wa . nodeType == 1 ) { var ga = V ( wa ) ; if ( ga ) { v = ha ( ga ) . matrix ; E = ra ( wa ) ; var ka = Za , oa = [ ] ; Za = wa . getAttribute ( "transform" ) ; if ( E || sa ( ga ) ) { var za = e . createSVGTransform ( ) ; za . setMatrix ( fa ( R , W , ua , v ) ) ; ga . clear ( ) ;
ga . appendItem ( za ) ; oa . push ( za ) } else { E = fa ( v . inverse ( ) , ua , v ) ; za = e . createSVGMatrix ( ) ; za . e = - E . e ; za . f = - E . f ; v = fa ( za . inverse ( ) , v . inverse ( ) , R , W , ua , v , E . inverse ( ) ) ; var hb = e . createSVGTransform ( ) , Hb = e . createSVGTransform ( ) , Ib = e . createSVGTransform ( ) ; hb . setTranslate ( E . e , E . f ) ; Hb . setScale ( v . a , v . d ) ; Ib . setTranslate ( za . e , za . f ) ; ga . appendItem ( Ib ) ; ga . appendItem ( Hb ) ; ga . appendItem ( hb ) ; oa . push ( Ib ) ; oa . push ( Hb ) ; oa . push ( hb ) } k . addSubCommand ( pb ( wa ) ) ; Za = ka } } } h . removeItem ( H - 1 ) ; h . removeItem ( H - 2 ) ; h . removeItem ( H - 3 ) } else if ( H >= 3 && h . getItem ( H -
1 ) . type == 1 ) { F = 3 ; v = ha ( h ) . matrix ; za = e . createSVGTransform ( ) ; za . setMatrix ( v ) ; h . clear ( ) ; h . appendItem ( za ) } else if ( ( H == 1 || H > 1 && h . getItem ( 1 ) . type != 3 ) && h . getItem ( 0 ) . type == 2 ) { F = 2 ; E = ha ( h ) . matrix ; h . removeItem ( 0 ) ; v = ha ( h ) . matrix . inverse ( ) ; v = fa ( v , E ) ; E = v . e ; v = v . f ; if ( E != 0 || v != 0 ) { A = g . childNodes ; C = A . length ; for ( H = [ ] ; C -- ; ) { wa = A . item ( C ) ; if ( wa . nodeType == 1 ) { if ( wa . getAttribute ( "clip-path" ) ) { ka = wa . getAttribute ( "clip-path" ) ; if ( H . indexOf ( ka ) === - 1 ) { zb ( ka , E , v ) ; H . push ( ka ) } } ka = Za ; Za = wa . getAttribute ( "transform" ) ; if ( ga = V ( wa ) ) { R = e . createSVGTransform ( ) ;
R . setTranslate ( E , v ) ; ga . numberOfItems ? ga . insertItemBefore ( R , 0 ) : ga . appendItem ( R ) ; k . addSubCommand ( pb ( wa ) ) ; ga = g . getElementsByTagNameNS ( c , "use" ) ; wa = "#" + wa . id ; for ( R = ga . length ; R -- ; ) { W = ga . item ( R ) ; if ( wa == ba ( W ) ) { ua = e . createSVGTransform ( ) ; ua . setTranslate ( - E , - v ) ; V ( W ) . insertItemBefore ( ua , 0 ) ; k . addSubCommand ( pb ( W ) ) } } Za = ka } } } H = [ ] ; Za = ka } } else if ( H == 1 && h . getItem ( 0 ) . type == 1 && ! t ) { F = 1 ; v = h . getItem ( 0 ) . matrix ; A = g . childNodes ; for ( C = A . length ; C -- ; ) { wa = A . item ( C ) ; if ( wa . nodeType == 1 ) { ka = Za ; Za = wa . getAttribute ( "transform" ) ; if ( ga =
V ( wa ) ) { E = fa ( v , ha ( ga ) . matrix ) ; H = e . createSVGTransform ( ) ; H . setMatrix ( E ) ; ga . clear ( ) ; ga . appendItem ( H , 0 ) ; k . addSubCommand ( pb ( wa ) ) ; Za = ka ; ka = wa . getAttribute ( "stroke-width" ) ; wa . getAttribute ( "stroke" ) !== "none" && ! isNaN ( ka ) && wa . setAttribute ( "stroke-width" , ka * ( ( Math . abs ( E . a ) + Math . abs ( E . d ) ) / 2 ) ) } } } h . clear ( ) } else { if ( t ) { D = e . createSVGTransform ( ) ; D . setRotate ( t , G . x , G . y ) ; h . numberOfItems ? h . insertItemBefore ( D , 0 ) : h . appendItem ( D ) } h . numberOfItems == 0 && g . removeAttribute ( "transform" ) ; return null } if ( F == 2 ) { if ( t ) { G = { x : D . x + P . e , y : D . y +
P . f } ; D = e . createSVGTransform ( ) ; D . setRotate ( t , G . x , G . y ) ; h . numberOfItems ? h . insertItemBefore ( D , 0 ) : h . appendItem ( D ) } } else if ( F == 3 ) { v = ha ( h ) . matrix ; P = e . createSVGTransform ( ) ; P . setRotate ( t , D . x , D . y ) ; P = P . matrix ; D = e . createSVGTransform ( ) ; D . setRotate ( t , G . x , G . y ) ; G = D . matrix . inverse ( ) ; ka = v . inverse ( ) ; G = fa ( ka , G , P , v ) ; E = G . e ; v = G . f ; if ( E != 0 || v != 0 ) { A = g . childNodes ; for ( C = A . length ; C -- ; ) { wa = A . item ( C ) ; if ( wa . nodeType == 1 ) { ka = Za ; Za = wa . getAttribute ( "transform" ) ; ga = V ( wa ) ; R = e . createSVGTransform ( ) ; R . setTranslate ( E , v ) ; ga . numberOfItems ?
ga . insertItemBefore ( R , 0 ) : ga . appendItem ( R ) ; k . addSubCommand ( pb ( wa ) ) ; Za = ka } } } if ( t ) h . numberOfItems ? h . insertItemBefore ( D , 0 ) : h . appendItem ( D ) } } else { t = svgedit . utilities . getBBox ( g ) ; if ( ! t && g . tagName != "path" ) return null ; v = e . createSVGMatrix ( ) ; if ( E = ra ( g ) ) { D = { x : t . x + t . width / 2 , y : t . y + t . height / 2 } ; G = O ( t . x + t . width / 2 , t . y + t . height / 2 , ha ( h ) . matrix ) ; F = E * Math . PI / 180 ; A = Math . abs ( F ) > 1.0 E - 10 ? Math . sin ( F ) / ( 1 - Math . cos ( F ) ) : 2 / F ; for ( F = 0 ; F < h . numberOfItems ; ++ F ) { v = h . getItem ( F ) ; if ( v . type == 4 ) { v = v . matrix ; D . y = ( A * v . e + v . f ) / 2 ; D . x = ( v . e - A * v . f ) /
2 ; h . removeItem ( F ) ; break } } } F = 0 ; H = h . numberOfItems ; if ( ! svgedit . browser . isWebkit ( ) ) if ( ( P = g . getAttribute ( "fill" ) ) && P . indexOf ( "url(" ) === 0 ) { P = Y ( P ) ; ka = "pattern" ; if ( P . tagName !== ka ) ka = "gradient" ; if ( P . getAttribute ( ka + "Units" ) === "userSpaceOnUse" ) { v = ha ( h ) . matrix ; t = V ( P ) ; t = ha ( t ) . matrix ; v = fa ( v , t ) ; t = "matrix(" + [ v . a , v . b , v . c , v . d , v . e , v . f ] . join ( "," ) + ")" ; P . setAttribute ( ka + "Transform" , t ) } } if ( H >= 3 && h . getItem ( H - 2 ) . type == 3 && h . getItem ( H - 3 ) . type == 2 && h . getItem ( H - 1 ) . type == 2 ) { F = 3 ; v = ha ( h , H - 3 , H - 1 ) . matrix ; h . removeItem ( H - 1 ) ; h . removeItem ( H -
2 ) ; h . removeItem ( H - 3 ) } else if ( H == 4 && h . getItem ( H - 1 ) . type == 1 ) { F = 3 ; v = ha ( h ) . matrix ; za = e . createSVGTransform ( ) ; za . setMatrix ( v ) ; h . clear ( ) ; h . appendItem ( za ) ; v = e . createSVGMatrix ( ) } else if ( ( H == 1 || H > 1 && h . getItem ( 1 ) . type != 3 ) && h . getItem ( 0 ) . type == 2 ) { F = 2 ; P = h . getItem ( 0 ) . matrix ; ka = ha ( h , 1 ) . matrix ; t = ka . inverse ( ) ; v = fa ( t , P , ka ) ; h . removeItem ( 0 ) } else if ( H == 1 && h . getItem ( 0 ) . type == 1 && ! E ) { v = ha ( h ) . matrix ; switch ( g . tagName ) { case "line" : z = $ ( g ) . attr ( [ "x1" , "y1" , "x2" , "y2" ] ) ; case "polyline" : case "polygon" : z . points = g . getAttribute ( "points" ) ;
if ( z . points ) { t = g . points ; A = t . numberOfItems ; z . points = Array ( A ) ; for ( F = 0 ; F < A ; ++ F ) { C = t . getItem ( F ) ; z . points [ F ] = { x : C . x , y : C . y } } } case "path" : z . d = g . getAttribute ( "d" ) ; F = 1 ; h . clear ( ) } } else { F = 4 ; if ( E ) { D = e . createSVGTransform ( ) ; D . setRotate ( E , G . x , G . y ) ; h . numberOfItems ? h . insertItemBefore ( D , 0 ) : h . appendItem ( D ) } h . numberOfItems == 0 && g . removeAttribute ( "transform" ) ; return null } if ( F == 1 || F == 2 || F == 3 ) ub ( g , z , v ) ; if ( F == 2 ) { if ( E ) { sa ( h ) || ( G = { x : D . x + v . e , y : D . y + v . f } ) ; D = e . createSVGTransform ( ) ; D . setRotate ( E , G . x , G . y ) ; h . numberOfItems ? h . insertItemBefore ( D ,
0 ) : h . appendItem ( D ) } } else if ( F == 3 && E ) { v = ha ( h ) . matrix ; P = e . createSVGTransform ( ) ; P . setRotate ( E , D . x , D . y ) ; P = P . matrix ; D = e . createSVGTransform ( ) ; D . setRotate ( E , G . x , G . y ) ; G = D . matrix . inverse ( ) ; ka = v . inverse ( ) ; G = fa ( ka , G , P , v ) ; ub ( g , z , G ) ; if ( E ) h . numberOfItems ? h . insertItemBefore ( D , 0 ) : h . appendItem ( D ) } } h . numberOfItems == 0 && g . removeAttribute ( "transform" ) ; k . addSubCommand ( new Xa ( g , s ) ) ; return k } , Mb = null , ab = this . clearSelection = function ( g ) { if ( K [ 0 ] != null ) for ( var h = K . length , k = 0 ; k < h ; ++ k ) { var v = K [ k ] ; if ( v == null ) break ; Qa . releaseSelector ( v ) ;
K [ k ] = null } g || I ( "selected" , K ) } , Jb = this . addToSelection = function ( g , h ) { if ( g . length != 0 ) { for ( var k = 0 ; k < K . length ; ) { if ( K [ k ] == null ) break ; ++ k } for ( var v = g . length ; v -- ; ) { var t = g [ v ] ; if ( t && svgedit . utilities . getBBox ( t ) ) { if ( t . tagName === "a" && t . childNodes . length === 1 ) t = t . firstChild ; if ( K . indexOf ( t ) == - 1 ) { K [ k ] = t ; k ++ ; t = Qa . requestSelector ( t ) ; K . length > 1 && t . showGrips ( false ) } } } I ( "selected" , K ) ; h || K . length == 1 ? Qa . requestSelector ( K [ 0 ] ) . showGrips ( true ) : Qa . requestSelector ( K [ 0 ] ) . showGrips ( false ) ; for ( K . sort ( function ( E , z ) { if ( E && z && E . compareDocumentPosition ) return 3 -
( z . compareDocumentPosition ( E ) & 6 ) ; else if ( E == null ) return 1 } ) ; K [ 0 ] == null ; ) K . shift ( 0 ) } } , Qb = this . selectOnly = function ( g , h ) { ab ( true ) ; Jb ( g , h ) } ; this . removeFromSelection = function ( g ) { if ( K [ 0 ] != null ) if ( g . length != 0 ) { var h = Array ( K . length ) ; j = 0 ; len = K . length ; for ( var k = 0 ; k < len ; ++ k ) { var v = K [ k ] ; if ( v ) if ( g . indexOf ( v ) == - 1 ) { h [ j ] = v ; j ++ } else Qa . releaseSelector ( v ) } K = h } } ; this . selectAllInCurrentLayer = function ( ) { var g = w ( ) . getCurrentLayer ( ) ; if ( g ) { Ma = "select" ; Qb ( $ ( L || g ) . children ( ) ) } } ; var Kb = this . getMouseTarget = function ( g ) { if ( g ==
2012-07-14 00:14:24 +00:00
null ) return null ; g = g . target ; if ( g . correspondingUseElement ) g = g . correspondingUseElement ; if ( [ "http://www.w3.org/1998/Math/MathML" , "http://www.w3.org/1999/xhtml" ] . indexOf ( g . namespaceURI ) >= 0 && g . id != "svgcanvas" ) for ( ; g . nodeName != "foreignObject" ; ) { g = g . parentNode ; if ( ! g ) return e } var h = w ( ) . getCurrentLayer ( ) ; if ( [ e , a , l , h ] . indexOf ( g ) >= 0 ) return e ; if ( $ ( g ) . closest ( "#selectorParentGroup" ) . length ) return Qa . selectorParentGroup ; for ( ; g . parentNode !== ( L || h ) ; ) g = g . parentNode ; return g } ; ( function ( ) { var g = null , h = null , k = null , v =
2012-07-14 02:04:34 +00:00
null , t = null , E = { } , z = { minx : null , miny : null , maxx : null , maxy : null } ; $ ( a ) . mousedown ( function ( s ) { if ( ! ( b . spaceKey || s . button === 1 ) ) { var A = s . button === 2 ; s . altKey && svgCanvas . cloneSelectedElements ( 0 , 0 ) ; Mb = l . getScreenCTM ( ) . inverse ( ) ; var F = O ( s . pageX , s . pageY , Mb ) , C = F . x * p , D = F . y * p ; s . preventDefault ( ) ; if ( A ) { Ma = "select" ; sb = F } F = C / p ; D = D / p ; var G = Kb ( s ) ; if ( G . tagName === "a" && G . childNodes . length === 1 ) G = G . firstChild ; C = v = h = F ; var H = t = k = D ; if ( m . gridSnapping ) { F = Ga ( F ) ; D = Ga ( D ) ; h = Ga ( h ) ; k = Ga ( k ) } if ( G == Qa . selectorParentGroup && K [ 0 ] != null ) { G = s . target ;
var P = lb ( G , "type" ) ; if ( P == "rotate" ) { Ma = "rotate" ; current _rotate _mode = lb ( G , "dir" ) } else if ( P == "resize" ) { Ma = "resize" ; mb = lb ( G , "dir" ) } G = K [ 0 ] } Za = G . getAttribute ( "transform" ) ; P = V ( G ) ; switch ( Ma ) { case "select" : Ja = true ; mb = "none" ; if ( A ) Ja = false ; if ( G != e ) { if ( K . indexOf ( G ) == - 1 ) { s . shiftKey || ab ( true ) ; Jb ( [ G ] ) ; Pb = G ; Ua . clear ( ) } if ( ! A ) for ( A = 0 ; A < K . length ; ++ A ) if ( K [ A ] != null ) { var R = V ( K [ A ] ) ; R . numberOfItems ? R . insertItemBefore ( e . createSVGTransform ( ) , 0 ) : R . appendItem ( e . createSVGTransform ( ) ) } } else if ( ! A ) { ab ( ) ; Ma = "multiselect" ; if ( xa ==
null ) xa = Qa . getRubberBandBox ( ) ; v *= p ; t *= p ; ma ( xa , { x : v , y : t , width : 0 , height : 0 , display : "inline" } , 100 ) } break ; case "zoom" : Ja = true ; if ( xa == null ) xa = Qa . getRubberBandBox ( ) ; ma ( xa , { x : C * p , y : C * p , width : 0 , height : 0 , display : "inline" } , 100 ) ; break ; case "resize" : Ja = true ; h = F ; k = D ; E = svgedit . utilities . getBBox ( $ ( "#selectedBox0" ) [ 0 ] ) ; var W = { } ; $ . each ( E , function ( ua , wa ) { W [ ua ] = wa / p } ) ; E = W ; A = ra ( G ) ? 1 : 0 ; if ( sa ( P ) ) { P . insertItemBefore ( e . createSVGTransform ( ) , A ) ; P . insertItemBefore ( e . createSVGTransform ( ) , A ) ; P . insertItemBefore ( e . createSVGTransform ( ) ,
A ) } else { P . appendItem ( e . createSVGTransform ( ) ) ; P . appendItem ( e . createSVGTransform ( ) ) ; P . appendItem ( e . createSVGTransform ( ) ) ; if ( svgedit . browser . supportsNonScalingStroke ( ) ) { if ( F = svgedit . browser . isChrome ( ) ) R = function ( ua ) { var wa = ua . getAttributeNS ( null , "stroke" ) ; ua . removeAttributeNS ( null , "stroke" ) ; setTimeout ( function ( ) { ua . setAttributeNS ( null , "stroke" , wa ) } , 1 ) } ; G . style . vectorEffect = "non-scaling-stroke" ; F && R ( G ) ; D = G . getElementsByTagName ( "*" ) ; C = D . length ; for ( A = 0 ; A < C ; A ++ ) { D [ A ] . style . vectorEffect = "non-scaling-stroke" ;
F && R ( D [ A ] ) } } } break ; case "fhellipse" : case "fhrect" : case "fhpath" : Ja = true ; g = C + "," + H + " " ; R = N . stroke _width == 0 ? 1 : N . stroke _width ; da ( { element : "polyline" , curStyles : true , attr : { points : g , id : M ( ) , fill : "none" , opacity : N . opacity / 2 , "stroke-linecap" : "round" , style : "pointer-events:none" } } ) ; z . minx = C ; z . maxx = C ; z . miny = H ; z . maxy = H ; break ; case "image" : Ja = true ; R = da ( { element : "image" , attr : { x : F , y : D , width : 0 , height : 0 , id : M ( ) , opacity : N . opacity / 2 , style : "pointer-events:inherit" } } ) ; S ( R , La ) ; ac ( R ) ; break ; case "square" : case "rect" : Ja = true ;
h = F ; k = D ; da ( { element : "rect" , curStyles : true , attr : { x : F , y : D , width : 0 , height : 0 , id : M ( ) , opacity : N . opacity / 2 } } ) ; break ; case "line" : Ja = true ; R = N . stroke _width == 0 ? 1 : N . stroke _width ; da ( { element : "line" , curStyles : true , attr : { x1 : F , y1 : D , x2 : F , y2 : D , id : M ( ) , stroke : N . stroke , "stroke-width" : R , "stroke-dasharray" : N . stroke _dasharray , "stroke-linejoin" : N . stroke _linejoin , "stroke-linecap" : N . stroke _linecap , "stroke-opacity" : N . stroke _opacity , fill : "none" , opacity : N . opacity / 2 , style : "pointer-events:none" } } ) ; break ; case "circle" : Ja = true ; da ( { element : "circle" ,
2012-07-14 00:14:24 +00:00
curStyles : true , attr : { cx : F , cy : D , r : 0 , id : M ( ) , opacity : N . opacity / 2 } } ) ; break ; case "ellipse" : Ja = true ; da ( { element : "ellipse" , curStyles : true , attr : { cx : F , cy : D , rx : 0 , ry : 0 , id : M ( ) , opacity : N . opacity / 2 } } ) ; break ; case "text" : Ja = true ; da ( { element : "text" , curStyles : true , attr : { x : F , y : D , id : M ( ) , fill : eb . fill , "stroke-width" : eb . stroke _width , "font-size" : eb . font _size , "font-family" : eb . font _family , "text-anchor" : "left" , "xml:space" : "preserve" , opacity : N . opacity } } ) ; break ; case "path" : case "pathedit" : h *= p ; k *= p ; Ua . mouseDown ( s , G , h , k ) ; Ja = true ;
2012-07-14 02:04:34 +00:00
break ; case "textedit" : h *= p ; k *= p ; qb . mouseDown ( s , G , h , k ) ; Ja = true ; break ; case "rotate" : Ja = true ; b . undoMgr . beginUndoableChange ( "transform" , K ) ; document . getElementById ( "workarea" ) . className = "rotate" } R = kb ( "mouseDown" , { event : s , start _x : h , start _y : k , selectedElements : K } , true ) ; $ . each ( R , function ( ua , wa ) { if ( wa && wa . started ) Ja = true } ) ; if ( Ma ) document . getElementById ( "workarea" ) . className = Ma == "resize" ? s . target . style . cursor : Ma } } ) . mousemove ( function ( s ) { if ( Ja ) if ( ! ( s . button === 1 || b . spaceKey ) ) { var A = K [ 0 ] , F = O ( s . pageX , s . pageY , Mb ) ,
C = F . x * p ; F = F . y * p ; var D = la ( ta ( ) ) , G = x = C / p , H = y = F / p ; if ( m . gridSnapping ) { x = Ga ( x ) ; y = Ga ( y ) } s . preventDefault ( ) ; switch ( Ma ) { case "select" : if ( K [ 0 ] !== null ) { G = x - h ; var P = y - k ; if ( m . gridSnapping ) { G = Ga ( G ) ; P = Ga ( P ) } if ( s . shiftKey ) { var R = ca ( h , k , x , y ) ; x = R . x ; y = R . y } if ( G != 0 || P != 0 ) { R = K . length ; for ( H = 0 ; H < R ; ++ H ) { A = K [ H ] ; if ( A == null ) break ; var W = e . createSVGTransform ( ) ; D = V ( A ) ; W . setTranslate ( G , P ) ; D . numberOfItems ? D . replaceItem ( W , 0 ) : D . appendItem ( W ) ; Qa . requestSelector ( A ) . resize ( ) } I ( "transition" , K ) } } break ; case "multiselect" : G *= p ; H *= p ; ma ( xa ,
{ x : Math . min ( v , G ) , y : Math . min ( t , H ) , width : Math . abs ( G - v ) , height : Math . abs ( H - t ) } , 100 ) ; D = [ ] ; G = [ ] ; W = Lb ( ) ; R = K . length ; for ( H = 0 ; H < R ; ++ H ) { P = W . indexOf ( K [ H ] ) ; if ( P == - 1 ) D . push ( K [ H ] ) ; else W [ P ] = null } R = W . length ; for ( H = 0 ; H < R ; ++ H ) W [ H ] && G . push ( W [ H ] ) ; D . length > 0 && b . removeFromSelection ( D ) ; G . length > 0 && Jb ( G ) ; break ; case "resize" : D = V ( A ) ; G = ( R = sa ( D ) ) ? E : svgedit . utilities . getBBox ( A ) ; H = G . x ; W = G . y ; var ua = G . width , wa = G . height ; G = x - h ; P = y - k ; if ( m . gridSnapping ) { G = Ga ( G ) ; P = Ga ( P ) ; wa = Ga ( wa ) ; ua = Ga ( ua ) } var ga = ra ( A ) ; if ( ga ) { var ka = Math . sqrt ( G * G + P * P ) ;
P = Math . atan2 ( P , G ) - ga * Math . PI / 180 ; G = ka * Math . cos ( P ) ; P = ka * Math . sin ( P ) } if ( mb . indexOf ( "n" ) == - 1 && mb . indexOf ( "s" ) == - 1 ) P = 0 ; if ( mb . indexOf ( "e" ) == - 1 && mb . indexOf ( "w" ) == - 1 ) G = 0 ; var oa = ka = 0 , za = wa ? ( wa + P ) / wa : 1 , hb = ua ? ( ua + G ) / ua : 1 ; if ( mb . indexOf ( "n" ) >= 0 ) { za = wa ? ( wa - P ) / wa : 1 ; oa = wa } if ( mb . indexOf ( "w" ) >= 0 ) { hb = ua ? ( ua - G ) / ua : 1 ; ka = ua } G = e . createSVGTransform ( ) ; P = e . createSVGTransform ( ) ; ua = e . createSVGTransform ( ) ; if ( m . gridSnapping ) { H = Ga ( H ) ; ka = Ga ( ka ) ; W = Ga ( W ) ; oa = Ga ( oa ) } G . setTranslate ( - ( H + ka ) , - ( W + oa ) ) ; if ( s . shiftKey ) if ( hb == 1 ) hb = za ; else za =
hb ; P . setScale ( hb , za ) ; ua . setTranslate ( H + ka , W + oa ) ; if ( R ) { R = ga ? 1 : 0 ; D . replaceItem ( G , 2 + R ) ; D . replaceItem ( P , 1 + R ) ; D . replaceItem ( ua , 0 + R ) } else { R = D . numberOfItems ; D . replaceItem ( ua , R - 3 ) ; D . replaceItem ( P , R - 2 ) ; D . replaceItem ( G , R - 1 ) } Qa . requestSelector ( A ) . resize ( ) ; I ( "transition" , K ) ; break ; case "zoom" : G *= p ; H *= p ; ma ( xa , { x : Math . min ( v * p , G ) , y : Math . min ( t * p , H ) , width : Math . abs ( G - v * p ) , height : Math . abs ( H - t * p ) } , 100 ) ; break ; case "text" : ma ( D , { x : x , y : y } , 1E3 ) ; break ; case "line" : G = null ; window . opera || e . suspendRedraw ( 1E3 ) ; if ( m . gridSnapping ) { x =
Ga ( x ) ; y = Ga ( y ) } H = x ; R = y ; if ( s . shiftKey ) { R = ca ( h , k , H , R ) ; H = R . x ; R = R . y } D . setAttributeNS ( null , "x2" , H ) ; D . setAttributeNS ( null , "y2" , R ) ; window . opera || e . unsuspendRedraw ( G ) ; break ; case "foreignObject" : case "square" : case "rect" : case "image" : G = Math . abs ( x - h ) ; R = Math . abs ( y - k ) ; if ( Ma == "square" || s . shiftKey ) { G = R = Math . max ( G , R ) ; H = h < x ? h : h - G ; W = k < y ? k : k - R } else { H = Math . min ( h , x ) ; W = Math . min ( k , y ) } if ( s . altKey ) { G *= 2 ; R *= 2 ; H = h - G / 2 ; W = k - R / 2 } if ( m . gridSnapping ) { G = Ga ( G ) ; R = Ga ( R ) ; H = Ga ( H ) ; W = Ga ( W ) } ma ( D , { width : G , height : R , x : H , y : W } , 1E3 ) ; break ; case "circle" : G =
$ ( D ) . attr ( [ "cx" , "cy" ] ) ; R = G . cx ; H = G . cy ; G = Math . sqrt ( ( x - R ) * ( x - R ) + ( y - H ) * ( y - H ) ) ; if ( m . gridSnapping ) G = Ga ( G ) ; D . setAttributeNS ( null , "r" , G ) ; break ; case "ellipse" : $ ( D ) . attr ( [ "cx" , "cy" ] ) ; R = Math . abs ( h + ( x - h ) / 2 ) ; H = Math . abs ( k + ( y - k ) / 2 ) ; G = null ; window . opera || e . suspendRedraw ( 1E3 ) ; if ( m . gridSnapping ) { x = Ga ( x ) ; R = Ga ( R ) ; y = Ga ( y ) ; H = Ga ( H ) } W = Math . abs ( h - R ) ; P = Math . abs ( k - H ) ; if ( s . shiftKey ) { P = W ; H = y > k ? k + W : k - W } if ( s . altKey ) { R = h ; H = k ; W = Math . abs ( x - R ) ; P = s . shiftKey ? W : Math . abs ( y - H ) } D . setAttributeNS ( null , "rx" , W ) ; D . setAttributeNS ( null , "ry" , P ) ;
D . setAttributeNS ( null , "cx" , R ) ; D . setAttributeNS ( null , "cy" , H ) ; window . opera || e . unsuspendRedraw ( G ) ; break ; case "fhellipse" : case "fhrect" : z . minx = Math . min ( G , z . minx ) ; z . maxx = Math . max ( G , z . maxx ) ; z . miny = Math . min ( H , z . miny ) ; z . maxy = Math . max ( H , z . maxy ) ; case "fhpath" : g += + G + "," + H + " " ; D . setAttributeNS ( null , "points" , g ) ; break ; case "path" : case "pathedit" : x *= p ; y *= p ; if ( m . gridSnapping ) { x = Ga ( x ) ; y = Ga ( y ) ; h = Ga ( h ) ; k = Ga ( k ) } if ( s . shiftKey ) { if ( R = svgedit . path . path ) { D = R . dragging ? R . dragging [ 0 ] : h ; R = R . dragging ? R . dragging [ 1 ] : k } else { D = h ;
R = k } R = ca ( D , R , x , y ) ; x = R . x ; y = R . y } if ( xa && xa . getAttribute ( "display" ) !== "none" ) { G *= p ; H *= p ; ma ( xa , { x : Math . min ( v * p , G ) , y : Math . min ( t * p , H ) , width : Math . abs ( G - v * p ) , height : Math . abs ( H - t * p ) } , 100 ) } Ua . mouseMove ( s , x , y ) ; break ; case "textedit" : x *= p ; y *= p ; qb . mouseMove ( C , F ) ; break ; case "rotate" : G = svgedit . utilities . getBBox ( A ) ; R = G . x + G . width / 2 ; H = G . y + G . height / 2 ; D = ea ( A ) ; D = O ( R , H , D ) ; R = D . x ; H = D . y ; D = G . x ; W = G . y ; if ( current _rotate _mode == "nw" ) D = G . x + G . width ; if ( current _rotate _mode == "se" ) W = G . y + G . height ; if ( current _rotate _mode == "sw" ) { D = G . x + G . width ;
W = G . y + G . height } compensation _angle = ( Math . atan2 ( H - W , R - D ) * ( 180 / Math . PI ) - 90 ) % 360 ; ga = ( Math . atan2 ( H - y , R - x ) * ( 180 / Math . PI ) - 90 ) % 360 ; ga += compensation _angle ; if ( m . gridSnapping ) ga = Ga ( ga ) ; if ( s . shiftKey ) ga = Math . round ( ga / 45 ) * 45 ; b . setRotationAngle ( ga < - 180 ? 360 + ga : ga , true ) ; I ( "transition" , K ) } kb ( "mouseMove" , { event : s , mouse _x : C , mouse _y : F , selected : A } ) } } ) . click ( function ( s ) { s . preventDefault ( ) ; return false } ) . dblclick ( function ( s ) { var A = s . target . parentNode ; if ( A !== L ) { var F = Kb ( s ) , C = F . tagName ; if ( C === "text" && Ma !== "textedit" ) { s = O ( s . pageX ,
s . pageY , Mb ) ; qb . select ( F , s . x , s . y ) } if ( ( C === "g" || C === "a" ) && ra ( F ) ) { Xb ( F ) ; F = K [ 0 ] ; ab ( true ) } L && bc ( ) ; A . tagName !== "g" && A . tagName !== "a" || A === w ( ) . getCurrentLayer ( ) || F === Qa . selectorParentGroup || mc ( F ) } } ) . mouseup ( function ( s ) { if ( s . button !== 2 ) { var A = Pb ; Pb = null ; if ( Ja ) { var F = O ( s . pageX , s . pageY , Mb ) , C = F . x * p ; F = F . y * p ; var D = C / p , G = F / p , H = la ( ta ( ) ) , P = false ; Ja = false ; switch ( Ma ) { case "resize" : case "multiselect" : if ( xa != null ) { xa . setAttribute ( "display" , "none" ) ; wb = [ ] } Ma = "select" ; case "select" : if ( K [ 0 ] != null ) { if ( K [ 1 ] == null ) { C = K [ 0 ] ; switch ( C . tagName ) { case "g" : case "use" : case "image" : case "foreignObject" : break ;
2012-07-14 00:14:24 +00:00
default : fb . fill = C . getAttribute ( "fill" ) ; fb . fill _opacity = C . getAttribute ( "fill-opacity" ) ; fb . stroke = C . getAttribute ( "stroke" ) ; fb . stroke _opacity = C . getAttribute ( "stroke-opacity" ) ; fb . stroke _width = C . getAttribute ( "stroke-width" ) ; fb . stroke _dasharray = C . getAttribute ( "stroke-dasharray" ) ; fb . stroke _linejoin = C . getAttribute ( "stroke-linejoin" ) ; fb . stroke _linecap = C . getAttribute ( "stroke-linecap" ) } if ( C . tagName == "text" ) { eb . font _size = C . getAttribute ( "font-size" ) ; eb . font _family = C . getAttribute ( "font-family" ) } Qa . requestSelector ( C ) . showGrips ( true ) } Wa ( ) ;
2012-07-14 02:04:34 +00:00
if ( D != v || G != t ) { s = K . length ; for ( C = 0 ; C < s ; ++ C ) { if ( K [ C ] == null ) break ; K [ C ] . firstChild || Qa . requestSelector ( K [ C ] ) . resize ( ) } } else { C = s . target ; if ( K [ 0 ] . nodeName === "path" && K [ 1 ] == null ) Ua . select ( K [ 0 ] ) ; else s . shiftKey && A != C && b . removeFromSelection ( [ C ] ) } if ( svgedit . browser . supportsNonScalingStroke ( ) ) if ( s = K [ 0 ] ) { s . removeAttribute ( "style" ) ; svgedit . utilities . walkTree ( s , function ( ua ) { ua . removeAttribute ( "style" ) } ) } } return ; case "zoom" : xa != null && xa . setAttribute ( "display" , "none" ) ; I ( "zoomed" , { x : Math . min ( v , D ) , y : Math . min ( t , G ) , width : Math . abs ( D -
2012-07-14 00:14:24 +00:00
v ) , height : Math . abs ( G - t ) , factor : s . altKey ? 0.5 : 2 } ) ; return ; case "fhpath" : A = H . getAttribute ( "points" ) ; D = A . indexOf ( "," ) ; if ( P = D >= 0 ? A . indexOf ( "," , D + 1 ) >= 0 : A . indexOf ( " " , A . indexOf ( " " ) + 1 ) >= 0 ) H = Ua . smoothPolylineIntoPath ( H ) ; break ; case "line" : A = $ ( H ) . attr ( [ "x1" , "x2" , "y1" , "y2" ] ) ; P = A . x1 != A . x2 || A . y1 != A . y2 ; break ; case "foreignObject" : case "square" : case "rect" : case "image" : A = $ ( H ) . attr ( [ "width" , "height" ] ) ; P = A . width != 0 || A . height != 0 || Ma === "image" ; break ; case "circle" : P = H . getAttribute ( "r" ) != 0 ; break ; case "ellipse" : A = $ ( H ) . attr ( [ "rx" ,
"ry" ] ) ; P = A . rx != null || A . ry != null ; break ; case "fhellipse" : if ( z . maxx - z . minx > 0 && z . maxy - z . miny > 0 ) { H = da ( { element : "ellipse" , curStyles : true , attr : { cx : ( z . minx + z . maxx ) / 2 , cy : ( z . miny + z . maxy ) / 2 , rx : ( z . maxx - z . minx ) / 2 , ry : ( z . maxy - z . miny ) / 2 , id : ta ( ) } } ) ; I ( "changed" , [ H ] ) ; P = true } break ; case "fhrect" : if ( z . maxx - z . minx > 0 && z . maxy - z . miny > 0 ) { H = da ( { element : "rect" , curStyles : true , attr : { x : z . minx , y : z . miny , width : z . maxx - z . minx , height : z . maxy - z . miny , id : ta ( ) } } ) ; I ( "changed" , [ H ] ) ; P = true } break ; case "text" : P = true ; Qb ( [ H ] ) ; qb . start ( H ) ; break ; case "path" : H =
2012-07-14 02:04:34 +00:00
null ; Ja = true ; A = Ua . mouseUp ( s , H , C , F ) ; H = A . element ; P = A . keep ; break ; case "pathedit" : P = true ; H = null ; Ua . mouseUp ( s ) ; break ; case "textedit" : P = false ; H = null ; qb . mouseUp ( s , C , F ) ; break ; case "rotate" : P = true ; H = null ; Ma = "select" ; A = b . undoMgr . finishUndoableChange ( ) ; A . isEmpty ( ) || Ia ( A ) ; Wa ( ) ; I ( "changed" , K ) } C = kb ( "mouseUp" , { event : s , mouse _x : C , mouse _y : F } , true ) ; $ . each ( C , function ( ua , wa ) { if ( wa ) { P = wa . keep || P ; H = wa . element ; Ja = wa . started || Ja } } ) ; if ( ! P && H != null ) { w ( ) . releaseId ( ta ( ) ) ; H . parentNode . removeChild ( H ) ; H = null ; for ( C = s . target ; C . parentNode . parentNode . tagName ==
"g" ; ) C = C . parentNode ; if ( ( Ma != "path" || ! drawn _path ) && C . parentNode . id != "selectorParentGroup" && C . id != "svgcanvas" && C . id != "svgroot" ) { b . setMode ( "select" ) ; Qb ( [ C ] , true ) } } else if ( H != null ) { b . addedNew = true ; s = 0.2 ; var R ; if ( false . beginElement && H . getAttribute ( "opacity" ) != N . opacity ) { R = $ ( false ) . clone ( ) . attr ( { to : N . opacity , dur : s } ) . appendTo ( H ) ; try { R [ 0 ] . beginElement ( ) } catch ( W ) { } } else s = 0 ; setTimeout ( function ( ) { R && R . remove ( ) ; H . setAttribute ( "opacity" , N . opacity ) ; H . setAttribute ( "style" , "pointer-events:inherit" ) ; Z ( H ) ; if ( Ma ===
2012-07-14 00:14:24 +00:00
"path" ) Ua . toEditMode ( H ) ; else m . selectNew && Qb ( [ H ] , true ) ; Ia ( new Na ( H ) ) ; I ( "changed" , [ H ] ) } , s * 1E3 ) } Za = null } } } ) ; $ ( a ) . bind ( "mousewheel DOMMouseScroll" , function ( s ) { if ( s . shiftKey ) { s . preventDefault ( ) ; Mb = l . getScreenCTM ( ) . inverse ( ) ; var A = O ( s . pageX , s . pageY , Mb ) ; A = { x : A . x , y : A . y , width : 0 , height : 0 } ; if ( s . wheelDelta ) if ( s . wheelDelta >= 120 ) A . factor = 2 ; else { if ( s . wheelDelta <= - 120 ) A . factor = 0.5 } else if ( s . detail ) if ( s . detail > 0 ) A . factor = 0.5 ; else if ( s . detail < 0 ) A . factor = 2 ; A . factor && I ( "zoomed" , A ) } } ) } ) ( ) ; var ac = function ( g ) { $ ( g ) . click ( function ( h ) { h . preventDefault ( ) } ) } ,
2012-07-14 02:04:34 +00:00
qb = b . textActions = function ( ) { function g ( ga ) { var ka = F . value === "" ; $ ( F ) . focus ( ) ; if ( ! arguments . length ) if ( ka ) ga = 0 ; else { if ( F . selectionEnd !== F . selectionStart ) return ; ga = F . selectionEnd } var oa ; oa = H [ ga ] ; ka || F . setSelectionRange ( ga , ga ) ; C = la ( "text_cursor" ) ; if ( ! C ) { C = document . createElementNS ( c , "line" ) ; ma ( C , { id : "text_cursor" , stroke : "#333" , "stroke-width" : 1 } ) ; C = la ( "selectorParentGroup" ) . appendChild ( C ) } G || ( G = setInterval ( function ( ) { var za = C . getAttribute ( "display" ) === "none" ; C . setAttribute ( "display" , za ? "inline" : "none" ) } ,
600 ) ) ; ka = E ( oa . x , P . y ) ; oa = E ( oa . x , P . y + P . height ) ; ma ( C , { x1 : ka . x , y1 : ka . y , x2 : oa . x , y2 : oa . y , visibility : "visible" , display : "inline" } ) ; D && D . setAttribute ( "d" , "" ) } function h ( ga , ka , oa ) { if ( ga === ka ) g ( ka ) ; else { oa || F . setSelectionRange ( ga , ka ) ; D = la ( "text_selectblock" ) ; if ( ! D ) { D = document . createElementNS ( c , "path" ) ; ma ( D , { id : "text_selectblock" , fill : "green" , opacity : 0.5 , style : "pointer-events:none" } ) ; la ( "selectorParentGroup" ) . appendChild ( D ) } ga = H [ ga ] ; var za = H [ ka ] ; C . setAttribute ( "visibility" , "hidden" ) ; ka = E ( ga . x , P . y ) ; oa = E ( ga . x +
( za . x - ga . x ) , P . y ) ; var hb = E ( ga . x , P . y + P . height ) ; ga = E ( ga . x + ( za . x - ga . x ) , P . y + P . height ) ; ma ( D , { d : "M" + ka . x + "," + ka . y + " L" + oa . x + "," + oa . y + " " + ga . x + "," + ga . y + " " + hb . x + "," + hb . y + "z" , display : "inline" } ) } } function k ( ga , ka ) { var oa = e . createSVGPoint ( ) ; oa . x = ga ; oa . y = ka ; if ( H . length == 1 ) return 0 ; oa = A . getCharNumAtPosition ( oa ) ; if ( oa < 0 ) { oa = H . length - 2 ; if ( ga <= H [ 0 ] . x ) oa = 0 } else if ( oa >= H . length - 2 ) oa = H . length - 2 ; var za = H [ oa ] ; ga > za . x + za . width / 2 && oa ++ ; return oa } function v ( ga , ka , oa ) { var za = F . selectionStart ; ga = k ( ga , ka ) ; h ( Math . min ( za , ga ) ,
Math . max ( za , ga ) , ! oa ) } function t ( ga , ka ) { var oa = { x : ga , y : ka } ; oa . x /= p ; oa . y /= p ; if ( R ) { var za = O ( oa . x , oa . y , R . inverse ( ) ) ; oa . x = za . x ; oa . y = za . y } return oa } function E ( ga , ka ) { var oa = { x : ga , y : ka } ; if ( R ) { var za = O ( oa . x , oa . y , R ) ; oa . x = za . x ; oa . y = za . y } oa . x *= p ; oa . y *= p ; return oa } function z ( ga ) { h ( 0 , A . textContent . length ) ; $ ( this ) . unbind ( ga ) } function s ( ga ) { if ( wa && A ) { var ka = O ( ga . pageX , ga . pageY , Mb ) ; ka = t ( ka . x * p , ka . y * p ) ; ka = k ( ka . x , ka . y ) ; var oa = A . textContent , za = oa . substr ( 0 , ka ) . replace ( /[a-z0-9]+$/i , "" ) . length ; oa = oa . substr ( ka ) . match ( /^[a-z0-9]+/i ) ;
h ( za , ( oa ? oa [ 0 ] . length : 0 ) + ka ) ; $ ( ga . target ) . click ( z ) ; setTimeout ( function ( ) { $ ( ga . target ) . unbind ( "click" , z ) } , 300 ) } } var A , F , C , D , G , H = [ ] , P , R , W , ua , wa ; return { select : function ( ga , ka , oa ) { A = ga ; qb . toEditMode ( ka , oa ) } , start : function ( ga ) { A = ga ; qb . toEditMode ( ) } , mouseDown : function ( ga , ka , oa , za ) { ga = t ( oa , za ) ; F . focus ( ) ; g ( k ( ga . x , ga . y ) ) ; W = oa ; ua = za } , mouseMove : function ( ga , ka ) { var oa = t ( ga , ka ) ; v ( oa . x , oa . y ) } , mouseUp : function ( ga , ka , oa ) { var za = t ( ka , oa ) ; v ( za . x , za . y , true ) ; ga . target !== A && ka < W + 2 && ka > W - 2 && oa < ua + 2 && oa > ua - 2 && qb . toSelectMode ( true ) } ,
setCursor : g , toEditMode : function ( ga , ka ) { wa = false ; Ma = "textedit" ; Qa . requestSelector ( A ) . showGrips ( false ) ; Qa . requestSelector ( A ) ; qb . init ( ) ; $ ( A ) . css ( "cursor" , "text" ) ; if ( arguments . length ) { var oa = t ( ga , ka ) ; g ( k ( oa . x , oa . y ) ) } else g ( ) ; setTimeout ( function ( ) { wa = true } , 300 ) } , toSelectMode : function ( ga ) { Ma = "select" ; clearInterval ( G ) ; G = null ; D && $ ( D ) . attr ( "display" , "none" ) ; C && $ ( C ) . attr ( "visibility" , "hidden" ) ; $ ( A ) . css ( "cursor" , "move" ) ; if ( ga ) { ab ( ) ; $ ( A ) . css ( "cursor" , "move" ) ; I ( "selected" , [ A ] ) ; Jb ( [ A ] , true ) } A && ! A . textContent . length &&
b . deleteSelectedElements ( ) ; $ ( F ) . blur ( ) ; A = false } , setInputElem : function ( ga ) { F = ga } , clear : function ( ) { Ma == "textedit" && qb . toSelectMode ( ) } , init : function ( ) { if ( A ) { if ( ! A . parentNode ) { A = K [ 0 ] ; Qa . requestSelector ( A ) . showGrips ( false ) } var ga = A . textContent . length , ka = A . getAttribute ( "transform" ) ; P = svgedit . utilities . getBBox ( A ) ; R = ka ? ea ( A ) : null ; H = Array ( ga ) ; F . focus ( ) ; $ ( A ) . unbind ( "dblclick" , s ) . dblclick ( s ) ; if ( ! ga ) var oa = { x : P . x + P . width / 2 , width : 0 } ; for ( ka = 0 ; ka < ga ; ka ++ ) { var za = A . getStartPositionOfChar ( ka ) ; oa = A . getEndPositionOfChar ( ka ) ;
if ( ! svgedit . browser . supportsGoodTextCharPos ( ) ) { var hb = b . contentW * p ; za . x -= hb ; oa . x -= hb ; za . x /= p ; oa . x /= p } H [ ka ] = { x : za . x , y : P . y , width : oa . x - za . x , height : P . height } } H . push ( { x : oa . x , width : 0 } ) ; h ( F . selectionStart , F . selectionEnd , true ) } } } } ( ) , Ua = b . pathActions = function ( ) { var g = false , h , k , v ; svgedit . path . Path . prototype . endChanges = function ( z ) { if ( svgedit . browser . isWebkit ( ) ) { var s = this . elem ; s . setAttribute ( "d" , Ua . convertPath ( s ) ) } z = new Xa ( this . elem , { d : this . last _d } , z ) ; Ia ( z ) ; I ( "changed" , [ this . elem ] ) } ; svgedit . path . Path . prototype . addPtsToSelection =
2012-07-14 00:14:24 +00:00
function ( z ) { $ . isArray ( z ) || ( z = [ z ] ) ; for ( var s = 0 ; s < z . length ; s ++ ) { var A = z [ s ] , F = this . segs [ A ] ; F . ptgrip && this . selected _pts . indexOf ( A ) == - 1 && A >= 0 && this . selected _pts . push ( A ) } this . selected _pts . sort ( ) ; s = this . selected _pts . length ; for ( z = Array ( s ) ; s -- ; ) { F = this . segs [ this . selected _pts [ s ] ] ; F . select ( true ) ; z [ s ] = F . ptgrip } Ua . canDeleteNodes = true ; Ua . closed _subpath = this . subpathIsClosed ( this . selected _pts [ 0 ] ) ; I ( "selected" , z ) } ; var t = h = null , E = false ; return { mouseDown : function ( z , s , A , F ) { if ( Ma === "path" ) { mouse _x = A ; mouse _y = F ; F = mouse _x /
2012-07-14 02:04:34 +00:00
p ; s = mouse _y / p ; A = la ( "path_stretch_line" ) ; k = [ F , s ] ; if ( m . gridSnapping ) { F = Ga ( F ) ; s = Ga ( s ) ; mouse _x = Ga ( mouse _x ) ; mouse _y = Ga ( mouse _y ) } if ( ! A ) { A = document . createElementNS ( c , "path" ) ; ma ( A , { id : "path_stretch_line" , stroke : "#22C" , "stroke-width" : "0.5" , fill : "none" } ) ; A = la ( "selectorParentGroup" ) . appendChild ( A ) } A . setAttribute ( "display" , "inline" ) ; var C = null ; if ( t ) { C = t . pathSegList ; for ( var D = C . numberOfItems , G = 6 / p , H = false ; D ; ) { D -- ; var P = C . getItem ( D ) , R = P . x ; P = P . y ; if ( F >= R - G && F <= R + G && s >= P - G && s <= P + G ) { H = true ; break } } G = ta ( ) ; svgedit . path . removePath _ ( G ) ;
G = la ( G ) ; R = C . numberOfItems ; if ( H ) { if ( D <= 1 && R >= 2 ) { F = C . getItem ( 0 ) . x ; s = C . getItem ( 0 ) . y ; z = A . pathSegList . getItem ( 1 ) ; z = z . pathSegType === 4 ? t . createSVGPathSegLinetoAbs ( F , s ) : t . createSVGPathSegCurvetoCubicAbs ( F , s , z . x1 / p , z . y1 / p , F , s ) ; F = t . createSVGPathSegClosePath ( ) ; C . appendItem ( z ) ; C . appendItem ( F ) } else if ( R < 3 ) return C = false ; $ ( A ) . remove ( ) ; element = G ; t = null ; Ja = false ; if ( g ) { svgedit . path . path . matrix && ub ( G , { } , svgedit . path . path . matrix . inverse ( ) ) ; A = G . getAttribute ( "d" ) ; z = $ ( svgedit . path . path . elem ) . attr ( "d" ) ; $ ( svgedit . path . path . elem ) . attr ( "d" ,
2012-07-14 00:14:24 +00:00
z + A ) ; $ ( G ) . remove ( ) ; svgedit . path . path . matrix && svgedit . path . recalcRotatedPath ( ) ; svgedit . path . path . init ( ) ; Ua . toEditMode ( svgedit . path . path . elem ) ; svgedit . path . path . selectPt ( ) ; return false } } else { if ( ! $ . contains ( a , Kb ( z ) ) ) { console . log ( "Clicked outside canvas" ) ; return false } C = t . pathSegList . numberOfItems ; D = t . pathSegList . getItem ( C - 1 ) ; G = D . x ; D = D . y ; if ( z . shiftKey ) { z = ca ( G , D , F , s ) ; F = z . x ; s = z . y } z = A . pathSegList . getItem ( 1 ) ; z = z . pathSegType === 4 ? t . createSVGPathSegLinetoAbs ( Cb ( F ) , Cb ( s ) ) : t . createSVGPathSegCurvetoCubicAbs ( Cb ( F ) ,
Cb ( s ) , z . x1 / p , z . y1 / p , z . x2 / p , z . y2 / p ) ; t . pathSegList . appendItem ( z ) ; F *= p ; s *= p ; A . setAttribute ( "d" , [ "M" , F , s , F , s ] . join ( " " ) ) ; A = C ; if ( g ) A += svgedit . path . path . segs . length ; svgedit . path . addPointGrip ( A , F , s ) } } else { d _attr = "M" + F + "," + s + " " ; t = da ( { element : "path" , curStyles : true , attr : { d : d _attr , id : M ( ) , opacity : N . opacity / 2 } } ) ; A . setAttribute ( "d" , [ "M" , mouse _x , mouse _y , mouse _x , mouse _y ] . join ( " " ) ) ; A = g ? svgedit . path . path . segs . length : 0 ; svgedit . path . addPointGrip ( A , mouse _x , mouse _y ) } } else if ( svgedit . path . path ) { svgedit . path . path . storeD ( ) ;
G = z . target . id ; if ( G . substr ( 0 , 14 ) == "pathpointgrip_" ) { s = svgedit . path . path . cur _pt = parseInt ( G . substr ( 14 ) ) ; svgedit . path . path . dragging = [ A , F ] ; C = svgedit . path . path . segs [ s ] ; if ( z . shiftKey ) C . selected ? svgedit . path . path . removePtFromSelection ( s ) : svgedit . path . path . addPtsToSelection ( s ) ; else { if ( svgedit . path . path . selected _pts . length <= 1 || ! C . selected ) svgedit . path . path . clearSelection ( ) ; svgedit . path . path . addPtsToSelection ( s ) } } else if ( G . indexOf ( "ctrlpointgrip_" ) == 0 ) { svgedit . path . path . dragging = [ A , F ] ; z = G . split ( "_" ) [ 1 ] . split ( "c" ) ;
2012-07-14 02:04:34 +00:00
s = z [ 0 ] - 0 ; svgedit . path . path . selectPt ( s , z [ 1 ] - 0 ) } if ( ! svgedit . path . path . dragging ) { if ( xa == null ) xa = Qa . getRubberBandBox ( ) ; ma ( xa , { x : A * p , y : F * p , width : 0 , height : 0 , display : "inline" } , 100 ) } } } , mouseMove : function ( z , s , A ) { E = true ; if ( Ma === "path" ) { if ( t ) { var F = t . pathSegList ; z = F . numberOfItems - 1 ; if ( k ) { var C = svgedit . path . addCtrlGrip ( "1c1" ) , D = svgedit . path . addCtrlGrip ( "0c2" ) ; D . getAttribute ( "cx" ) ; D . getAttribute ( "cy" ) ; C . setAttribute ( "cx" , s ) ; C . setAttribute ( "cy" , A ) ; C . setAttribute ( "display" , "inline" ) ; C = k [ 0 ] ; var G = k [ 1 ] ; F . getItem ( z ) ;
var H = C + ( C - s / p ) , P = G + ( G - A / p ) ; D . setAttribute ( "cx" , H * p ) ; D . setAttribute ( "cy" , P * p ) ; D . setAttribute ( "display" , "inline" ) ; D = svgedit . path . getCtrlLine ( 1 ) ; var R = svgedit . path . getCtrlLine ( 2 ) ; ma ( D , { x1 : s , y1 : A , x2 : C * p , y2 : G * p , display : "inline" } ) ; ma ( R , { x1 : H * p , y1 : P * p , x2 : C * p , y2 : G * p , display : "inline" } ) ; if ( z === 0 ) v = [ s , A ] ; else { F = F . getItem ( z - 1 ) ; s = F . x ; A = F . y ; if ( F . pathSegType === 6 ) { s += s - F . x2 ; A += A - F . y2 } else if ( v ) { s = v [ 0 ] / p ; A = v [ 1 ] / p } svgedit . path . replacePathSeg ( 6 , z , [ C , G , s , A , H , P ] , t ) } } else if ( C = la ( "path_stretch_line" ) ) { z = F . getItem ( z ) ;
2012-07-14 00:14:24 +00:00
if ( z . pathSegType === 6 ) svgedit . path . replacePathSeg ( 6 , 1 , [ s , A , ( z . x + ( z . x - z . x2 ) ) * p , ( z . y + ( z . y - z . y2 ) ) * p , s , A ] , C ) ; else v ? svgedit . path . replacePathSeg ( 6 , 1 , [ s , A , v [ 0 ] , v [ 1 ] , s , A ] , C ) : svgedit . path . replacePathSeg ( 4 , 1 , [ s , A ] , C ) } } } else if ( svgedit . path . path . dragging ) { C = svgedit . path . getPointFromGrip ( { x : svgedit . path . path . dragging [ 0 ] , y : svgedit . path . path . dragging [ 1 ] } , svgedit . path . path ) ; G = svgedit . path . getPointFromGrip ( { x : s , y : A } , svgedit . path . path ) ; z = G . x - C . x ; C = G . y - C . y ; svgedit . path . path . dragging = [ s , A ] ; svgedit . path . path . dragctrl ?
2012-07-14 02:04:34 +00:00
svgedit . path . path . moveCtrl ( z , C ) : svgedit . path . path . movePts ( z , C ) } else { svgedit . path . path . selected _pts = [ ] ; svgedit . path . path . eachSeg ( function ( ) { if ( this . next || this . prev ) { var W = xa . getBBox ( ) , ua = svgedit . path . getGripPt ( this ) ; W = svgedit . math . rectsIntersect ( W , { x : ua . x , y : ua . y , width : 0 , height : 0 } ) ; this . select ( W ) ; W && svgedit . path . path . selected _pts . push ( this . index ) } } ) } } , mouseUp : function ( z , s ) { if ( Ma === "path" ) { k = null ; if ( ! t ) { s = la ( ta ( ) ) ; Ja = false ; v = null } return { keep : true , element : s } } if ( svgedit . path . path . dragging ) { var A = svgedit . path . path . cur _pt ;
svgedit . path . path . dragging = false ; svgedit . path . path . dragctrl = false ; svgedit . path . path . update ( ) ; E && svgedit . path . path . endChanges ( "Move path point(s)" ) ; ! z . shiftKey && ! E && svgedit . path . path . selectPt ( A ) } else if ( xa && xa . getAttribute ( "display" ) != "none" ) { xa . setAttribute ( "display" , "none" ) ; xa . getAttribute ( "width" ) <= 2 && xa . getAttribute ( "height" ) <= 2 && Ua . toSelectMode ( z . target ) } else Ua . toSelectMode ( z . target ) ; E = false } , toEditMode : function ( z ) { svgedit . path . path = svgedit . path . getPath _ ( z ) ; Ma = "pathedit" ; ab ( ) ; svgedit . path . path . show ( true ) . update ( ) ;
svgedit . path . path . oldbbox = svgedit . utilities . getBBox ( svgedit . path . path . elem ) ; g = false } , toSelectMode : function ( z ) { var s = z == svgedit . path . path . elem ; Ma = "select" ; svgedit . path . path . show ( false ) ; h = false ; ab ( ) ; svgedit . path . path . matrix && svgedit . path . recalcRotatedPath ( ) ; if ( s ) { I ( "selected" , [ z ] ) ; Jb ( [ z ] , true ) } } , addSubPath : function ( z ) { if ( z ) { Ma = "path" ; g = true } else { Ua . clear ( true ) ; Ua . toEditMode ( svgedit . path . path . elem ) } } , select : function ( z ) { if ( h === z ) { Ua . toEditMode ( z ) ; Ma = "pathedit" } else h = z } , reorient : function ( ) { var z = K [ 0 ] ;
if ( z ) if ( ra ( z ) != 0 ) { var s = new Oa ( "Reorient path" ) , A = { d : z . getAttribute ( "d" ) , transform : z . getAttribute ( "transform" ) } ; s . addSubCommand ( new Xa ( z , A ) ) ; ab ( ) ; this . resetOrientation ( z ) ; Ia ( s ) ; svgedit . path . getPath _ ( z ) . show ( false ) . matrix = null ; this . clear ( ) ; Jb ( [ z ] , true ) ; I ( "changed" , K ) } } , clear : function ( ) { h = null ; if ( t ) { var z = la ( ta ( ) ) ; $ ( la ( "path_stretch_line" ) ) . remove ( ) ; $ ( z ) . remove ( ) ; $ ( la ( "pathpointgrip_container" ) ) . find ( "*" ) . attr ( "display" , "none" ) ; t = v = null ; Ja = false } else Ma == "pathedit" && this . toSelectMode ( ) ; svgedit . path . path &&
svgedit . path . path . init ( ) . show ( false ) } , resetOrientation : function ( z ) { if ( z == null || z . nodeName != "path" ) return false ; var s = V ( z ) , A = ha ( s ) . matrix ; s . clear ( ) ; z . removeAttribute ( "transform" ) ; s = z . pathSegList ; for ( var F = s . numberOfItems , C = 0 ; C < F ; ++ C ) { var D = s . getItem ( C ) , G = D . pathSegType ; if ( G != 1 ) { var H = [ ] ; $ . each ( [ "" , 1 , 2 ] , function ( P , R ) { var W = D [ "x" + R ] , ua = D [ "y" + R ] ; if ( W !== undefined && ua !== undefined ) { W = O ( W , ua , A ) ; H . splice ( H . length , 0 , W . x , W . y ) } } ) ; svgedit . path . replacePathSeg ( G , C , H , z ) } } f ( z , A ) } , zoomChange : function ( ) { Ma == "pathedit" &&
2012-07-14 00:14:24 +00:00
svgedit . path . path . update ( ) } , getNodePoint : function ( ) { var z = svgedit . path . path . segs [ svgedit . path . path . selected _pts . length ? svgedit . path . path . selected _pts [ 0 ] : 1 ] ; return { x : z . item . x , y : z . item . y , type : z . type } } , linkControlPoints : function ( z ) { svgedit . path . setLinkControlPoints ( z ) } , clonePathNode : function ( ) { svgedit . path . path . storeD ( ) ; for ( var z = svgedit . path . path . selected _pts , s = z . length , A = [ ] ; s -- ; ) { var F = z [ s ] ; svgedit . path . path . addSeg ( F ) ; A . push ( F + s ) ; A . push ( F + s + 1 ) } svgedit . path . path . init ( ) . addPtsToSelection ( A ) ; svgedit . path . path . endChanges ( "Clone path node(s)" ) } ,
2012-07-14 02:04:34 +00:00
opencloseSubPath : function ( ) { var z = svgedit . path . path . selected _pts ; if ( z . length === 1 ) { var s = svgedit . path . path . elem , A = s . pathSegList , F = z [ 0 ] , C = null , D = null ; svgedit . path . path . eachSeg ( function ( R ) { if ( this . type === 2 && R <= F ) D = this . item ; if ( R <= F ) return true ; if ( this . type === 2 ) { C = R ; return false } else if ( this . type === 1 ) return C = false } ) ; if ( C == null ) C = svgedit . path . path . segs . length - 1 ; if ( C !== false ) { var G = s . createSVGPathSegLinetoAbs ( D . x , D . y ) , H = s . createSVGPathSegClosePath ( ) ; if ( C == svgedit . path . path . segs . length - 1 ) { A . appendItem ( G ) ;
2012-07-14 00:14:24 +00:00
A . appendItem ( H ) } else { svgedit . path . insertItemBefore ( s , H , C ) ; svgedit . path . insertItemBefore ( s , G , C ) } svgedit . path . path . init ( ) . selectPt ( C + 1 ) } else if ( svgedit . path . path . segs [ F ] . mate ) { A . removeItem ( F ) ; A . removeItem ( F ) ; svgedit . path . path . init ( ) . selectPt ( F - 1 ) } else { for ( z = 0 ; z < A . numberOfItems ; z ++ ) { var P = A . getItem ( z ) ; if ( P . pathSegType === 2 ) G = z ; else if ( z === F ) A . removeItem ( G ) ; else if ( P . pathSegType === 1 && F < z ) { H = z - 1 ; A . removeItem ( z ) ; break } } for ( z = F - G - 1 ; z -- ; ) svgedit . path . insertItemBefore ( s , A . getItem ( G ) , H ) ; s = A . getItem ( G ) ; svgedit . path . replacePathSeg ( 2 ,
2012-07-14 02:04:34 +00:00
G , [ s . x , s . y ] ) ; z = F ; svgedit . path . path . init ( ) . selectPt ( 0 ) } } } , deletePathNode : function ( ) { if ( Ua . canDeleteNodes ) { svgedit . path . path . storeD ( ) ; for ( var z = svgedit . path . path . selected _pts , s = z . length ; s -- ; ) svgedit . path . path . deleteSeg ( z [ s ] ) ; var A = function ( ) { var F = svgedit . path . path . elem . pathSegList , C = F . numberOfItems , D = function ( P , R ) { for ( ; R -- ; ) F . removeItem ( P ) } ; if ( C <= 1 ) return true ; for ( ; C -- ; ) { var G = F . getItem ( C ) ; if ( G . pathSegType === 1 ) { G = F . getItem ( C - 1 ) ; var H = F . getItem ( C - 2 ) ; if ( G . pathSegType === 2 ) { D ( C - 1 , 2 ) ; A ( ) ; break } else if ( H . pathSegType ===
2012-07-14 00:14:24 +00:00
2 ) { D ( C - 2 , 3 ) ; A ( ) ; break } } else if ( G . pathSegType === 2 ) if ( C > 0 ) { G = F . getItem ( C - 1 ) . pathSegType ; if ( G === 2 ) { D ( C - 1 , 1 ) ; A ( ) ; break } else if ( G === 1 && F . numberOfItems - 1 === C ) { D ( C , 1 ) ; A ( ) ; break } } } return false } ; A ( ) ; if ( svgedit . path . path . elem . pathSegList . numberOfItems <= 1 ) { Ua . toSelectMode ( svgedit . path . path . elem ) ; b . deleteSelectedElements ( ) } else { svgedit . path . path . init ( ) ; svgedit . path . path . clearSelection ( ) ; if ( window . opera ) { z = $ ( svgedit . path . path . elem ) ; z . attr ( "d" , z . attr ( "d" ) ) } svgedit . path . path . endChanges ( "Delete path node(s)" ) } } } ,
smoothPolylineIntoPath : function ( z ) { var s = z . points , A = s . numberOfItems ; if ( A >= 4 ) { var F = s . getItem ( 0 ) , C = null ; z = [ ] ; z . push ( [ "M" , F . x , "," , F . y , " C" ] . join ( "" ) ) ; for ( var D = 1 ; D <= A - 4 ; D += 3 ) { var G = s . getItem ( D ) , H = s . getItem ( D + 1 ) , P = s . getItem ( D + 2 ) ; if ( C ) if ( ( F = svgedit . path . smoothControlPoints ( C , G , F ) ) && F . length == 2 ) { G = z [ z . length - 1 ] . split ( "," ) ; G [ 2 ] = F [ 0 ] . x ; G [ 3 ] = F [ 0 ] . y ; z [ z . length - 1 ] = G . join ( "," ) ; G = F [ 1 ] } z . push ( [ G . x , G . y , H . x , H . y , P . x , P . y ] . join ( "," ) ) ; F = P ; C = H } for ( z . push ( "L" ) ; D < A ; ++ D ) { H = s . getItem ( D ) ; z . push ( [ H . x , H . y ] . join ( "," ) ) } z = z . join ( " " ) ;
z = da ( { element : "path" , curStyles : true , attr : { id : ta ( ) , d : z , fill : "none" } } ) } return z } , setSegType : function ( z ) { svgedit . path . path . setSegType ( z ) } , moveNode : function ( z , s ) { var A = svgedit . path . path . selected _pts ; if ( A . length ) { svgedit . path . path . storeD ( ) ; A = svgedit . path . path . segs [ A [ 0 ] ] ; var F = { x : 0 , y : 0 } ; F [ z ] = s - A . item [ z ] ; A . move ( F . x , F . y ) ; svgedit . path . path . endChanges ( "Move path point" ) } } , fixEnd : function ( z ) { for ( var s = z . pathSegList , A = s . numberOfItems , F , C = 0 ; C < A ; ++ C ) { var D = s . getItem ( C ) ; if ( D . pathSegType === 2 ) F = D ; if ( D . pathSegType ===
2012-07-14 02:04:34 +00:00
1 ) { D = s . getItem ( C - 1 ) ; if ( D . x != F . x || D . y != F . y ) { s = z . createSVGPathSegLinetoAbs ( F . x , F . y ) ; svgedit . path . insertItemBefore ( z , s , C ) ; Ua . fixEnd ( z ) ; break } } } svgedit . browser . isWebkit ( ) && z . setAttribute ( "d" , Ua . convertPath ( z ) ) } , convertPath : function ( z , s ) { for ( var A = z . pathSegList , F = A . numberOfItems , C = 0 , D = 0 , G = "" , H = null , P = 0 ; P < F ; ++ P ) { var R = A . getItem ( P ) , W = R . x || 0 , ua = R . y || 0 , wa = R . x1 || 0 , ga = R . y1 || 0 , ka = R . x2 || 0 , oa = R . y2 || 0 , za = R . pathSegType , hb = db [ za ] [ "to" + ( s ? "Lower" : "Upper" ) + "Case" ] ( ) , Hb = function ( Ib , Db , gb ) { Db = Db ? " " + Db . join ( " " ) : "" ; gb =
gb ? " " + svgedit . units . shortFloat ( gb ) : "" ; $ . each ( Ib , function ( fc , gc ) { Ib [ fc ] = svgedit . units . shortFloat ( gc ) } ) ; G += hb + Ib . join ( " " ) + Db + gb } ; switch ( za ) { case 1 : G += "z" ; break ; case 12 : W -= C ; case 13 : if ( s ) { C += W ; hb = "l" } else { W += C ; C = W ; hb = "L" } Hb ( [ [ W , D ] ] ) ; break ; case 14 : ua -= D ; case 15 : if ( s ) { D += ua ; hb = "l" } else { ua += D ; D = ua ; hb = "L" } Hb ( [ [ C , ua ] ] ) ; break ; case 2 : case 4 : case 18 : W -= C ; ua -= D ; case 5 : case 3 : if ( H && A . getItem ( P - 1 ) . pathSegType === 1 && ! s ) { C = H [ 0 ] ; D = H [ 1 ] } case 19 : if ( s ) { C += W ; D += ua } else { W += C ; ua += D ; C = W ; D = ua } if ( za === 3 ) H = [ C , D ] ; Hb ( [ [ W , ua ] ] ) ;
break ; case 6 : W -= C ; wa -= C ; ka -= C ; ua -= D ; ga -= D ; oa -= D ; case 7 : if ( s ) { C += W ; D += ua } else { W += C ; wa += C ; ka += C ; ua += D ; ga += D ; oa += D ; C = W ; D = ua } Hb ( [ [ wa , ga ] , [ ka , oa ] , [ W , ua ] ] ) ; break ; case 8 : W -= C ; wa -= C ; ua -= D ; ga -= D ; case 9 : if ( s ) { C += W ; D += ua } else { W += C ; wa += C ; ua += D ; ga += D ; C = W ; D = ua } Hb ( [ [ wa , ga ] , [ W , ua ] ] ) ; break ; case 10 : W -= C ; ua -= D ; case 11 : if ( s ) { C += W ; D += ua } else { W += C ; ua += D ; C = W ; D = ua } Hb ( [ [ R . r1 , R . r2 ] ] , [ R . angle , R . largeArcFlag ? 1 : 0 , R . sweepFlag ? 1 : 0 ] , [ W , ua ] ) ; break ; case 16 : W -= C ; ka -= C ; ua -= D ; oa -= D ; case 17 : if ( s ) { C += W ; D += ua } else { W += C ; ka += C ; ua += D ; oa +=
2012-07-14 00:14:24 +00:00
D ; C = W ; D = ua } Hb ( [ [ ka , oa ] , [ W , ua ] ] ) } } return G } } } ( ) , jc = this . removeUnusedDefElems = function ( ) { var g = l . getElementsByTagNameNS ( c , "defs" ) ; if ( ! g || ! g . length ) return 0 ; for ( var h = [ ] , k = 0 , v = [ "fill" , "stroke" , "filter" , "marker-start" , "marker-mid" , "marker-end" ] , t = v . length , E = l . getElementsByTagNameNS ( c , "*" ) , z = E . length , s = 0 ; s < z ; s ++ ) { for ( var A = E [ s ] , F = 0 ; F < t ; F ++ ) { var C = pa ( A . getAttribute ( v [ F ] ) ) ; C && h . push ( C . substr ( 1 ) ) } ( A = ba ( A ) ) && A . indexOf ( "#" ) === 0 && h . push ( A . substr ( 1 ) ) } g = $ ( g ) . find ( "linearGradient, radialGradient, filter, marker, svg, symbol" ) ;
defelem _ids = [ ] ; for ( s = g . length ; s -- ; ) { v = g [ s ] ; t = v . id ; if ( h . indexOf ( t ) < 0 ) { Bb [ t ] = v ; v . parentNode . removeChild ( v ) ; k ++ } } return k } ; this . svgCanvasToString = function ( ) { for ( ; jc ( ) > 0 ; ) ; Ua . clear ( true ) ; $ . each ( l . childNodes , function ( k , v ) { k && v . nodeType === 8 && v . data . indexOf ( "Created with" ) >= 0 && l . insertBefore ( v , l . firstChild ) } ) ; if ( L ) { bc ( ) ; Qb ( [ L ] ) } var g = [ ] ; $ ( l ) . find ( "g:data(gsvg)" ) . each ( function ( ) { for ( var k = this . attributes , v = k . length , t = 0 ; t < v ; t ++ ) if ( k [ t ] . nodeName == "id" || k [ t ] . nodeName == "style" ) v -- ; if ( v <= 0 ) { k = this . firstChild ;
2012-07-14 02:04:34 +00:00
g . push ( k ) ; $ ( this ) . replaceWith ( k ) } } ) ; var h = this . svgToString ( l , 0 ) ; g . length && $ ( g ) . each ( function ( ) { na ( this ) } ) ; return h } ; this . svgToString = function ( g , h ) { var k = [ ] , v = svgedit . utilities . toXml , t = m . baseUnit , E = RegExp ( "^-?[\\d\\.]+" + t + "$" ) ; if ( g ) { Z ( g ) ; var z = g . attributes , s , A , F = g . childNodes ; for ( A = 0 ; A < h ; A ++ ) k . push ( " " ) ; k . push ( "<" ) ; k . push ( g . nodeName ) ; if ( g . id === "svgcontent" ) { A = Ub ( ) ; if ( t !== "px" ) { A . w = svgedit . units . convertUnit ( A . w , t ) + t ; A . h = svgedit . units . convertUnit ( A . h , t ) + t } k . push ( ' width="' + A . w + '" height="' + A . h + '" xmlns="' +
c + '"' ) ; var C = { } ; $ ( g ) . find ( "*" ) . andSelf ( ) . each ( function ( ) { $ . each ( this . attributes , function ( P , R ) { var W = R . namespaceURI ; if ( W && ! C [ W ] && Aa [ W ] !== "xmlns" && Aa [ W ] !== "xml" ) { C [ W ] = true ; k . push ( " xmlns:" + Aa [ W ] + '="' + W + '"' ) } } ) } ) ; A = z . length ; for ( t = [ "width" , "height" , "xmlns" , "x" , "y" , "viewBox" , "id" , "overflow" ] ; A -- ; ) { s = z . item ( A ) ; var D = v ( s . nodeValue ) ; if ( s . nodeName . indexOf ( "xmlns:" ) !== 0 ) if ( D != "" && t . indexOf ( s . localName ) == - 1 ) if ( ! s . namespaceURI || Aa [ s . namespaceURI ] ) { k . push ( " " ) ; k . push ( s . nodeName ) ; k . push ( '="' ) ; k . push ( D ) ; k . push ( '"' ) } } } else { if ( g . nodeName ===
2012-07-14 00:14:24 +00:00
"defs" && ! g . firstChild ) return ; var G = [ "-moz-math-font-style" , "_moz-math-font-style" ] ; for ( A = z . length - 1 ; A >= 0 ; A -- ) { s = z . item ( A ) ; D = v ( s . nodeValue ) ; if ( ! ( G . indexOf ( s . localName ) >= 0 ) ) if ( D != "" ) if ( D . indexOf ( "pointer-events" ) !== 0 ) if ( ! ( s . localName === "class" && D . indexOf ( "se_" ) === 0 ) ) { k . push ( " " ) ; if ( s . localName === "d" ) D = Ua . convertPath ( g , true ) ; if ( isNaN ( D ) ) { if ( E . test ( D ) ) D = svgedit . units . shortFloat ( D ) + t } else D = svgedit . units . shortFloat ( D ) ; if ( nb . apply && g . nodeName === "image" && s . localName === "href" && nb . images && nb . images === "embed" ) { var H =
2012-07-14 02:04:34 +00:00
Ya [ D ] ; if ( H ) D = H } if ( ! s . namespaceURI || s . namespaceURI == c || Aa [ s . namespaceURI ] ) { k . push ( s . nodeName ) ; k . push ( '="' ) ; k . push ( D ) ; k . push ( '"' ) } } } } if ( g . hasChildNodes ( ) ) { k . push ( ">" ) ; h ++ ; z = false ; for ( A = 0 ; A < F . length ; A ++ ) { t = F . item ( A ) ; switch ( t . nodeType ) { case 1 : k . push ( "\n" ) ; k . push ( this . svgToString ( F . item ( A ) , h ) ) ; break ; case 3 : t = t . nodeValue . replace ( /^\s+|\s+$/g , "" ) ; if ( t != "" ) { z = true ; k . push ( v ( t ) + "" ) } break ; case 4 : k . push ( "\n" ) ; k . push ( Array ( h + 1 ) . join ( " " ) ) ; k . push ( "<![CDATA[" ) ; k . push ( t . nodeValue ) ; k . push ( "]]\>" ) ; break ; case 8 : k . push ( "\n" ) ;
2012-07-14 00:14:24 +00:00
k . push ( Array ( h + 1 ) . join ( " " ) ) ; k . push ( "<!--" ) ; k . push ( t . data ) ; k . push ( "--\>" ) } } h -- ; if ( ! z ) { k . push ( "\n" ) ; for ( A = 0 ; A < h ; A ++ ) k . push ( " " ) } k . push ( "</" ) ; k . push ( g . nodeName ) ; k . push ( ">" ) } else k . push ( "/>" ) } return k . join ( "" ) } ; this . embedImage = function ( g , h ) { $ ( new Image ) . load ( function ( ) { var k = document . createElement ( "canvas" ) ; k . width = this . width ; k . height = this . height ; k . getContext ( "2d" ) . drawImage ( this , 0 , 0 ) ; try { var v = ";svgedit_url=" + encodeURIComponent ( g ) ; v = k . toDataURL ( ) . replace ( ";base64" , v + ";base64" ) ; Ya [ g ] = v } catch ( t ) { Ya [ g ] =
false } La = g ; h && h ( Ya [ g ] ) } ) . attr ( "src" , g ) } ; this . setGoodImage = function ( g ) { La = g } ; this . open = function ( ) { } ; this . save = function ( g ) { ab ( ) ; g && $ . extend ( nb , g ) ; nb . apply = true ; g = this . svgCanvasToString ( ) ; I ( "saved" , g ) } ; this . rasterExport = function ( ) { ab ( ) ; var g = [ ] , h = { feGaussianBlur : Fb . exportNoBlur , foreignObject : Fb . exportNoforeignObject , "[stroke-dasharray]" : Fb . exportNoDashArray } , k = $ ( l ) ; if ( ! ( "font" in $ ( "<canvas>" ) [ 0 ] . getContext ( "2d" ) ) ) h . text = Fb . exportNoText ; $ . each ( h , function ( v , t ) { k . find ( v ) . length && g . push ( t ) } ) ; h = this . svgCanvasToString ( ) ;
I ( "exported" , { svg : h , issues : g } ) } ; this . getSvgString = function ( ) { nb . apply = false ; return this . svgCanvasToString ( ) } ; this . randomizeIds = function ( ) { arguments . length > 0 && arguments [ 0 ] == false ? svgedit . draw . randomizeIds ( false , w ( ) ) : svgedit . draw . randomizeIds ( true , w ( ) ) } ; var hc = this . uniquifyElems = function ( g ) { var h = { } , k = [ "filter" , "linearGradient" , "pattern" , "radialGradient" , "symbol" , "textPath" , "use" ] ; svgedit . utilities . walkTree ( g , function ( s ) { if ( s . nodeType == 1 ) { if ( s . id ) { s . id in h || ( h [ s . id ] = { elem : null , attrs : [ ] , hrefs : [ ] } ) ;
h [ s . id ] . elem = s } $ . each ( Ob , function ( F , C ) { var D = s . getAttributeNode ( C ) ; if ( D ) { var G = svgedit . utilities . getUrlFromAttr ( D . value ) ; if ( G = G ? G . substr ( 1 ) : null ) { G in h || ( h [ G ] = { elem : null , attrs : [ ] , hrefs : [ ] } ) ; h [ G ] . attrs . push ( D ) } } } ) ; var A = svgedit . utilities . getHref ( s ) ; if ( A && k . indexOf ( s . nodeName ) >= 0 ) if ( A = A . substr ( 1 ) ) { A in h || ( h [ A ] = { elem : null , attrs : [ ] , hrefs : [ ] } ) ; h [ A ] . hrefs . push ( s ) } } } ) ; for ( var v in h ) if ( v ) { var t = h [ v ] . elem ; if ( t ) { g = M ( ) ; t . id = g ; t = h [ v ] . attrs ; for ( var E = t . length ; E -- ; ) { var z = t [ E ] ; z . ownerElement . setAttribute ( z . name ,
"url(#" + g + ")" ) } t = h [ v ] . hrefs ; for ( E = t . length ; E -- ; ) svgedit . utilities . setHref ( t [ E ] , "#" + g ) } } } , $b = this . setUseData = function ( g ) { var h = $ ( g ) ; if ( g . tagName !== "use" ) h = h . find ( "use" ) ; h . each ( function ( ) { var k = ba ( this ) . substr ( 1 ) ; if ( k = la ( k ) ) { $ ( this ) . data ( "ref" , k ) ; if ( k . tagName == "symbol" || k . tagName == "svg" ) $ ( this ) . data ( "symbol" , k ) . data ( "ref" , k ) } } ) } , cc = this . convertGradients = function ( g ) { var h = $ ( g ) . find ( "linearGradient, radialGradient" ) ; if ( ! h . length && svgedit . browser . isWebkit ( ) ) h = $ ( g ) . find ( "*" ) . filter ( function ( ) { return this . tagName . indexOf ( "Gradient" ) >=
2012-07-12 17:01:07 +00:00
0 } ) ; h . each ( function ( ) { if ( $ ( this ) . attr ( "gradientUnits" ) === "userSpaceOnUse" ) { var k = $ ( l ) . find ( '[fill="url(#' + this . id + ')"],[stroke="url(#' + this . id + ')"]' ) ; if ( k . length ) if ( k = svgedit . utilities . getBBox ( k [ 0 ] ) ) if ( this . tagName === "linearGradient" ) { var v = $ ( this ) . attr ( [ "x1" , "y1" , "x2" , "y2" ] ) , t = this . gradientTransform . baseVal ; if ( t && t . numberOfItems > 0 ) { var E = ha ( t ) . matrix ; t = O ( v . x1 , v . y1 , E ) ; E = O ( v . x2 , v . y2 , E ) ; v . x1 = t . x ; v . y1 = t . y ; v . x2 = E . x ; v . y2 = E . y ; this . removeAttribute ( "gradientTransform" ) } $ ( this ) . attr ( { x1 : ( v . x1 - k . x ) / k . width ,
2012-07-14 02:04:34 +00:00
y1 : ( v . y1 - k . y ) / k . height , x2 : ( v . x2 - k . x ) / k . width , y2 : ( v . y2 - k . y ) / k . height } ) ; this . removeAttribute ( "gradientUnits" ) } } } ) } , Yb = this . convertToGroup = function ( g ) { g || ( g = K [ 0 ] ) ; var h = $ ( g ) , k = new Oa , v ; if ( h . data ( "gsvg" ) ) { k = $ ( g . firstChild ) . attr ( [ "x" , "y" ] ) ; $ ( g . firstChild . firstChild ) . unwrap ( ) ; $ ( g ) . removeData ( "gsvg" ) ; v = V ( g ) ; var t = e . createSVGTransform ( ) ; t . setTranslate ( k . x , k . y ) ; v . appendItem ( t ) ; pb ( g ) ; I ( "selected" , [ g ] ) } else if ( h . data ( "symbol" ) ) { g = h . data ( "symbol" ) ; v = h . attr ( "transform" ) ; t = h . attr ( [ "x" , "y" ] ) ; var E = g . getAttribute ( "viewBox" ) ;
2012-07-14 00:14:24 +00:00
if ( E ) { E = E . split ( " " ) ; t . x -= + E [ 0 ] ; t . y -= + E [ 1 ] } v += " translate(" + ( t . x || 0 ) + "," + ( t . y || 0 ) + ")" ; t = h . prev ( ) ; k . addSubCommand ( new Sa ( h [ 0 ] , h [ 0 ] . nextSibling , h [ 0 ] . parentNode ) ) ; h . remove ( ) ; E = $ ( l ) . find ( "use:data(symbol)" ) . length ; h = d . createElementNS ( c , "g" ) ; for ( var z = g . childNodes , s = 0 ; s < z . length ; s ++ ) h . appendChild ( z [ s ] . cloneNode ( true ) ) ; if ( svgedit . browser . isGecko ( ) ) { z = $ ( xb ( ) ) . children ( "linearGradient,radialGradient,pattern" ) . clone ( ) ; $ ( h ) . append ( z ) } v && h . setAttribute ( "transform" , v ) ; v = g . parentNode ; hc ( h ) ; svgedit . browser . isGecko ( ) &&
$ ( xb ( ) ) . append ( $ ( h ) . find ( "linearGradient,radialGradient,pattern" ) ) ; h . id = M ( ) ; t . after ( h ) ; if ( v ) { if ( ! E ) { t = g . nextSibling ; v . removeChild ( g ) ; k . addSubCommand ( new Sa ( g , t , v ) ) } k . addSubCommand ( new Na ( h ) ) } $b ( h ) ; svgedit . browser . isGecko ( ) ? cc ( xb ( ) ) : cc ( h ) ; svgedit . utilities . walkTreePost ( h , function ( A ) { try { pb ( A ) } catch ( F ) { console . log ( F ) } } ) ; $ ( h ) . find ( "a,circle,ellipse,foreignObject,g,image,line,path,polygon,polyline,rect,svg,text,tspan,use" ) . each ( function ( ) { if ( ! this . id ) this . id = M ( ) } ) ; Qb ( [ h ] ) ; ( g = Xb ( h , true ) ) && k . addSubCommand ( g ) ;
Ia ( k ) } else console . log ( "Unexpected element to ungroup:" , g ) } ; this . setSvgString = function ( g ) { try { var h = svgedit . utilities . text2xml ( g ) ; this . prepareSvg ( h ) ; var k = new Oa ( "Change Source" ) , v = l . nextSibling , t = e . removeChild ( l ) ; k . addSubCommand ( new Sa ( t , v , e ) ) ; l = d . adoptNode ? d . adoptNode ( h . documentElement ) : d . importNode ( h . documentElement , true ) ; e . appendChild ( l ) ; var E = $ ( l ) ; b . current _drawing _ = new svgedit . draw . Drawing ( l , u ) ; var z = w ( ) . getNonce ( ) ; z ? I ( "setnonce" , z ) : I ( "unsetnonce" ) ; E . find ( "image" ) . each ( function ( ) { var H = this ;
2012-07-14 02:04:34 +00:00
ac ( H ) ; var P = ba ( this ) ; if ( P . indexOf ( "data:" ) === 0 ) { var R = P . match ( /svgedit_url=(.*?);/ ) ; if ( R ) { var W = decodeURIComponent ( R [ 1 ] ) ; $ ( new Image ) . load ( function ( ) { H . setAttributeNS ( "http://www.w3.org/1999/xlink" , "xlink:href" , W ) } ) . attr ( "src" , W ) } } b . embedImage ( P ) } ) ; E . find ( "svg" ) . each ( function ( ) { if ( ! $ ( this ) . closest ( "defs" ) . length ) { hc ( this ) ; var H = this . parentNode ; if ( H . childNodes . length === 1 && H . nodeName === "g" ) { $ ( H ) . data ( "gsvg" , this ) ; H . id = H . id || M ( ) } else na ( this ) } } ) ; svgedit . browser . isGecko ( ) && E . find ( "linearGradient, radialGradient, pattern" ) . appendTo ( xb ( ) ) ;
$b ( E ) ; cc ( E [ 0 ] ) ; svgedit . utilities . walkTreePost ( l , function ( H ) { try { pb ( H ) } catch ( P ) { console . log ( P ) } } ) ; var s = { id : "svgcontent" , overflow : m . show _outside _canvas ? "visible" : "hidden" } , A = false ; if ( E . attr ( "viewBox" ) ) { var F = E . attr ( "viewBox" ) . split ( " " ) ; s . width = F [ 2 ] ; s . height = F [ 3 ] } else $ . each ( [ "width" , "height" ] , function ( H , P ) { var R = E . attr ( P ) ; R || ( R = "100%" ) ; if ( ( R + "" ) . substr ( - 1 ) === "%" ) A = true ; else s [ P ] = qa ( P , R ) } ) ; Vb ( ) ; E . children ( ) . find ( "a,circle,ellipse,foreignObject,g,image,line,path,polygon,polyline,rect,svg,text,tspan,use" ) . each ( function ( ) { if ( ! this . id ) this . id =
2012-07-14 00:14:24 +00:00
M ( ) } ) ; if ( A ) { var C = getStrokedBBox ( ) ; s . width = C . width + C . x ; s . height = C . height + C . y } if ( s . width <= 0 ) s . width = 100 ; if ( s . height <= 0 ) s . height = 100 ; E . attr ( s ) ; this . contentW = s . width ; this . contentH = s . height ; k . addSubCommand ( new Na ( l ) ) ; var D = E . attr ( [ "width" , "height" ] ) ; k . addSubCommand ( new Xa ( e , D ) ) ; p = 1 ; svgedit . transformlist . resetListMap ( ) ; ab ( ) ; svgedit . path . clearData ( ) ; e . appendChild ( Qa . selectorParentGroup ) ; Ia ( k ) ; I ( "changed" , [ l ] ) } catch ( G ) { console . log ( G ) ; return false } return true } ; this . importSvgString = function ( g ) { try { var h = svgedit . utilities . encode64 ( g . length +
g ) . substr ( 0 , 32 ) , k = false ; if ( Ab [ h ] ) if ( $ ( Ab [ h ] . symbol ) . parents ( "#svgroot" ) . length ) k = true ; var v = new Oa ( "Import SVG" ) ; if ( k ) var t = Ab [ h ] . symbol , E = Ab [ h ] . xform ; else { var z = svgedit . utilities . text2xml ( g ) ; this . prepareSvg ( z ) ; var s ; s = d . adoptNode ? d . adoptNode ( z . documentElement ) : d . importNode ( z . documentElement , true ) ; hc ( s ) ; var A = qa ( "width" , s . getAttribute ( "width" ) ) , F = qa ( "height" , s . getAttribute ( "height" ) ) , C = s . getAttribute ( "viewBox" ) , D = C ? C . split ( " " ) : [ 0 , 0 , A , F ] ; for ( g = 0 ; g < 4 ; ++ g ) D [ g ] = + D [ g ] ; l . getAttribute ( "width" ) ; var G = + l . getAttribute ( "height" ) ;
2012-07-14 02:04:34 +00:00
E = F > A ? "scale(" + G / 3 / D [ 3 ] + ")" : "scale(" + G / 3 / D [ 2 ] + ")" ; E = "translate(0) " + E + " translate(0)" ; t = d . createElementNS ( c , "symbol" ) ; var H = xb ( ) ; for ( svgedit . browser . isGecko ( ) && $ ( s ) . find ( "linearGradient, radialGradient, pattern" ) . appendTo ( H ) ; s . firstChild ; ) t . appendChild ( s . firstChild ) ; var P = s . attributes ; for ( s = 0 ; s < P . length ; s ++ ) { var R = P [ s ] ; t . setAttribute ( R . nodeName , R . nodeValue ) } t . id = M ( ) ; Ab [ h ] = { symbol : t , xform : E } ; xb ( ) . appendChild ( t ) ; v . addSubCommand ( new Na ( t ) ) } var W = d . createElementNS ( c , "use" ) ; W . id = M ( ) ; S ( W , "#" + t . id ) ; ( L ||
2012-07-14 00:14:24 +00:00
w ( ) . getCurrentLayer ( ) ) . appendChild ( W ) ; v . addSubCommand ( new Na ( W ) ) ; ab ( ) ; W . setAttribute ( "transform" , E ) ; pb ( W ) ; $ ( W ) . data ( "symbol" , t ) . data ( "ref" , t ) ; Jb ( [ W ] ) ; Ia ( v ) ; I ( "changed" , [ l ] ) } catch ( ua ) { console . log ( ua ) ; return false } return true } ; var Vb = b . identifyLayers = function ( ) { bc ( ) ; w ( ) . identifyLayers ( ) } ; this . createLayer = function ( g ) { var h = new Oa ( "Create Layer" ) ; g = w ( ) . createLayer ( g ) ; h . addSubCommand ( new Na ( g ) ) ; Ia ( h ) ; ab ( ) ; I ( "changed" , [ g ] ) } ; this . cloneLayer = function ( g ) { var h = new Oa ( "Duplicate Layer" ) , k = d . createElementNS ( c ,
"g" ) , v = d . createElementNS ( c , "title" ) ; v . textContent = g ; k . appendChild ( v ) ; v = w ( ) . getCurrentLayer ( ) ; $ ( v ) . after ( k ) ; v = v . childNodes ; for ( var t = 0 ; t < v . length ; t ++ ) { var E = v [ t ] ; E . localName != "title" && k . appendChild ( aa ( E ) ) } ab ( ) ; Vb ( ) ; h . addSubCommand ( new Na ( k ) ) ; Ia ( h ) ; b . setCurrentLayer ( g ) ; I ( "changed" , [ k ] ) } ; this . deleteCurrentLayer = function ( ) { var g = w ( ) . getCurrentLayer ( ) , h = g . nextSibling , k = g . parentNode ; if ( g = w ( ) . deleteCurrentLayer ( ) ) { var v = new Oa ( "Delete Layer" ) ; v . addSubCommand ( new Sa ( g , h , k ) ) ; Ia ( v ) ; ab ( ) ; I ( "changed" , [ k ] ) ; return true } return false } ;
this . setCurrentLayer = function ( g ) { ( g = w ( ) . setCurrentLayer ( svgedit . utilities . toXml ( g ) ) ) && ab ( ) ; return g } ; this . renameCurrentLayer = function ( g ) { var h = w ( ) ; if ( h . current _layer ) { var k = h . current _layer ; if ( ! b . setCurrentLayer ( g ) ) { for ( var v = new Oa ( "Rename Layer" ) , t = 0 ; t < h . getNumLayers ( ) ; ++ t ) if ( h . all _layers [ t ] [ 1 ] == k ) break ; var E = h . getLayerName ( t ) ; h . all _layers [ t ] [ 0 ] = svgedit . utilities . toXml ( g ) ; var z = k . childNodes . length ; for ( t = 0 ; t < z ; ++ t ) { var s = k . childNodes . item ( t ) ; if ( s && s . tagName == "title" ) { for ( ; s . firstChild ; ) s . removeChild ( s . firstChild ) ;
s . textContent = g ; v . addSubCommand ( new Xa ( s , { "#text" : E } ) ) ; Ia ( v ) ; I ( "changed" , [ k ] ) ; return true } } } h . current _layer = k } return false } ; this . setCurrentLayerPosition = function ( g ) { var h = w ( ) ; if ( h . current _layer && g >= 0 && g < h . getNumLayers ( ) ) { for ( var k = 0 ; k < h . getNumLayers ( ) ; ++ k ) if ( h . all _layers [ k ] [ 1 ] == h . current _layer ) break ; if ( k == h . getNumLayers ( ) ) return false ; if ( k != g ) { var v = null , t = h . current _layer . nextSibling ; if ( g > k ) { if ( g < h . getNumLayers ( ) - 1 ) v = h . all _layers [ g + 1 ] [ 1 ] } else v = h . all _layers [ g ] [ 1 ] ; l . insertBefore ( h . current _layer , v ) ;
Ia ( new Ra ( h . current _layer , t , l ) ) ; Vb ( ) ; b . setCurrentLayer ( h . getLayerName ( g ) ) ; return true } } return false } ; this . setLayerVisibility = function ( g , h ) { var k = w ( ) , v = k . getLayerVisibility ( g ) , t = k . setLayerVisibility ( g , h ) ; if ( t ) Ia ( new Xa ( t , { display : v ? "inline" : "none" } , "Layer Visibility" ) ) ; else return false ; if ( t == k . getCurrentLayer ( ) ) { ab ( ) ; Ua . clear ( ) } return true } ; this . moveSelectedToLayer = function ( g ) { for ( var h = null , k = w ( ) , v = 0 ; v < k . getNumLayers ( ) ; ++ v ) if ( k . getLayerName ( v ) == g ) { h = k . all _layers [ v ] [ 1 ] ; break } if ( ! h ) return false ; g =
2012-07-14 02:04:34 +00:00
new Oa ( "Move Elements to Layer" ) ; k = K ; for ( v = k . length ; v -- ; ) { var t = k [ v ] ; if ( t ) { var E = t . nextSibling , z = t . parentNode ; h . appendChild ( t ) ; g . addSubCommand ( new Ra ( t , E , z ) ) } } Ia ( g ) ; return true } ; this . mergeLayer = function ( g ) { var h = new Oa ( "Merge Layer" ) , k = w ( ) , v = $ ( k . current _layer ) . prev ( ) [ 0 ] ; if ( v ) { for ( h . addSubCommand ( new Sa ( k . current _layer , k . current _layer . nextSibling , l ) ) ; k . current _layer . firstChild ; ) { var t = k . current _layer . firstChild ; if ( t . localName == "title" ) { h . addSubCommand ( new Sa ( t , t . nextSibling , k . current _layer ) ) ; k . current _layer . removeChild ( t ) } else { var E =
2012-07-14 00:14:24 +00:00
t . nextSibling ; v . appendChild ( t ) ; h . addSubCommand ( new Ra ( t , E , k . current _layer ) ) } } l . removeChild ( k . current _layer ) ; if ( ! g ) { ab ( ) ; Vb ( ) ; I ( "changed" , [ l ] ) ; Ia ( h ) } k . current _layer = v ; return h } } ; this . mergeAllLayers = function ( ) { var g = new Oa ( "Merge all Layers" ) , h = w ( ) ; for ( h . current _layer = h . all _layers [ h . getNumLayers ( ) - 1 ] [ 1 ] ; $ ( l ) . children ( "g" ) . length > 1 ; ) g . addSubCommand ( b . mergeLayer ( true ) ) ; ab ( ) ; Vb ( ) ; I ( "changed" , [ l ] ) ; Ia ( g ) } ; var bc = this . leaveContext = function ( ) { var g = Ea . length ; if ( g ) { for ( var h = 0 ; h < g ; h ++ ) { var k = Ea [ h ] , v = lb ( k , "orig_opac" ) ;
v !== 1 ? k . setAttribute ( "opacity" , v ) : k . removeAttribute ( "opacity" ) ; k . setAttribute ( "style" , "pointer-events: inherit" ) } Ea = [ ] ; ab ( true ) ; I ( "contextset" , null ) } L = null } , mc = this . setContext = function ( g ) { bc ( ) ; if ( typeof g === "string" ) g = la ( g ) ; L = g ; $ ( g ) . parentsUntil ( "#svgcontent" ) . andSelf ( ) . siblings ( ) . each ( function ( ) { var h = this . getAttribute ( "opacity" ) || 1 ; lb ( this , "orig_opac" , h ) ; this . setAttribute ( "opacity" , h * 0.33 ) ; this . setAttribute ( "style" , "pointer-events: none" ) ; Ea . push ( this ) } ) ; ab ( ) ; I ( "contextset" , L ) } ; this . clear = function ( ) { Ua . clear ( ) ;
2012-07-14 02:04:34 +00:00
ab ( ) ; b . clearSvgContentElement ( ) ; b . current _drawing _ = new svgedit . draw . Drawing ( l ) ; b . createLayer ( "Layer 1" ) ; b . undoMgr . resetUndoStack ( ) ; Qa . initGroup ( ) ; xa = Qa . getRubberBandBox ( ) ; I ( "cleared" ) } ; this . linkControlPoints = Ua . linkControlPoints ; this . getContentElem = function ( ) { return l } ; this . getRootElem = function ( ) { return e } ; this . getSelectedElems = function ( ) { return K } ; var Ub = this . getResolution = function ( ) { var g = l . getAttribute ( "width" ) / p , h = l . getAttribute ( "height" ) / p ; return { w : g , h : h , zoom : p } } ; this . getZoom = function ( ) { return p } ;
this . getVersion = function ( ) { return "svgcanvas.js ($Rev: 2082 $)" } ; this . setUiStrings = function ( g ) { $ . extend ( Fb , g . notification ) } ; this . setConfig = function ( g ) { $ . extend ( m , g ) } ; this . getTitle = function ( g ) { if ( g = g || K [ 0 ] ) { g = $ ( g ) . data ( "gsvg" ) || $ ( g ) . data ( "symbol" ) || g ; g = g . childNodes ; for ( var h = 0 ; h < g . length ; h ++ ) if ( g [ h ] . nodeName == "title" ) return g [ h ] . textContent ; return "" } } ; this . setGroupTitle = function ( g ) { var h = K [ 0 ] ; h = $ ( h ) . data ( "gsvg" ) || h ; var k = $ ( h ) . children ( "title" ) , v = new Oa ( "Set Label" ) ; if ( g . length ) if ( k . length ) { k = k [ 0 ] ; v . addSubCommand ( new Xa ( k ,
2012-07-14 00:14:24 +00:00
{ "#text" : k . textContent } ) ) ; k . textContent = g } else { k = d . createElementNS ( c , "title" ) ; k . textContent = g ; $ ( h ) . prepend ( k ) ; v . addSubCommand ( new Na ( k ) ) } else { v . addSubCommand ( new Sa ( k [ 0 ] , k . nextSibling , h ) ) ; k . remove ( ) } Ia ( v ) } ; this . getDocumentTitle = function ( ) { return b . getTitle ( l ) } ; this . setDocumentTitle = function ( g ) { for ( var h = l . childNodes , k = false , v = "" , t = new Oa ( "Change Image Title" ) , E = 0 ; E < h . length ; E ++ ) if ( h [ E ] . nodeName == "title" ) { k = h [ E ] ; v = k . textContent ; break } if ( ! k ) { k = d . createElementNS ( c , "title" ) ; l . insertBefore ( k , l . firstChild ) } if ( g . length ) k . textContent =
g ; else k . parentNode . removeChild ( k ) ; t . addSubCommand ( new Xa ( k , { "#text" : v } ) ) ; Ia ( t ) } ; this . getEditorNS = function ( g ) { g && l . setAttribute ( "xmlns:se" , "http://svg-edit.googlecode.com" ) ; return "http://svg-edit.googlecode.com" } ; this . setResolution = function ( g , h ) { var k = Ub ( ) , v = k . w ; k = k . h ; var t ; if ( g == "fit" ) { var E = getStrokedBBox ( ) ; if ( E ) { t = new Oa ( "Fit Canvas to Content" ) ; var z = Gb ( ) ; Jb ( z ) ; var s = [ ] , A = [ ] ; $ . each ( z , function ( ) { s . push ( E . x * - 1 ) ; A . push ( E . y * - 1 ) } ) ; z = b . moveSelectedElements ( s , A , true ) ; t . addSubCommand ( z ) ; ab ( ) ; g = Math . round ( E . width ) ;
h = Math . round ( E . height ) } else return false } if ( g != v || h != k ) { z = e . suspendRedraw ( 1E3 ) ; t || ( t = new Oa ( "Change Image Dimensions" ) ) ; g = qa ( "width" , g ) ; h = qa ( "height" , h ) ; l . setAttribute ( "width" , g ) ; l . setAttribute ( "height" , h ) ; this . contentW = g ; this . contentH = h ; t . addSubCommand ( new Xa ( l , { width : v , height : k } ) ) ; l . setAttribute ( "viewBox" , [ 0 , 0 , g / p , h / p ] . join ( " " ) ) ; t . addSubCommand ( new Xa ( l , { viewBox : [ "0 0" , v , k ] . join ( " " ) } ) ) ; Ia ( t ) ; e . unsuspendRedraw ( z ) ; if ( background = document . getElementById ( "canvas_background" ) ) { background . setAttribute ( "x" ,
2012-07-14 02:04:34 +00:00
- 1 ) ; background . setAttribute ( "y" , - 1 ) ; background . setAttribute ( "width" , g + 1 ) ; background . setAttribute ( "height" , h + 1 ) } I ( "changed" , [ l ] ) } return true } ; this . getOffset = function ( ) { return $ ( l ) . attr ( [ "x" , "y" ] ) } ; this . setBBoxZoom = function ( g , h , k ) { var v = 0.85 , t = function ( E ) { if ( ! E ) return false ; var z = Math . min ( Math . round ( h / E . width * 100 * v ) / 100 , Math . round ( k / E . height * 100 * v ) / 100 ) ; b . setZoom ( z ) ; return { zoom : z , bbox : E } } ; if ( typeof g == "object" ) { g = g ; if ( g . width == 0 || g . height == 0 ) { b . setZoom ( g . zoom ? g . zoom : p * g . factor ) ; return { zoom : p , bbox : g } } return t ( g ) } switch ( g ) { case "selection" : if ( ! K [ 0 ] ) return ;
g = $ . map ( K , function ( E ) { if ( E ) return E } ) ; g = getStrokedBBox ( g ) ; break ; case "canvas" : g = Ub ( ) ; v = 0.95 ; g = { width : g . w , height : g . h , x : 0 , y : 0 } ; break ; case "content" : g = getStrokedBBox ( ) ; break ; case "layer" : g = getStrokedBBox ( Gb ( w ( ) . getCurrentLayer ( ) ) ) ; break ; default : return } return t ( g ) } ; this . setZoom = function ( g ) { var h = Ub ( ) ; l . setAttribute ( "viewBox" , "0 0 " + h . w / g + " " + h . h / g ) ; p = g ; $ . each ( K , function ( k , v ) { v && Qa . requestSelector ( v ) . resize ( ) } ) ; Ua . zoomChange ( ) ; kb ( "zoomChanged" , g ) } ; this . getMode = function ( ) { return Ma } ; this . setMode = function ( g ) { Ua . clear ( true ) ;
qb . clear ( ) ; $ ( "#workarea" ) . attr ( "class" , g ) ; fb = K [ 0 ] && K [ 0 ] . nodeName == "text" ? eb : N ; Ma = g } ; this . getColor = function ( g ) { return fb [ g ] } ; this . setColor = function ( g , h , k ) { N [ g ] = h ; fb [ g + "_paint" ] = { type : "solidColor" } ; for ( var v = [ ] , t = K . length ; t -- ; ) { var E = K [ t ] ; if ( E ) if ( E . tagName == "g" ) svgedit . utilities . walkTree ( E , function ( z ) { z . nodeName != "g" && v . push ( z ) } ) ; else if ( g == "fill" ) E . tagName != "polyline" && E . tagName != "line" && v . push ( E ) ; else v . push ( E ) } if ( v . length > 0 ) if ( k ) Tb ( g , h , v ) ; else { ob ( g , h , v ) ; I ( "changed" , v ) } } ; var xb = function ( ) { var g = l . getElementsByTagNameNS ( c ,
2012-07-14 00:14:24 +00:00
"defs" ) ; if ( g . length > 0 ) g = g [ 0 ] ; else { g = d . createElementNS ( c , "defs" ) ; l . firstChild ? l . insertBefore ( g , l . firstChild . nextSibling ) : l . appendChild ( g ) } return g } , kc = this . setGradient = function ( g ) { if ( ! ( ! fb [ g + "_paint" ] || fb [ g + "_paint" ] . type == "solidColor" ) ) { var h = b [ g + "Grad" ] , k = dc ( h ) , v = xb ( ) ; if ( k ) h = k ; else { h = v . appendChild ( d . importNode ( h , true ) ) ; h . id = M ( ) } b . setColor ( g , "url(#" + h . id + ")" ) ; if ( g == "canvas" ) ( g = document . getElementById ( "canvas_background" ) ) && g . setAttribute ( "fill" , "url(#" + h . id + ")" ) } } , dc = function ( g ) { var h = xb ( ) ; h = $ ( h ) . find ( "linearGradient, radialGradient" ) ;
for ( var k = h . length , v = [ "r" , "cx" , "cy" , "fx" , "fy" ] ; k -- ; ) { var t = h [ k ] ; if ( g . tagName == "linearGradient" ) { if ( g . getAttribute ( "x1" ) != t . getAttribute ( "x1" ) || g . getAttribute ( "y1" ) != t . getAttribute ( "y1" ) || g . getAttribute ( "x2" ) != t . getAttribute ( "x2" ) || g . getAttribute ( "y2" ) != t . getAttribute ( "y2" ) ) continue } else { var E = $ ( g ) . attr ( v ) , z = $ ( t ) . attr ( v ) , s = false ; $ . each ( v , function ( H , P ) { if ( E [ P ] != z [ P ] ) s = true } ) ; if ( s ) continue } var A = g . getElementsByTagNameNS ( c , "stop" ) , F = t . getElementsByTagNameNS ( c , "stop" ) ; if ( A . length == F . length ) { for ( var C =
A . length ; C -- ; ) { var D = A [ C ] , G = F [ C ] ; if ( D . getAttribute ( "offset" ) != G . getAttribute ( "offset" ) || D . getAttribute ( "stop-opacity" ) != G . getAttribute ( "stop-opacity" ) || D . getAttribute ( "stop-color" ) != G . getAttribute ( "stop-color" ) ) break } if ( C == - 1 ) return t } } return null } ; this . setPaint = function ( g , h ) { var k = new $ . jGraduate . Paint ( h ) ; this . setPaintOpacity ( g , k . alpha / 100 , true ) ; fb [ g + "_paint" ] = k ; switch ( k . type ) { case "solidColor" : if ( k . solidColor != "none" && k . solidColor != "#none" ) this . setColor ( g , "#" + k . solidColor ) ; else { this . setColor ( g ,
2012-07-14 02:04:34 +00:00
"none" ) ; document . querySelector ( g == "fill" ? "#fill_color rect" : "#stroke_color rect" ) . setAttribute ( "fill" , "transparent" ) } break ; case "linearGradient" : case "radialGradient" : b [ g + "Grad" ] = k [ k . type ] ; kc ( g ) } } ; this . getStrokeWidth = function ( ) { return fb . stroke _width } ; this . setStrokeWidth = function ( g ) { if ( g == 0 && [ "line" , "path" ] . indexOf ( Ma ) >= 0 ) b . setStrokeWidth ( 1 ) ; else { fb . stroke _width = g ; for ( var h = [ ] , k = K . length ; k -- ; ) { var v = K [ k ] ; if ( v ) v . tagName == "g" ? svgedit . utilities . walkTree ( v , function ( t ) { t . nodeName != "g" && h . push ( t ) } ) : h . push ( v ) } if ( h . length >
0 ) { ob ( "stroke-width" , g , h ) ; I ( "changed" , K ) } } } ; this . setStrokeAttr = function ( g , h ) { N [ g . replace ( "-" , "_" ) ] = h ; for ( var k = [ ] , v = K . length ; v -- ; ) { var t = K [ v ] ; if ( t ) t . tagName == "g" ? svgedit . utilities . walkTree ( t , function ( E ) { E . nodeName != "g" && k . push ( E ) } ) : k . push ( t ) } if ( k . length > 0 ) { ob ( g , h , k ) ; I ( "changed" , K ) } } ; this . getStyle = function ( ) { return N } ; this . getOpacity = function ( ) { return N . opacity } ; this . setOpacity = function ( g ) { N . opacity = g ; ob ( "opacity" , g ) } ; this . getFillOpacity = function ( ) { return N . fill _opacity } ; this . getStrokeOpacity = function ( ) { return N . stroke _opacity } ;
this . setPaintOpacity = function ( g , h , k ) { N [ g + "_opacity" ] = h ; k ? Tb ( g + "-opacity" , h ) : ob ( g + "-opacity" , h ) } ; this . getBlur = function ( g ) { var h = 0 ; if ( g ) if ( g . getAttribute ( "filter" ) ) if ( g = la ( g . id + "_blur" ) ) h = g . firstChild . getAttribute ( "stdDeviation" ) ; return h } ; ( function ( ) { function g ( ) { var t = b . undoMgr . finishUndoableChange ( ) ; h . addSubCommand ( t ) ; Ia ( h ) ; k = h = null } var h = null , k = null , v = false ; b . setBlurNoUndo = function ( t ) { if ( k ) if ( t === 0 ) { Tb ( "filter" , "" ) ; v = true } else { var E = K [ 0 ] ; v && Tb ( "filter" , "url(#" + E . id + "_blur)" ) ; if ( svgedit . browser . isWebkit ( ) ) { E . removeAttribute ( "filter" ) ;
E . setAttribute ( "filter" , "url(#" + E . id + "_blur)" ) } Tb ( "stdDeviation" , t , [ k . firstChild ] ) ; b . setBlurOffsets ( k , t ) } else b . setBlur ( t ) } ; b . setBlurOffsets = function ( t , E ) { if ( E > 3 ) ma ( t , { x : "-50%" , y : "-50%" , width : "200%" , height : "200%" } , 100 ) ; else if ( ! svgedit . browser . isWebkit ( ) ) { t . removeAttribute ( "x" ) ; t . removeAttribute ( "y" ) ; t . removeAttribute ( "width" ) ; t . removeAttribute ( "height" ) } } ; b . setBlur = function ( t , E ) { if ( h ) g ( ) ; else { var z = K [ 0 ] , s = z . id ; k = la ( s + "_blur" ) ; t -= 0 ; var A = new Oa ; if ( k ) { if ( t === 0 ) k = null } else { var F = da ( { element : "feGaussianBlur" ,
attr : { "in" : "SourceGraphic" , stdDeviation : t } } ) ; k = da ( { element : "filter" , attr : { id : s + "_blur" } } ) ; k . appendChild ( F ) ; xb ( ) . appendChild ( k ) ; A . addSubCommand ( new Na ( k ) ) } F = { filter : z . getAttribute ( "filter" ) } ; if ( t === 0 ) { z . removeAttribute ( "filter" ) ; A . addSubCommand ( new Xa ( z , F ) ) } else { ob ( "filter" , "url(#" + s + "_blur)" ) ; A . addSubCommand ( new Xa ( z , F ) ) ; b . setBlurOffsets ( k , t ) ; h = A ; b . undoMgr . beginUndoableChange ( "stdDeviation" , [ k ? k . firstChild : null ] ) ; if ( E ) { b . setBlurNoUndo ( t ) ; g ( ) } } } } } ) ( ) ; this . getBold = function ( ) { var g = K [ 0 ] ; if ( g != null &&
g . tagName == "text" && K [ 1 ] == null ) return g . getAttribute ( "font-weight" ) == "bold" ; return false } ; this . setBold = function ( g ) { var h = K [ 0 ] ; if ( h != null && h . tagName == "text" && K [ 1 ] == null ) ob ( "font-weight" , g ? "bold" : "normal" ) ; K [ 0 ] . textContent || qb . setCursor ( ) } ; this . getItalic = function ( ) { var g = K [ 0 ] ; if ( g != null && g . tagName == "text" && K [ 1 ] == null ) return g . getAttribute ( "font-style" ) == "italic" ; return false } ; this . setItalic = function ( g ) { var h = K [ 0 ] ; if ( h != null && h . tagName == "text" && K [ 1 ] == null ) ob ( "font-style" , g ? "italic" : "normal" ) ; K [ 0 ] . textContent ||
qb . setCursor ( ) } ; this . getFontFamily = function ( ) { return eb . font _family } ; this . setFontFamily = function ( g ) { eb . font _family = g ; ob ( "font-family" , g ) ; K [ 0 ] && ! K [ 0 ] . textContent && qb . setCursor ( ) } ; this . setFontColor = function ( g ) { eb . fill = g ; ob ( "fill" , g ) } ; this . getFontSize = function ( ) { return eb . fill } ; this . getFontSize = function ( ) { return eb . font _size } ; this . setFontSize = function ( g ) { eb . font _size = g ; ob ( "font-size" , g ) ; K [ 0 ] . textContent || qb . setCursor ( ) } ; this . getText = function ( ) { var g = K [ 0 ] ; if ( g == null ) return "" ; return g . textContent } ; this . setTextContent =
function ( g ) { ob ( "#text" , g ) ; qb . init ( g ) ; qb . setCursor ( ) } ; this . setImageURL = function ( g ) { var h = K [ 0 ] ; if ( h ) { var k = $ ( h ) . attr ( [ "width" , "height" ] ) ; k = ! k . width || ! k . height ; var v = ba ( h ) ; if ( v !== g ) k = true ; else if ( ! k ) return ; var t = new Oa ( "Change Image URL" ) ; S ( h , g ) ; t . addSubCommand ( new Xa ( h , { "#href" : v } ) ) ; k ? $ ( new Image ) . load ( function ( ) { var E = $ ( h ) . attr ( [ "width" , "height" ] ) ; $ ( h ) . attr ( { width : this . width , height : this . height } ) ; Qa . requestSelector ( h ) . resize ( ) ; t . addSubCommand ( new Xa ( h , E ) ) ; Ia ( t ) ; I ( "changed" , [ h ] ) } ) . attr ( "src" , g ) : Ia ( t ) } } ;
this . setLinkURL = function ( g ) { var h = K [ 0 ] ; if ( h ) { if ( h . tagName !== "a" ) { h = $ ( h ) . parents ( "a" ) ; if ( h . length ) h = h [ 0 ] ; else return } var k = ba ( h ) ; if ( k !== g ) { var v = new Oa ( "Change Link URL" ) ; S ( h , g ) ; v . addSubCommand ( new Xa ( h , { "#href" : k } ) ) ; Ia ( v ) } } } ; this . setRectRadius = function ( g ) { var h = K [ 0 ] ; if ( h != null && h . tagName == "rect" ) { var k = h . getAttribute ( "rx" ) ; if ( k != g ) { h . setAttribute ( "rx" , g ) ; h . setAttribute ( "ry" , g ) ; Ia ( new Xa ( h , { rx : k , ry : k } , "Radius" ) ) ; I ( "changed" , [ h ] ) } } } ; this . makeHyperlink = function ( g ) { b . groupSelectedElements ( "a" , g ) } ; this . removeHyperlink =
function ( ) { b . ungroupSelectedElement ( ) } ; this . setSegType = function ( g ) { Ua . setSegType ( g ) } ; this . convertToPath = function ( g , h ) { if ( g == null ) $ . each ( K , function ( wa , ga ) { ga && b . convertToPath ( ga ) } ) ; else { if ( ! h ) var k = new Oa ( "Convert element to Path" ) ; var v = h ? { } : { fill : N . fill , "fill-opacity" : N . fill _opacity , stroke : N . stroke , "stroke-width" : N . stroke _width , "stroke-dasharray" : N . stroke _dasharray , "stroke-linejoin" : N . stroke _linejoin , "stroke-linecap" : N . stroke _linecap , "stroke-opacity" : N . stroke _opacity , opacity : N . opacity , visibility : "hidden" } ;
$ . each ( [ "marker-start" , "marker-end" , "marker-mid" , "filter" , "clip-path" ] , function ( ) { if ( g . getAttribute ( this ) ) v [ this ] = g . getAttribute ( this ) } ) ; var t = da ( { element : "path" , attr : v } ) , E = g . getAttribute ( "transform" ) ; E && t . setAttribute ( "transform" , E ) ; var z = g . id , s = g . parentNode ; g . nextSibling ? s . insertBefore ( t , g ) : s . appendChild ( t ) ; var A = "" , F = function ( wa ) { $ . each ( wa , function ( ga , ka ) { var oa = ka [ 1 ] ; A += ka [ 0 ] ; for ( var za = 0 ; za < oa . length ; za += 2 ) A += oa [ za ] + "," + oa [ za + 1 ] + " " } ) } , C = 1.81 ; switch ( g . tagName ) { case "ellipse" : case "circle" : var D =
2012-07-14 00:14:24 +00:00
$ ( g ) . attr ( [ "rx" , "ry" , "cx" , "cy" ] ) , G = D . cx , H = D . cy , P = D . rx ; D = D . ry ; if ( g . tagName == "circle" ) P = D = $ ( g ) . attr ( "r" ) ; F ( [ [ "M" , [ G - P , H ] ] , [ "C" , [ G - P , H - D / C , G - P / C , H - D , G , H - D ] ] , [ "C" , [ G + P / C , H - D , G + P , H - D / C , G + P , H ] ] , [ "C" , [ G + P , H + D / C , G + P / C , H + D , G , H + D ] ] , [ "C" , [ G - P / C , H + D , G - P , H + D / C , G - P , H ] ] , [ "Z" , [ ] ] ] ) ; break ; case "path" : A = g . getAttribute ( "d" ) ; break ; case "line" : D = $ ( g ) . attr ( [ "x1" , "y1" , "x2" , "y2" ] ) ; A = "M" + D . x1 + "," + D . y1 + "L" + D . x2 + "," + D . y2 ; break ; case "polyline" : case "polygon" : A = "M" + g . getAttribute ( "points" ) ; break ; case "rect" : D = $ ( g ) . attr ( [ "rx" ,
2012-07-14 02:04:34 +00:00
"ry" ] ) ; P = D . rx ; D = D . ry ; var R = g . getBBox ( ) ; G = R . x ; H = R . y ; var W = R . width ; R = R . height ; C = 4 - C ; ! P && ! D ? F ( [ [ "M" , [ G , H ] ] , [ "L" , [ G + W , H ] ] , [ "L" , [ G + W , H + R ] ] , [ "L" , [ G , H + R ] ] , [ "L" , [ G , H ] ] , [ "Z" , [ ] ] ] ) : F ( [ [ "M" , [ G , H + D ] ] , [ "C" , [ G , H + D / C , G + P / C , H , G + P , H ] ] , [ "L" , [ G + W - P , H ] ] , [ "C" , [ G + W - P / C , H , G + W , H + D / C , G + W , H + D ] ] , [ "L" , [ G + W , H + R - D ] ] , [ "C" , [ G + W , H + R - D / C , G + W - P / C , H + R , G + W - P , H + R ] ] , [ "L" , [ G + P , H + R ] ] , [ "C" , [ G + P / C , H + R , G , H + R - D / C , G , H + R - D ] ] , [ "L" , [ G , H + D ] ] , [ "Z" , [ ] ] ] ) ; break ; default : t . parentNode . removeChild ( t ) } A && t . setAttribute ( "d" , A ) ; if ( h ) { Ua . resetOrientation ( t ) ;
k = false ; try { k = t . getBBox ( ) } catch ( ua ) { } t . parentNode . removeChild ( t ) ; return k } else { if ( E ) { E = V ( t ) ; sa ( E ) && Ua . resetOrientation ( t ) } k . addSubCommand ( new Sa ( g , g . nextSibling , s ) ) ; k . addSubCommand ( new Na ( t ) ) ; ab ( ) ; g . parentNode . removeChild ( g ) ; t . setAttribute ( "id" , z ) ; t . removeAttribute ( "visibility" ) ; Jb ( [ t ] , true ) ; Ia ( k ) } } } ; var Tb = function ( g , h , k ) { var v = e . suspendRedraw ( 1E3 ) ; Ma == "pathedit" && Ua . moveNode ( g , h ) ; k = k || K ; for ( var t = k . length , E = [ "g" , "polyline" , "path" ] ; t -- ; ) { var z = k [ t ] ; if ( z != null ) { Ma === "textedit" && g !== "#text" && z . textContent . length &&
2012-07-14 00:14:24 +00:00
qb . toSelectMode ( z ) ; if ( ( g === "x" || g === "y" ) && E . indexOf ( z . tagName ) >= 0 ) { var s = getStrokedBBox ( [ z ] ) ; b . moveSelectedElements ( ( g === "x" ? h - s . x : 0 ) * p , ( g === "y" ? h - s . y : 0 ) * p , true ) } else { s = g === "#text" ? z . textContent : z . getAttribute ( g ) ; if ( s == null ) s = "" ; if ( s !== String ( h ) ) { if ( g == "#text" ) { svgedit . utilities . getBBox ( z ) ; z . textContent = h ; if ( /rotate/ . test ( z . getAttribute ( "transform" ) ) ) z = Pa ( z ) } else g == "#href" ? S ( z , h ) : z . setAttribute ( g , h ) ; if ( svgedit . browser . isGecko ( ) && z . nodeName === "text" && /rotate/ . test ( z . getAttribute ( "transform" ) ) ) if ( ( h +
2012-07-14 02:04:34 +00:00
"" ) . indexOf ( "url" ) === 0 || [ "font-size" , "font-family" , "x" , "y" ] . indexOf ( g ) >= 0 && z . textContent ) z = Pa ( z ) ; K . indexOf ( z ) >= 0 && setTimeout ( function ( ) { z . parentNode && Qa . requestSelector ( z ) . resize ( ) } , 0 ) ; s = ra ( z ) ; if ( s != 0 && g != "transform" ) for ( var A = V ( z ) , F = A . numberOfItems ; F -- ; ) if ( A . getItem ( F ) . type == 4 ) { A . removeItem ( F ) ; var C = svgedit . utilities . getBBox ( z ) , D = O ( C . x + C . width / 2 , C . y + C . height / 2 , ha ( A ) . matrix ) ; C = D . x ; D = D . y ; var G = e . createSVGTransform ( ) ; G . setRotate ( s , C , D ) ; A . insertItemBefore ( G , F ) ; break } } } } } e . unsuspendRedraw ( v ) } , ob = this . changeSelectedAttribute =
function ( g , h , k ) { k = k || K ; b . undoMgr . beginUndoableChange ( g , k ) ; Tb ( g , h , k ) ; g = b . undoMgr . finishUndoableChange ( ) ; g . isEmpty ( ) || Ia ( g ) } ; this . deleteSelectedElements = function ( ) { for ( var g = new Oa ( "Delete Elements" ) , h = K . length , k = [ ] , v = 0 ; v < h ; ++ v ) { var t = K [ v ] ; if ( t == null ) break ; var E = t . parentNode , z = t ; Qa . releaseSelector ( z ) ; svgedit . path . removePath _ ( z . id ) ; if ( E . tagName === "a" && E . childNodes . length === 1 ) { z = E ; E = E . parentNode } var s = z . nextSibling ; z = E . removeChild ( z ) ; k . push ( t ) ; K [ v ] = null ; g . addSubCommand ( new Sa ( z , s , E ) ) } g . isEmpty ( ) || Ia ( g ) ;
I ( "changed" , k ) ; ab ( ) } ; this . cutSelectedElements = function ( ) { for ( var g = new Oa ( "Cut Elements" ) , h = K . length , k = [ ] , v = 0 ; v < h ; ++ v ) { var t = K [ v ] ; if ( t == null ) break ; var E = t . parentNode , z = t ; Qa . releaseSelector ( z ) ; svgedit . path . removePath _ ( z . id ) ; var s = z . nextSibling ; z = E . removeChild ( z ) ; k . push ( t ) ; K [ v ] = null ; g . addSubCommand ( new Sa ( z , s , E ) ) } g . isEmpty ( ) || Ia ( g ) ; I ( "changed" , k ) ; ab ( ) ; b . clipBoard = k } ; this . copySelectedElements = function ( ) { b . clipBoard = $ . merge ( [ ] , K ) } ; this . pasteElements = function ( g , h , k ) { var v = b . clipBoard , t = v . length ; if ( t ) { for ( var E =
[ ] , z = new Oa ( "Paste elements" ) ; t -- ; ) { var s = v [ t ] ; if ( s ) { var A = aa ( s ) ; if ( ! la ( s . id ) ) A . id = s . id ; E . push ( A ) ; ( L || w ( ) . getCurrentLayer ( ) ) . appendChild ( A ) ; z . addSubCommand ( new Na ( A ) ) } } Qb ( E ) ; if ( g != "in_place" ) { if ( sb == null ) { sb . x = 0 ; sb . y = 0 } var F , C ; if ( g ) { if ( g === "point" ) { F = h ; C = k } } else { F = sb . x ; C = sb . y } g = getStrokedBBox ( E ) ; var D = F - ( g . x + g . width / 2 ) , G = C - ( g . y + g . height / 2 ) , H = [ ] , P = [ ] ; $ . each ( E , function ( ) { H . push ( D ) ; P . push ( G ) } ) ; F = b . moveSelectedElements ( H , P , false ) ; z . addSubCommand ( F ) } Ia ( z ) ; I ( "changed" , E ) } } ; this . groupSelectedElements = function ( g ) { g ||
( g = "g" ) ; var h = "" ; switch ( g ) { case "a" : h = "Make hyperlink" ; var k = "" ; if ( arguments . length > 1 ) k = arguments [ 1 ] ; break ; default : g = "g" ; h = "Group Elements" } h = new Oa ( h ) ; var v = da ( { element : g , attr : { id : M ( ) } } ) ; g === "a" && S ( v , k ) ; h . addSubCommand ( new Na ( v ) ) ; for ( k = K . length ; k -- ; ) { var t = K [ k ] ; if ( t != null ) { if ( t . parentNode . tagName === "a" && t . parentNode . childNodes . length === 1 ) t = t . parentNode ; var E = t . nextSibling , z = t . parentNode ; v . appendChild ( t ) ; h . addSubCommand ( new Ra ( t , E , z ) ) } } h . isEmpty ( ) || Ia ( h ) ; Qb ( [ v ] , true ) } ; var Xb = this . pushGroupProperties =
function ( g , h ) { var k = g . childNodes , v = k . length , t = g . getAttribute ( "transform" ) , E = V ( g ) , z = ha ( E ) . matrix , s = new Oa ( "Push group properties" ) , A = 0 , F = ra ( g ) , C = $ ( g ) . attr ( [ "filter" , "opacity" ] ) , D , G ; for ( A = 0 ; A < v ; A ++ ) { var H = k [ A ] ; if ( H . nodeType === 1 ) { if ( C . opacity !== null && C . opacity !== 1 ) { H . getAttribute ( "opacity" ) ; var P = Math . round ( ( H . getAttribute ( "opacity" ) || 1 ) * C . opacity * 100 ) / 100 ; ob ( "opacity" , P , [ H ] ) } if ( C . filter ) { var R = P = this . getBlur ( H ) ; G || ( G = this . getBlur ( g ) ) ; if ( P ) P = G - 0 + ( P - 0 ) ; else if ( P === 0 ) P = G ; if ( R ) D = Y ( H . getAttribute ( "filter" ) ) ;
else if ( D ) { D = aa ( D ) ; xb ( ) . appendChild ( D ) } else D = Y ( C . filter ) ; D . id = H . id + "_" + ( D . firstChild . tagName === "feGaussianBlur" ? "blur" : "filter" ) ; ob ( "filter" , "url(#" + D . id + ")" , [ H ] ) ; if ( P ) { ob ( "stdDeviation" , P , [ D . firstChild ] ) ; b . setBlurOffsets ( D , P ) } } P = V ( H ) ; if ( ~ H . tagName . indexOf ( "Gradient" ) ) P = null ; if ( P ) if ( H . tagName !== "defs" ) if ( E . numberOfItems ) { if ( F && E . numberOfItems == 1 ) { var W = E . getItem ( 0 ) . matrix , ua = e . createSVGMatrix ( ) ; if ( R = ra ( H ) ) ua = P . getItem ( 0 ) . matrix ; var wa = svgedit . utilities . getBBox ( H ) , ga = ha ( P ) . matrix , ka = O ( wa . x + wa . width /
2 , wa . y + wa . height / 2 , ga ) ; wa = F + R ; ga = e . createSVGTransform ( ) ; ga . setRotate ( wa , ka . x , ka . y ) ; W = fa ( W , ua , ga . matrix . inverse ( ) ) ; R && P . removeItem ( 0 ) ; if ( wa ) P . numberOfItems ? P . insertItemBefore ( ga , 0 ) : P . appendItem ( ga ) ; if ( W . e || W . f ) { R = e . createSVGTransform ( ) ; R . setTranslate ( W . e , W . f ) ; P . numberOfItems ? P . insertItemBefore ( R , 0 ) : P . appendItem ( R ) } } else { R = H . getAttribute ( "transform" ) ; W = { } ; W . transform = R ? R : "" ; R = e . createSVGTransform ( ) ; W = ha ( P ) . matrix ; ua = W . inverse ( ) ; W = fa ( ua , z , W ) ; R . setMatrix ( W ) ; P . appendItem ( R ) } ( H = pb ( H ) ) && s . addSubCommand ( H ) } } } if ( t ) { W =
{ } ; W . transform = t ; g . setAttribute ( "transform" , "" ) ; g . removeAttribute ( "transform" ) ; s . addSubCommand ( new Xa ( g , W ) ) } if ( h && ! s . isEmpty ( ) ) return s } ; this . ungroupSelectedElement = function ( ) { var g = K [ 0 ] ; if ( $ ( g ) . data ( "gsvg" ) || $ ( g ) . data ( "symbol" ) ) Yb ( g ) ; else if ( g . tagName === "use" ) { var h = la ( ba ( g ) . substr ( 1 ) ) ; $ ( g ) . data ( "symbol" , h ) . data ( "ref" , h ) ; Yb ( g ) } else { h = $ ( g ) . parents ( "a" ) ; if ( h . length ) g = h [ 0 ] ; if ( g . tagName === "g" || g . tagName === "a" ) { h = new Oa ( "Ungroup Elements" ) ; var k = Xb ( g , true ) ; k && h . addSubCommand ( k ) ; k = g . parentNode ; for ( var v =
g . nextSibling , t = Array ( g . childNodes . length ) , E = 0 ; g . firstChild ; ) { var z = g . firstChild , s = z . nextSibling , A = z . parentNode ; if ( z . tagName === "title" ) { h . addSubCommand ( new Sa ( z , z . nextSibling , A ) ) ; A . removeChild ( z ) } else { t [ E ++ ] = z = k . insertBefore ( z , v ) ; h . addSubCommand ( new Ra ( z , s , A ) ) } } ab ( ) ; v = g . nextSibling ; g = k . removeChild ( g ) ; h . addSubCommand ( new Sa ( g , v , k ) ) ; h . isEmpty ( ) || Ia ( h ) ; Jb ( t ) } } } ; this . moveToTopSelectedElement = function ( ) { var g = K [ 0 ] ; if ( g != null ) { g = g ; var h = g . parentNode , k = g . nextSibling ; g = g . parentNode . appendChild ( g ) ; if ( k != g . nextSibling ) { Ia ( new Ra ( g ,
k , h , "top" ) ) ; I ( "changed" , [ g ] ) } } } ; this . moveToBottomSelectedElement = function ( ) { var g = K [ 0 ] ; if ( g != null ) { g = g ; var h = g . parentNode , k = g . nextSibling , v = g . parentNode . firstChild ; if ( v . tagName == "title" ) v = v . nextSibling ; if ( v . tagName == "defs" ) v = v . nextSibling ; g = g . parentNode . insertBefore ( g , v ) ; if ( k != g . nextSibling ) { Ia ( new Ra ( g , k , h , "bottom" ) ) ; I ( "changed" , [ g ] ) } } } ; this . moveUpDownSelected = function ( g ) { var h = K [ 0 ] ; if ( h ) { wb = [ ] ; var k , v , t = $ ( Lb ( getStrokedBBox ( [ h ] ) ) ) . toArray ( ) ; g == "Down" && t . reverse ( ) ; $ . each ( t , function ( ) { if ( v ) { k = this ;
return false } else if ( this == h ) v = true } ) ; if ( k ) { t = h . parentNode ; var E = h . nextSibling ; $ ( k ) [ g == "Down" ? "before" : "after" ] ( h ) ; if ( E != h . nextSibling ) { Ia ( new Ra ( h , E , t , "Move " + g ) ) ; I ( "changed" , [ h ] ) } } } } ; this . moveSelectedElements = function ( g , h , k ) { if ( g . constructor != Array ) { g /= p ; h /= p } k = k || true ; for ( var v = new Oa ( "position" ) , t = K . length ; t -- ; ) { var E = K [ t ] ; if ( E != null ) { var z = e . createSVGTransform ( ) , s = V ( E ) ; g . constructor == Array ? z . setTranslate ( g [ t ] , h [ t ] ) : z . setTranslate ( g , h ) ; s . numberOfItems ? s . insertItemBefore ( z , 0 ) : s . appendItem ( z ) ; ( z =
pb ( E ) ) && v . addSubCommand ( z ) ; Qa . requestSelector ( E ) . resize ( ) } } if ( ! v . isEmpty ( ) ) { k && Ia ( v ) ; I ( "changed" , K ) ; return v } } ; this . cloneSelectedElements = function ( g , h ) { for ( var k = new Oa ( "Clone Elements" ) , v = K . length , t = 0 ; t < v ; ++ t ) { var E = K [ t ] ; if ( E == null ) break } v = K . slice ( 0 , t ) ; this . clearSelection ( true ) ; for ( t = v . length ; t -- ; ) { E = v [ t ] = aa ( v [ t ] ) ; ( L || w ( ) . getCurrentLayer ( ) ) . appendChild ( E ) ; k . addSubCommand ( new Na ( E ) ) } if ( ! k . isEmpty ( ) ) { Jb ( v . reverse ( ) ) ; this . moveSelectedElements ( g , h , false ) ; Ia ( k ) } } ; this . alignSelectedElements = function ( g ,
h ) { var k = [ ] , v = Number . MAX _VALUE , t = Number . MIN _VALUE , E = Number . MAX _VALUE , z = Number . MIN _VALUE , s = Number . MIN _VALUE , A = Number . MIN _VALUE , F = K . length ; if ( F ) { for ( var C = 0 ; C < F ; ++ C ) { if ( K [ C ] == null ) break ; k [ C ] = getStrokedBBox ( [ K [ C ] ] ) ; switch ( h ) { case "smallest" : if ( ( g == "l" || g == "c" || g == "r" ) && ( s == Number . MIN _VALUE || s > k [ C ] . width ) || ( g == "t" || g == "m" || g == "b" ) && ( A == Number . MIN _VALUE || A > k [ C ] . height ) ) { v = k [ C ] . x ; E = k [ C ] . y ; t = k [ C ] . x + k [ C ] . width ; z = k [ C ] . y + k [ C ] . height ; s = k [ C ] . width ; A = k [ C ] . height } break ; case "largest" : if ( ( g == "l" || g == "c" || g == "r" ) &&
( s == Number . MIN _VALUE || s < k [ C ] . width ) || ( g == "t" || g == "m" || g == "b" ) && ( A == Number . MIN _VALUE || A < k [ C ] . height ) ) { v = k [ C ] . x ; E = k [ C ] . y ; t = k [ C ] . x + k [ C ] . width ; z = k [ C ] . y + k [ C ] . height ; s = k [ C ] . width ; A = k [ C ] . height } break ; default : if ( k [ C ] . x < v ) v = k [ C ] . x ; if ( k [ C ] . y < E ) E = k [ C ] . y ; if ( k [ C ] . x + k [ C ] . width > t ) t = k [ C ] . x + k [ C ] . width ; if ( k [ C ] . y + k [ C ] . height > z ) z = k [ C ] . y + k [ C ] . height } } if ( h == "page" ) { E = v = 0 ; t = b . contentW ; z = b . contentH } s = Array ( F ) ; A = Array ( F ) ; for ( C = 0 ; C < F ; ++ C ) { if ( K [ C ] == null ) break ; var D = k [ C ] ; s [ C ] = 0 ; A [ C ] = 0 ; switch ( g ) { case "l" : s [ C ] = v - D . x ; break ; case "c" : s [ C ] =
2012-07-14 00:14:24 +00:00
( v + t ) / 2 - ( D . x + D . width / 2 ) ; break ; case "r" : s [ C ] = t - ( D . x + D . width ) ; break ; case "t" : A [ C ] = E - D . y ; break ; case "m" : A [ C ] = ( E + z ) / 2 - ( D . y + D . height / 2 ) ; break ; case "b" : A [ C ] = z - ( D . y + D . height ) } } this . moveSelectedElements ( s , A ) } } ; this . contentW = Ub ( ) . w ; this . contentH = Ub ( ) . h ; this . updateCanvas = function ( g , h ) { e . setAttribute ( "width" , g ) ; e . setAttribute ( "height" , h ) ; var k = $ ( "#canvasBackground" ) [ 0 ] , v = l . getAttribute ( "x" ) , t = l . getAttribute ( "y" ) , E = g / 2 - this . contentW * p / 2 , z = h / 2 - this . contentH * p / 2 ; ma ( l , { width : this . contentW * p , height : this . contentH *
p , x : E , y : z , viewBox : "0 0 " + this . contentW + " " + this . contentH } ) ; ma ( k , { width : l . getAttribute ( "width" ) , height : l . getAttribute ( "height" ) , x : E , y : z } ) ; ( k = la ( "background_image" ) ) && ma ( k , { width : "100%" , height : "100%" } ) ; Qa . selectorParentGroup . setAttribute ( "transform" , "translate(" + E + "," + z + ")" ) ; return { x : E , y : z , old _x : v , old _y : t , d _x : E - v , d _y : z - t } } ; this . setBackground = function ( g , h ) { var k = la ( "canvasBackground" ) , v = $ ( k ) . find ( "rect" ) [ 0 ] , t = la ( "background_image" ) ; v . setAttribute ( "fill" , g ) ; if ( h ) { if ( ! t ) { t = d . createElementNS ( c , "image" ) ;
2012-07-14 02:04:34 +00:00
ma ( t , { id : "background_image" , width : "100%" , height : "100%" , preserveAspectRatio : "xMinYMin" , style : "pointer-events:none" } ) } S ( t , h ) ; k . appendChild ( t ) } else t && t . parentNode . removeChild ( t ) } ; this . cycleElement = function ( g ) { var h = K [ 0 ] , k = false , v = Gb ( L || w ( ) . getCurrentLayer ( ) ) ; if ( v . length ) { if ( h == null ) { g = g ? v . length - 1 : 0 ; k = v [ g ] } else for ( var t = v . length ; t -- ; ) if ( v [ t ] == h ) { g = g ? t - 1 : t + 1 ; if ( g >= v . length ) g = 0 ; else if ( g < 0 ) g = v . length - 1 ; k = v [ g ] ; break } Qb ( [ k ] , true ) ; I ( "selected" , K ) } } ; this . clear ( ) ; this . getPrivateMethods = function ( ) { return { addCommandToHistory : Ia ,
setGradient : kc , addSvgElementFromJson : da , assignAttributes : ma , BatchCommand : Oa , call : I , ChangeElementCommand : Xa , copyElem : aa , ffClone : Pa , findDefs : xb , findDuplicateGradient : dc , getElem : la , getId : ta , getIntersectionList : Lb , getMouseTarget : Kb , getNextId : M , getPathBBox : U , getUrlFromAttr : pa , hasMatrixTransform : sa , identifyLayers : Vb , InsertElementCommand : Na , isIdentity : svgedit . math . isIdentity , logMatrix : tb , matrixMultiply : fa , MoveElementCommand : Ra , preventClickDefault : ac , recalculateAllSelectedDimensions : Wa , recalculateDimensions : pb ,
remapElement : ub , RemoveElementCommand : Sa , removeUnusedDefElems : jc , round : Cb , runExtensions : kb , sanitizeSvg : Ka , SVGEditTransformList : svgedit . transformlist . SVGTransformList , toString : toString , transformBox : svgedit . math . transformBox , transformListToTransform : ha , transformPoint : O , walkTree : svgedit . utilities . walkTree } } } ; ( function ( ) { document . addEventListener ( "touchstart" , touchHandler , true ) ; document . addEventListener ( "touchmove" , touchHandler , true ) ; document . addEventListener ( "touchend" , touchHandler , true ) ; document . addEventListener ( "touchcancel" , touchHandler , true ) ; if ( ! window . svgEditor ) window . svgEditor = function ( a ) { function n ( w , p ) { var L = f . setSvgString ( w ) !== false ; p = p || a . noop ; L ? p ( true ) : a . alert ( e . notification . errorLoadingSVG , function ( ) { p ( false ) } ) } var f , c = { } , m = false , o = { lang : "en" , iconsize : "m" , bkgd _color : "FFF" , bkgd _url : "" , img _save : "embed" } ,
2012-06-25 02:14:52 +00:00
b = { } , d = { canvas _expansion : 1 , dimensions : [ 640 , 480 ] , initFill : { color : "fff" , opacity : 1 } , initStroke : { width : 1.5 , color : "000" , opacity : 1 } , initOpacity : 1 , imgPath : "images/" , langPath : "locale/" , extPath : "extensions/" , jGraduatePath : "jgraduate/images/" , extensions : [ "ext-markers.js" , "ext-eyedropper.js" , "ext-shapes.js" , "ext-grid.js" ] , initTool : "select" , wireframe : false , colorPickerCSS : false , gridSnapping : false , gridColor : "#000" , baseUnit : "px" , snappingStep : 10 , showRulers : true , show _outside _canvas : false , no _save _warning : true } , e = c . uiStrings =
{ common : { ok : "OK" , cancel : "Cancel" , key _up : "Up" , key _down : "Down" , key _backspace : "Backspace" , key _del : "Del" } , layers : { layer : "Layer" } , notification : { invalidAttrValGiven : "Invalid value given" , noContentToFitTo : "No content to fit to" , dupeLayerName : "There is already a layer named that!" , enterUniqueLayerName : "Please enter a unique layer name" , enterNewLayerName : "Please enter the new layer name" , layerHasThatName : "Layer already has that name" , QmoveElemsToLayer : 'Move selected elements to layer "%s"?' , QwantToClear : "Do you want to clear the drawing?\nThis will also erase your undo history!" ,
2012-06-23 19:40:40 +00:00
QwantToOpen : "Do you want to open a new file?\nThis will also erase your undo history!" , QerrorsRevertToSource : "There were parsing errors in your SVG source.\nRevert back to original SVG source?" , QignoreSourceChanges : "Ignore changes made to SVG source?" , featNotSupported : "Feature not supported" , enterNewImgURL : "Enter the new image URL" , defsFailOnSave : "NOTE: Due to a bug in your browser, this image may appear wrong (missing gradients or elements). It will however appear correct once actually saved." , loadingImage : "Loading image, please wait..." ,
2012-07-14 00:14:24 +00:00
saveFromBrowser : 'Select "Save As..." in your browser to save this image as a %s file.' , noteTheseIssues : "Also note the following issues: " , unsavedChanges : "There are unsaved changes." , enterNewLinkURL : "Enter the new hyperlink URL" , errorLoadingSVG : "Error: Unable to load SVG data" , URLloadFail : "Unable to load from URL" , retrieving : 'Retrieving "%s" ...' } } ; b = { } ; var l = { } ; c . curConfig = d ; c . tool _scale = 1 ; a . pref = function ( w , p ) { if ( p ) b [ w ] = p ; w = "svg-edit-" + w ; var L = location . hostname , T = L && L . indexOf ( "." ) >= 0 , N = p != undefined ,
2012-07-14 02:04:34 +00:00
K = false ; try { if ( window . localStorage ) K = localStorage } catch ( da ) { } try { if ( window . globalStorage && T ) K = globalStorage [ L ] } catch ( V ) { } if ( K ) if ( N ) K . setItem ( w , p ) ; else { if ( K . getItem ( w ) ) return K . getItem ( w ) + "" } else if ( window . widget ) if ( N ) widget . setPreferenceForKey ( p , w ) ; else return widget . preferenceForKey ( w ) ; else if ( N ) { L = new Date ; L . setTime ( L . getTime ( ) + 31536E6 ) ; p = encodeURIComponent ( p ) ; document . cookie = w + "=" + p + "; expires=" + L . toUTCString ( ) } else return ( L = document . cookie . match ( RegExp ( w + "=([^;]+)" ) ) ) ? decodeURIComponent ( L [ 1 ] ) :
"" } ; c . setConfig = function ( w ) { a . each ( w , function ( p , L ) { p in o && a . pref ( p , L ) } ) ; a . extend ( true , d , w ) ; if ( w . extensions ) d . extensions = w . extensions } ; c . setCustomHandlers = function ( w ) { c . ready ( function ( ) { if ( w . open ) { a ( '#tool_open > input[type="file"]' ) . remove ( ) ; a ( "#tool_open" ) . show ( ) ; f . open = w . open } if ( w . save ) { c . show _save _warning = false ; f . bind ( "saved" , w . save ) } w . pngsave && f . bind ( "exported" , w . pngsave ) ; l = w } ) } ; c . randomizeIds = function ( ) { f . randomizeIds ( arguments ) } ; c . init = function ( ) { function w ( q , B ) { var J = q . id , Q = J . split ( "_" ) , X =
Q [ 0 ] ; Q = Q [ 1 ] ; B && f . setStrokeAttr ( "stroke-" + X , Q ) ; fb ( ) ; W ( "#cur_" + X , J , 20 ) ; a ( q ) . addClass ( "current" ) . siblings ( ) . removeClass ( "current" ) } function p ( q , B ) { a . pref ( "bkgd_color" , q ) ; a . pref ( "bkgd_url" , B ) ; f . setBackground ( q , B ) } function L ( ) { var q = f . getHref ( Z ) ; q = q . indexOf ( "data:" ) === 0 ? "" : q ; a . prompt ( e . notification . enterNewImgURL , q , function ( B ) { B && Ea ( B ) } ) } function T ( ) { if ( f . deleteCurrentLayer ( ) ) { Ja ( ) ; Eb ( ) ; a ( "#layerlist tr.layer" ) . removeClass ( "layersel" ) ; a ( "#layerlist tr.layer:first" ) . addClass ( "layersel" ) } } function N ( ) { var q =
f . getCurrentDrawing ( ) . getCurrentLayerName ( ) + " copy" ; a . prompt ( e . notification . enterUniqueLayerName , q , function ( B ) { if ( B ) if ( f . getCurrentDrawing ( ) . hasLayer ( B ) ) a . alert ( e . notification . dupeLayerName ) ; else { f . cloneLayer ( B ) ; Ja ( ) ; Eb ( ) } } ) } function K ( q ) { var B = a ( "#layerlist tr.layersel" ) . index ( ) , J = f . getCurrentDrawing ( ) . getNumLayers ( ) ; if ( B > 0 || B < J - 1 ) { B += q ; f . setCurrentLayerPosition ( J - B - 1 ) ; Eb ( ) } } function da ( q , B ) { var J = document . getElementById ( "ruler_x_cursor" ) , Q = document . getElementById ( "ruler_y_cursor" ) , X = document . getElementById ( "workarea" ) ;
document . getElementById ( "title_show" ) ; svgedit . browser . isTouch ( ) || a ( "#workarea" ) . unbind ( "mousemove.rulers" ) . bind ( "mousemove.rulers" , function ( nc ) { nc . stopPropagation ( ) ; J . style . left = nc . pageX - 66 + X . scrollLeft + "px" ; Q . style . top = nc . pageY - 48 + X . scrollTop + "px" } ) ; B || ( B = f . getZoom ( ) ) ; q || ( q = a ( "#svgcanvas" ) ) ; for ( var ja = f . getContentElem ( ) , va = svgedit . units . getTypeMap ( ) [ d . baseUnit ] , ya = 0 ; ya < 2 ; ya ++ ) { var Da = ya === 0 , Ca = Da ? "x" : "y" , Ba = Da ? "width" : "height" , vb = ja . getAttribute ( Ca ) - 0 ; Ca = a ( "#ruler_" + Ca + " canvas:first" ) ; $hcanv = Ca . clone ( ) ;
Ca . replaceWith ( $hcanv ) ; var Ta = $hcanv [ 0 ] ; var ia = Ca = q [ Ba ] ( ) * 2 ; Ta . parentNode . style [ Ba ] = ia + "px" ; var yb = 0 , bb , Fa = Ta . getContext ( "2d" ) ; Fa . fillStyle = "rgb(200,0,0)" ; Fa . fillRect ( 0 , 0 , Ta . width , Ta . height ) ; $hcanv . siblings ( ) . remove ( ) ; if ( Ca >= 3E4 ) { var Va = parseInt ( Ca / 3E4 ) + 1 ; bb = Array ( Va ) ; bb [ 0 ] = Fa ; for ( var Ha = 1 ; Ha < Va ; Ha ++ ) { Ta [ Ba ] = 3E4 ; var ib = Ta . cloneNode ( true ) ; Ta . parentNode . appendChild ( ib ) ; bb [ Ha ] = ib . getContext ( "2d" ) } ib [ Ba ] = Ca % 3E4 ; Ca = 3E4 } Ta [ Ba ] = Ca ; Ba = va * B ; var cb = 50 / Ba ; Ta = 1 ; for ( Ha = 0 ; Ha < ic . length ; Ha ++ ) { Ta = Va = ic [ Ha ] ; if ( cb <=
Va ) break } cb = Ta * Ba ; Fa . font = "normal 9px 'Lucida Grande', sans-serif" ; Fa . fillStyle = "#777" ; for ( var jb = vb / Ba % Ta * Ba , Zb = jb - cb ; jb < ia ; jb += cb ) { Zb += cb ; Ha = Math . round ( jb ) + 0.5 ; if ( Da ) { Fa . moveTo ( Ha , 15 ) ; Fa . lineTo ( Ha , 0 ) } else { Fa . moveTo ( 15 , Ha ) ; Fa . lineTo ( 0 , Ha ) } Va = ( Zb - vb ) / Ba ; if ( Ta >= 1 ) Ha = Math . round ( Va ) ; else { Ha = ( Ta + "" ) . split ( "." ) [ 1 ] . length ; Ha = Va . toFixed ( Ha ) - 0 } if ( Ha !== 0 && Ha !== 1E3 && Ha % 1E3 === 0 ) Ha = Ha / 1E3 + "K" ; if ( Da ) { Fa . fillText ( Ha , jb + 2 , 8 ) ; Fa . fillStyle = "#777" } else { Va = ( Ha + "" ) . split ( "" ) ; for ( Ha = 0 ; Ha < Va . length ; Ha ++ ) { Fa . fillText ( Va [ Ha ] ,
1 , jb + 9 + Ha * 9 ) ; Fa . fillStyle = "#777" } } Va = cb / 10 ; for ( Ha = 1 ; Ha < 10 ; Ha ++ ) { var Nb = Math . round ( jb + Va * Ha ) + 0.5 ; if ( bb && Nb > Ca ) { yb ++ ; Fa . stroke ( ) ; if ( yb >= bb . length ) { Ha = 10 ; jb = ia ; continue } Fa = bb [ yb ] ; jb -= 3E4 ; Nb = Math . round ( jb + Va * Ha ) + 0.5 } var Wb = Ha % 2 ? 12 : 10 ; if ( Da ) { Fa . moveTo ( Nb , 15 ) ; Fa . lineTo ( Nb , Wb ) } else { Fa . moveTo ( 15 , Nb ) ; Fa . lineTo ( Wb , Nb ) } } } Fa . strokeStyle = "#666" ; Fa . stroke ( ) } } ( function ( ) { var q = window . opener ; if ( q ) try { var B = q . document . createEvent ( "Event" ) ; B . initEvent ( "svgEditorReady" , true , true ) ; q . document . documentElement . dispatchEvent ( B ) } catch ( J ) { } } ) ( ) ;
( function ( ) { var q = a . deparam . querystring ( true ) ; if ( ! a . isEmptyObject ( q ) ) { if ( q . dimensions ) q . dimensions = q . dimensions . split ( "," ) ; if ( q . extensions ) q . extensions = q . extensions . split ( "," ) ; if ( q . bkgd _color ) q . bkgd _color = "#" + q . bkgd _color ; svgEditor . setConfig ( q ) ; var B = q . source , J = a . param . querystring ( ) ; if ( ! B ) if ( J . indexOf ( "source=data:" ) >= 0 ) B = J . match ( /source=(data:[^&]*)/ ) [ 1 ] ; if ( B ) if ( B . indexOf ( "data:" ) === 0 ) { B = B . replace ( / /g , "+" ) ; c . loadFromDataURI ( B ) } else c . loadFromString ( B ) ; else if ( J . indexOf ( "paramurl=" ) !== - 1 ) svgEditor . loadFromURL ( J . substr ( 9 ) ) ;
else q . url && svgEditor . loadFromURL ( q . url ) } } ) ( ) ; var V = function ( ) { a . each ( d . extensions , function ( ) { var B = this ; a . getScript ( d . extPath + B , function ( J ) { if ( ! J ) { J = document . createElement ( "script" ) ; J . src = d . extPath + B ; document . querySelector ( "head" ) . appendChild ( J ) } } ) } ) ; var q = [ ] ; a ( "#lang_select option" ) . each ( function ( ) { q . push ( this . value ) } ) ; c . putLocale ( null , q ) } ; document . location . protocol === "file:" ? setTimeout ( V , 100 ) : V ( ) ; a . svgIcons ( d . imgPath + "svg_edit_icons.svg" , { w : 27 , h : 27 , id _match : false , no _img : ! svgedit . browser . isWebkit ( ) ,
2012-07-04 14:42:50 +00:00
fallback _path : d . imgPath , fallback : { new _image : "clear.png" , save : "save.png" , open : "open.png" , source : "source.png" , docprops : "document-properties.png" , wireframe : "wireframe.png" , undo : "undo.png" , redo : "redo.png" , select : "select.png" , select _node : "select_node.png" , pencil : "fhpath.png" , pen : "line.png" , square : "square.png" , rect : "rect.png" , fh _rect : "freehand-square.png" , circle : "circle.png" , ellipse : "ellipse.png" , fh _ellipse : "freehand-circle.png" , path : "path.png" , text : "text.png" , image : "image.png" , zoom : "zoom.png" , clone : "clone.png" ,
node _clone : "node_clone.png" , "delete" : "delete.png" , node _delete : "node_delete.png" , move _top : "move_top.png" , move _bottom : "move_bottom.png" , to _path : "to_path.png" , link _controls : "link_controls.png" , reorient : "reorient.png" , align _left : "align-left.png" , align _center : "align-center" , align _right : "align-right" , align _top : "align-top" , align _middle : "align-middle" , align _bottom : "align-bottom" , go _up : "go-up.png" , go _down : "go-down.png" , ok : "save.png" , cancel : "cancel.png" , arrow _right : "flyouth.png" , arrow _down : "dropdown.gif" } ,
placement : { "#tool_docprops > div" : "docprops" , "#tool_select" : "select" , "#tool_fhpath" : "pencil" , "#tool_line" : "pen" , "#tool_rect,#tools_rect_show" : "rect" , "#tool_square" : "square" , "#tool_fhrect" : "fh_rect" , "#tool_ellipse,#tools_ellipse_show" : "ellipse" , "#tool_circle" : "circle" , "#tool_fhellipse" : "fh_ellipse" , "#tool_path" : "path" , "#tool_text,#layer_rename" : "text" , "#tool_image" : "image" , "#tool_zoom" : "zoom" , "#tool_node_clone" : "node_clone" , "#tool_node_delete" : "node_delete" , "#tool_add_subpath" : "add_subpath" , "#tool_openclose_path" : "open_path" ,
"#tool_alignleft, #tool_posleft" : "align_left" , "#tool_aligncenter, #tool_poscenter" : "align_center" , "#tool_alignright, #tool_posright" : "align_right" , "#tool_aligntop, #tool_postop" : "align_top" , "#tool_alignmiddle, #tool_posmiddle" : "align_middle" , "#tool_alignbottom, #tool_posbottom" : "align_bottom" , "#cur_position" : "align" , "#linecap_butt,#cur_linecap" : "linecap_butt" , "#linecap_round" : "linecap_round" , "#linecap_square" : "linecap_square" , "#linejoin_miter,#cur_linejoin" : "linejoin_miter" , "#linejoin_round" : "linejoin_round" ,
"#linejoin_bevel" : "linejoin_bevel" , "#url_notice" : "warning" , "#layer_up" : "go_up" , "#layer_down" : "go_down" , "#layer_moreopts" : "context_menu" , "#layerlist td.layervis" : "eye" , "#tool_source_save,#tool_docprops_save,#tool_prefs_save" : "ok" , "#tool_source_cancel,#tool_docprops_cancel,#tool_prefs_cancel" : "cancel" , "#rwidthLabel, #iwidthLabel" : "width" , "#rheightLabel, #iheightLabel" : "height" , "#angleLabel" : "angle" , "#linkLabel,#tool_make_link,#tool_make_link_multi" : "globe_link" , "#zoomLabel" : "zoom" , "#blurLabel" : "blur" ,
".flyout_arrow_horiz" : "arrow_right" , "#palette .palette_item:first, #fill_bg, #stroke_bg" : "no_color" } , resize : { "#logo .svg_icon" : 32 , ".flyout_arrow_horiz .svg_icon" : 5 , ".layer_button .svg_icon, #layerlist td.layervis .svg_icon" : 14 , "#main_button .dropdown .svg_icon" : 9 , "#fill_bg .svg_icon, #stroke_bg .svg_icon" : 24 , ".palette_item:first .svg_icon" : 16 , ".toolbar_button button .svg_icon" : 16 , ".stroke_tool div div .svg_icon" : 20 , "#tools_bottom label .svg_icon" : 18 , "#zoom_dropdown .svg_icon" : 7 } , callback : function ( ) { a ( ".toolbar_button button > svg, .toolbar_button button > img" ) . each ( function ( ) { a ( this ) . parent ( ) . prepend ( this ) } ) ;
2012-07-14 02:04:34 +00:00
var q = a ( "#tools_left" ) ; if ( q . length != 0 ) { q . offset ( ) ; q . outerHeight ( ) } a ( ".tools_flyout" ) . each ( function ( ) { var B = a ( "#" + this . id + "_show" ) , J = B . attr ( "data-curopt" ) ; if ( ! B . children ( "svg, img" ) . length ) { J = a ( J ) . children ( ) . clone ( ) ; if ( J . length ) { J [ 0 ] . removeAttribute ( "style" ) ; B . append ( J ) } } } ) ; svgEditor . runCallbacks ( ) ; setTimeout ( function ( ) { a ( ".flyout_arrow_horiz:empty" ) . each ( function ( ) { a ( this ) . append ( a . getSvgIcon ( "arrow_right" ) . width ( 5 ) . height ( 5 ) ) } ) } , 1 ) } } ) ; c . canvas = f = new a . SvgCanvas ( document . getElementById ( "svgcanvas" ) ,
2012-07-14 00:14:24 +00:00
d ) ; c . show _save _warning = false ; V = navigator . platform . indexOf ( "Mac" ) >= 0 ; var O = navigator . userAgent . indexOf ( "AppleWebKit" ) >= 0 , fa = V ? "meta+" : "ctrl+" , sa = f . pathActions , ha = f . undoMgr , ca = svgedit . utilities , ea = d . imgPath + "placeholder.svg" , qa = a ( "#workarea" ) , pa = a ( "#cmenu_canvas" ) ; a ( "#cmenu_layers" ) ; var ba = null , S = 1 , U = "toolbars" , ra = "" , la = { fill : null , stroke : null } ; V || a ( ".shortcut" ) . each ( function ( ) { var q = a ( this ) . text ( ) ; a ( this ) . text ( q . split ( "\u2318" ) . join ( "Ctrl+" ) ) } ) ; ( function ( ) { a ( "#dialog_container" ) . draggable ( { cancel : "#dialog_content, #dialog_buttons *" ,
2012-07-14 02:04:34 +00:00
containment : "window" } ) ; var q = a ( "#dialog_box" ) , B = a ( "#dialog_buttons" ) , J = function ( Q , X , ja , va ) { a ( "#dialog_content" ) . html ( "<p>" + X . replace ( /\n/g , "</p><p>" ) + "</p>" ) . toggleClass ( "prompt" , Q == "prompt" ) ; B . empty ( ) ; var ya = a ( '<input type="button" value="' + e . common . ok + '">' ) . appendTo ( B ) ; Q != "alert" && a ( '<input type="button" value="' + e . common . cancel + '">' ) . appendTo ( B ) . click ( function ( ) { q . hide ( ) ; ja ( false ) } ) ; if ( Q == "prompt" ) { var Da = a ( '<input type="text">' ) . prependTo ( B ) ; Da . val ( va || "" ) ; Da . bind ( "keydown" , "return" , function ( ) { ya . click ( ) } ) } Q ==
"process" && ya . hide ( ) ; q . show ( ) ; ya . click ( function ( ) { q . hide ( ) ; var Ca = Q == "prompt" ? Da . val ( ) : true ; ja && ja ( Ca ) } ) . focus ( ) ; Q == "prompt" && Da . focus ( ) } ; a . alert = function ( Q , X ) { J ( "alert" , Q , X ) } ; a . confirm = function ( Q , X ) { J ( "confirm" , Q , X ) } ; a . process _cancel = function ( Q , X ) { J ( "process" , Q , X ) } ; a . prompt = function ( Q , X , ja ) { J ( "prompt" , Q , ja , X ) } } ) ( ) ; var ma = function ( ) { var q = a ( ".tool_button_current" ) ; if ( q . length && q [ 0 ] . id !== "tool_select" ) { q . removeClass ( "tool_button_current" ) . addClass ( "tool_button" ) ; a ( "#tool_select" ) . addClass ( "tool_button_current" ) . removeClass ( "tool_button" ) ;
a ( "#styleoverrides" ) . text ( "#svgcanvas svg *{cursor:move;pointer-events:all} #svgcanvas svg{cursor:default}" ) } f . setMode ( "select" ) } , Z = null , Aa = false , Ka = false , Ra = false , Na = false , Sa = "" , Xa = a ( "title:first" ) . text ( ) , Oa = function ( q , B , J ) { f . getResolution ( ) ; a ( "#svgcanvas" ) . position ( ) ; if ( B = f . setBBoxZoom ( B , qa . width ( ) - 15 , qa . height ( ) - 15 ) ) { q = B . zoom ; B = B . bbox ; if ( q < 0.0010 ) mb ( { value : 0.1 } ) ; else { a ( "#zoom" ) . val ( q * 100 ) ; J ? Sb ( ) : Sb ( false , { x : B . x * q + B . width * q / 2 , y : B . y * q + B . height * q / 2 } ) ; f . getMode ( ) == "zoom" && B . width && ma ( ) ; s ( ) } } } ; a ( "#cur_context_panel" ) . delegate ( "a" ,
"click" , function ( ) { var q = a ( this ) ; q . attr ( "data-root" ) ? f . leaveContext ( ) : f . setContext ( q . text ( ) ) ; return false } ) ; var Ia = { } , Qa = function ( q ) { a . each ( q , function ( B , J ) { var Q = a ( B ) . children ( ) , X = B + "_show" , ja = a ( X ) , va = false ; Q . addClass ( "tool_button" ) . unbind ( "click mousedown mouseup" ) . each ( function ( Ca ) { var Ba = J [ Ca ] ; Ia [ Ba . sel ] = Ba . fn ; if ( Ba . isDefault ) va = Ca ; Ca = function ( vb ) { var Ta = Ba ; if ( vb . type === "keydown" ) { var ia = a ( Ta . parent + "_show" ) . hasClass ( "tool_button_current" ) , yb = a ( Ta . parent + "_show" ) . attr ( "data-curopt" ) ; a . each ( q [ Ba . parent ] ,
function ( Fa , Va ) { if ( Va . sel == yb ) Ta = ! vb . shiftKey || ! ia ? Va : q [ Ba . parent ] [ Fa + 1 ] || q [ Ba . parent ] [ 0 ] } ) } if ( a ( this ) . hasClass ( "disabled" ) ) return false ; xa ( X ) && Ta . fn ( ) ; var bb = Ta . icon ? a . getSvgIcon ( Ta . icon , true ) : a ( Ta . sel ) . children ( ) . eq ( 0 ) . clone ( ) ; bb [ 0 ] . setAttribute ( "width" , ja . width ( ) ) ; bb [ 0 ] . setAttribute ( "height" , ja . height ( ) ) ; ja . children ( ":not(.flyout_arrow_horiz)" ) . remove ( ) ; ja . append ( bb ) . attr ( "data-curopt" , Ta . sel ) } ; a ( this ) . mouseup ( Ca ) ; Ba . key && a ( document ) . bind ( "keydown" , Ba . key [ 0 ] + " shift+" + Ba . key [ 0 ] , Ca ) } ) ; if ( va ) ja . attr ( "data-curopt" ,
J [ va ] . sel ) ; else ja . attr ( "data-curopt" ) || ja . attr ( "data-curopt" , J [ 0 ] . sel ) ; var ya , Da = a ( X ) . position ( ) ; a ( B ) . css ( { left : Da . left + 34 , top : Da . top + 77 } ) ; ja . mousedown ( function ( Ca ) { a ( "#tools_shapelib" ) . is ( ":visible" ) && xa ( X , false ) ; if ( ja . hasClass ( "disabled" ) ) return false ; var Ba = a ( B ) , vb = Da . left + 34 , Ta = Ba . width ( ) * - 1 , ia = Ba . data ( "shown_popop" ) ? 200 : 0 ; ya = setTimeout ( function ( ) { ja . data ( "isLibrary" ) ? Ba . css ( "left" , vb ) . show ( ) : Ba . css ( "left" , Ta ) . show ( ) . animate ( { left : vb } , 150 ) ; Ba . data ( "shown_popop" , true ) } , ia ) ; Ca . preventDefault ( ) } ) . mouseup ( function ( ) { clearTimeout ( ya ) ;
var Ca = a ( this ) . attr ( "data-curopt" ) ; if ( ja . data ( "isLibrary" ) && a ( X . replace ( "_show" , "" ) ) . is ( ":visible" ) ) xa ( X , true ) ; else xa ( X ) && Ca in Ia && Ia [ Ca ] ( ) } ) } ) ; Ob ( ) } , Ga = function ( q , B ) { return a ( "<div>" , { "class" : "tools_flyout" , id : q } ) . appendTo ( "#svg_editor" ) . append ( B ) } , Fb = function ( ) { a ( ".tools_flyout" ) . each ( function ( ) { var q = a ( "#" + this . id + "_show" ) , B = q . offset ( ) ; q = q . outerWidth ( ) ; a ( this ) . css ( { left : ( B . left + q ) * S , top : B . top } ) } ) } , Ob = function ( ) { a ( ".tools_flyout" ) . each ( function ( ) { var q = a ( "#" + this . id + "_show" ) ; if ( ! q . data ( "isLibrary" ) ) { var B =
[ ] ; a ( this ) . children ( ) . each ( function ( ) { B . push ( this . title ) } ) ; q [ 0 ] . title = B . join ( " / " ) } } ) } , lb , $a = function ( q , B , J ) { var Q = null ; if ( q . indexOf ( "url(#" ) === 0 ) { q = ( q = f . getRefElem ( q ) ) ? q . cloneNode ( true ) : a ( "#" + J + "_color defs *" ) [ 0 ] ; Q = { alpha : B } ; Q [ q . tagName ] = q } else Q = q . indexOf ( "#" ) === 0 ? { alpha : B , solidColor : q . substr ( 1 ) } : { alpha : B , solidColor : "none" } ; return new a . jGraduate . Paint ( Q ) } , Ya = f . getResolution ( ) ; if ( d . baseUnit !== "px" ) { Ya . w = svgedit . units . convertUnit ( Ya . w ) + d . baseUnit ; Ya . h = svgedit . units . convertUnit ( Ya . h ) + d . baseUnit } a ( ".canvas_width" ) . val ( Ya . w ) ;
2012-07-14 00:40:56 +00:00
a ( ".canvas_height" ) . val ( Ya . h ) ; a ( "#docprops_button" ) . on ( "click" , function ( ) { F ( ) } ) ; var La = function ( q ) { f . createLayer ( "background" ) ; cur _shape = f . addSvgElementFromJson ( { element : "rect" , attr : { x : 0 , y : 0 , width : Ya . w , height : Ya . h , stroke : "none" , id : "canvas_background" , opacity : 1 , fill : q || a . pref ( "bkgd_color" ) , style : "pointer-events:none" } } ) ; f . setCurrentLayer ( "Layer 1" ) ; f . setCurrentLayerPosition ( "1" ) } ; document . getElementById ( "canvas_background" ) ? document . getElementById ( "canvas_background" ) . getAttribute ( "fill" ) : La ( ) ; if ( a . pref ( "bkgd_color" ) ) p ( a . pref ( "bkgd_color" ) ,
2012-07-14 02:04:34 +00:00
a . pref ( "bkgd_url" ) ) ; else a . pref ( "bkgd_url" ) && p ( o . bkgd _color , a . pref ( "bkgd_url" ) ) ; var Ea = c . setImageURL = function ( q ) { q || ( q = ea ) ; f . setImageURL ( q ) ; a ( "#image_url" ) . val ( q ) ; if ( q . indexOf ( "data:" ) === 0 ) { a ( "#image_url" ) . hide ( ) ; a ( "#change_image_url" ) . show ( ) } else { f . embedImage ( q , function ( B ) { B ? a ( "#url_notice" ) . hide ( ) : a ( "#url_notice" ) . show ( ) ; ea = q } ) ; a ( "#image_url" ) . show ( ) ; a ( "#change_image_url" ) . hide ( ) } } , nb = function ( q ) { var B = Math . min ( Math . max ( 12 + q . value . length * 6 , 50 ) , 300 ) ; a ( q ) . width ( B ) } , Ja = function ( ) { var q = Z ; if ( q != null &&
! q . parentNode ) q = null ; var B = f . getCurrentDrawing ( ) . getCurrentLayerName ( ) , J = f . getMode ( ) , Q = d . baseUnit !== "px" ? d . baseUnit : null , X = J == "pathedit" , ja = a ( "#cmenu_canvas li" ) ; a ( "#selected_panel, #multiselected_panel, #g_panel, #path_panel, #rect_panel, #canvas_panel, #circle_panel,\t\t\t\t\t#ellipse_panel, #line_panel, #text_panel, #image_panel, #container_panel, #use_panel, #a_panel" ) . hide ( ) ; a ( ".menu_item" , "#edit_menu" ) . addClass ( "disabled" ) ; a ( ".menu_item" , "#object_menu" ) . addClass ( "disabled" ) ; ! q && ! Aa && a ( "#canvas_panel" ) . show ( ) ;
if ( q != null ) { var va = q . nodeName , ya = f . getRotationAngle ( q ) ; a ( "#angle" ) . val ( Math . round ( ya ) ) ; ya = f . getBlur ( q ) ; a ( "#blur" ) . val ( ya ) ; a ( "#blur_slider" ) . slider ( "option" , "value" , ya ) ; f . addedNew && va === "image" && f . getHref ( q ) . indexOf ( "data:" ) !== 0 && L ( ) ; if ( ! X && J != "pathedit" ) { a ( "#selected_panel" ) . show ( ) ; a ( ".action_selected" ) . removeClass ( "disabled" ) ; if ( [ "line" , "circle" , "ellipse" ] . indexOf ( va ) >= 0 ) a ( "#xy_panel" ) . hide ( ) ; else { var Da , Ca ; if ( [ "g" , "polyline" , "path" ] . indexOf ( va ) >= 0 ) { if ( J = f . getStrokedBBox ( [ q ] ) ) { Da = J . x ; Ca = J . y } } else { Da =
q . getAttribute ( "x" ) ; Ca = q . getAttribute ( "y" ) } if ( Q ) { Da = svgedit . units . convertUnit ( Da ) ; Ca = svgedit . units . convertUnit ( Ca ) } a ( "#selected_x" ) . val ( Math . round ( Ca ) || 0 ) ; a ( "#selected_y" ) . val ( Math . round ( Da ) || 0 ) ; a ( "#xy_panel" ) . show ( ) } [ "image" , "text" , "path" , "g" , "use" ] . indexOf ( va ) == - 1 && a ( ".action_path_convert_selected" ) . removeClass ( "disabled" ) ; va === "path" && a ( ".action_path_selected" ) . removeClass ( "disabled" ) } else { B = sa . getNodePoint ( ) ; a ( "#tool_add_subpath" ) . removeClass ( "push_button_pressed" ) . addClass ( "tool_button" ) ; a ( "#tool_node_delete" ) . toggleClass ( "disabled" ,
! sa . canDeleteNodes ) ; W ( "#tool_openclose_path" , sa . closed _subpath ? "open_path" : "close_path" ) ; if ( B ) { X = a ( "#seg_type" ) ; if ( Q ) { B . x = svgedit . units . convertUnit ( B . x ) ; B . y = svgedit . units . convertUnit ( B . y ) } a ( "#path_node_x" ) . val ( Math . round ( B . x ) ) ; a ( "#path_node_y" ) . val ( Math . round ( B . y ) ) ; B . type ? X . val ( B . type ) . removeAttr ( "disabled" ) : X . val ( 4 ) . attr ( "disabled" , "disabled" ) } return } Q = { g : [ ] , a : [ ] , rect : [ "rx" , "width" , "height" ] , image : [ "width" , "height" ] , circle : [ "cx" , "cy" , "r" ] , ellipse : [ "cx" , "cy" , "rx" , "ry" ] , line : [ "x1" , "y1" , "x2" , "y2" ] ,
text : [ ] , use : [ ] } ; var Ba = q . tagName ; a ( q ) . data ( "gsvg" ) && a ( "#g_panel" ) . show ( ) ; Ba == "path" && a ( "#path_panel" ) . show ( ) ; if ( Q [ Ba ] ) { Q = Q [ Ba ] ; a ( "#" + Ba + "_panel" ) . show ( ) ; a . each ( Q , function ( vb , Ta ) { var ia = q . getAttribute ( Ta ) ; if ( d . baseUnit !== "px" && q [ Ta ] ) ia = svgedit . units . convertUnit ( q [ Ta ] . baseVal . value ) ; a ( "#" + Ba + "_" + Ta ) . val ( Math . round ( ia ) || 0 ) } ) ; if ( Ba == "text" ) { a ( "#text_panel" ) . css ( "display" , "inline" ) ; f . getItalic ( ) ? a ( "#tool_italic" ) . addClass ( "push_button_pressed" ) . removeClass ( "tool_button" ) : a ( "#tool_italic" ) . removeClass ( "push_button_pressed" ) . addClass ( "tool_button" ) ;
f . getBold ( ) ? a ( "#tool_bold" ) . addClass ( "push_button_pressed" ) . removeClass ( "tool_button" ) : a ( "#tool_bold" ) . removeClass ( "push_button_pressed" ) . addClass ( "tool_button" ) ; a ( "#font_family" ) . val ( q . getAttribute ( "font-family" ) ) ; a ( "#font_size" ) . val ( q . getAttribute ( "font-size" ) ) ; a ( "#text" ) . val ( q . textContent ) ; f . addedNew && setTimeout ( function ( ) { a ( "#text" ) . focus ( ) . select ( ) } , 100 ) } else if ( Ba == "image" ) Ea ( f . getHref ( q ) ) ; else if ( Ba === "g" || Ba === "use" ) { a ( "#container_panel" ) . show ( ) ; a ( ".action_group_selected" ) . removeClass ( "disabled" ) ;
Q = f . getTitle ( ) ; va = a ( "#g_title" ) [ 0 ] ; va . value = Q ; nb ( va ) ; Ba == "use" ? va . setAttribute ( "disabled" , "disabled" ) : va . removeAttribute ( "disabled" ) } } ja [ ( Ba === "g" ? "en" : "dis" ) + "ableContextMenuItems" ] ( "#ungroup" ) ; ja [ ( Ba === "g" || ! Aa ? "dis" : "en" ) + "ableContextMenuItems" ] ( "#group" ) } else if ( Aa ) { a ( "#multiselected_panel" ) . show ( ) ; a ( ".action_multi_selected" ) . removeClass ( "disabled" ) ; ja . enableContextMenuItems ( "#group" ) . disableContextMenuItems ( "#ungroup" ) } else ja . disableContextMenuItems ( "#delete,#cut,#copy,#group,#ungroup,#move_front,#move_up,#move_down,#move_back" ) ;
ha . getUndoStackSize ( ) > 0 ? a ( "#tool_undo" ) . removeClass ( "disabled" ) : a ( "#tool_undo" ) . addClass ( "disabled" ) ; ha . getRedoStackSize ( ) > 0 ? a ( "#tool_redo" ) . removeClass ( "disabled" ) : a ( "#tool_redo" ) . addClass ( "disabled" ) ; f . addedNew = false ; if ( q && ! X || Aa ) { a ( "#selLayerNames" ) . removeAttr ( "disabled" ) . val ( B ) ; pa . enableContextMenuItems ( "#delete,#cut,#copy,#move_front,#move_up,#move_down,#move_back" ) } else a ( "#selLayerNames" ) . attr ( "disabled" , "disabled" ) } ; a ( "#text" ) . focus ( function ( ) { } ) ; a ( "#text" ) . blur ( function ( ) { } ) ; f . bind ( "selected" ,
function ( q , B ) { var J = f . getMode ( ) ; J === "select" && ma ( ) ; J = J == "pathedit" ; Z = B . length == 1 || B [ 1 ] == null ? B [ 0 ] : null ; Aa = B . length >= 2 && B [ 1 ] != null ; if ( Z != null ) if ( ! J ) { if ( Z != null ) switch ( Z . tagName ) { case "use" : case "image" : case "foreignObject" : break ; case "g" : case "a" : for ( var Q = null , X = Z . getElementsByTagName ( "*" ) , ja = 0 , va = X . length ; ja < va ; ja ++ ) { var ya = X [ ja ] . getAttribute ( "stroke-width" ) ; if ( ja === 0 ) Q = ya ; else if ( Q !== ya ) Q = null } a ( "#stroke_width" ) . val ( Q === null ? "" : Q ) ; la . fill . update ( true ) ; la . stroke . update ( true ) ; break ; default : la . fill . update ( true ) ;
la . stroke . update ( true ) ; a ( "#stroke_width" ) . val ( Z . getAttribute ( "stroke-width" ) || 1 ) ; a ( "#stroke_style" ) . val ( Z . getAttribute ( "stroke-dasharray" ) || "none" ) ; Q = Z . getAttribute ( "stroke-linejoin" ) || "miter" ; a ( "#linejoin_" + Q ) . length != 0 && w ( a ( "#linejoin_" + Q ) [ 0 ] ) ; Q = Z . getAttribute ( "stroke-linecap" ) || "butt" ; a ( "#linecap_" + Q ) . length != 0 && w ( a ( "#linecap_" + Q ) [ 0 ] ) } if ( Z != null ) { Q = ( Z . getAttribute ( "opacity" ) || 1 ) * 100 ; a ( "#group_opacity" ) . val ( Q ) ; a ( "#opac_slider" ) . slider ( "option" , "value" , Q ) ; a ( "#elem_id" ) . val ( Z . id ) } } a ( "#path_node_panel" ) . toggle ( J ) ;
a ( "#tools_bottom_2,#tools_bottom_3" ) . toggle ( ! J ) ; if ( J ) { a ( ".tool_button_current" ) . removeClass ( "tool_button_current" ) . addClass ( "tool_button" ) ; a ( "#tool_select" ) . addClass ( "tool_button_current" ) . removeClass ( "tool_button" ) ; W ( "#tool_select" , "select_node" ) ; Aa = false ; if ( B . length ) Z = B [ 0 ] } else W ( "#tool_select" , "select" ) ; Ja ( ) ; f . runExtensions ( "selectedChanged" , { elems : B , selectedElement : Z , multiselected : Aa } ) } ) ; f . bind ( "transition" , function ( q , B ) { var J = f . getMode ( ) , Q = B [ 0 ] ; if ( Q ) { Aa = B . length >= 2 && B [ 1 ] != null ; if ( ! Aa ) switch ( J ) { case "rotate" : J =
f . getRotationAngle ( Q ) ; a ( "#angle" ) . val ( Math . round ( J ) ) ; a ( "#tool_reorient" ) . toggleClass ( "disabled" , J == 0 ) } f . runExtensions ( "elementTransition" , { elems : B } ) } } ) ; f . bind ( "changed" , function ( q , B ) { var J = f . getMode ( ) ; J === "select" && ma ( ) ; for ( var Q = 0 ; Q < B . length ; ++ Q ) { var X = B [ Q ] ; if ( X && X . tagName === "svg" ) { Eb ( ) ; Sb ( ) } else if ( X && Z && Z . parentNode == null ) Z = X } c . show _save _warning = true ; Ja ( ) ; if ( Z && J === "select" ) { la . fill . update ( ) ; la . stroke . update ( ) } f . runExtensions ( "elementChanged" , { elems : B } ) } ) ; f . bind ( "saved" , function ( q , B ) { c . show _save _warning =
false ; B = '<?xml version="1.0"?>\n' + B ; var J = navigator . userAgent ; if ( ~ J . indexOf ( "Chrome" ) && a . browser . version >= 533 || ~ J . indexOf ( "MSIE" ) ) A ( 0 , true ) ; else { var Q = q . open ( "data:image/svg+xml;base64," + ca . encode64 ( B ) ) , X = a . pref ( "save_notice_done" ) ; if ( X !== "all" ) { var ja = e . notification . saveFromBrowser . replace ( "%s" , "SVG" ) ; if ( J . indexOf ( "Gecko/" ) !== - 1 ) if ( B . indexOf ( "<defs" ) !== - 1 ) { ja += "\n\n" + e . notification . defsFailOnSave ; a . pref ( "save_notice_done" , "all" ) ; X = "all" } else a . pref ( "save_notice_done" , "part" ) ; else a . pref ( "save_notice_done" ,
"all" ) ; X !== "part" && Q . alert ( ja ) } } } ) ; f . bind ( "exported" , function ( q , B ) { var J = B . issues ; a ( "#export_canvas" ) . length || a ( "<canvas>" , { id : "export_canvas" } ) . hide ( ) . appendTo ( "body" ) ; var Q = a ( "#export_canvas" ) [ 0 ] ; Q . width = f . contentW ; Q . height = f . contentH ; canvg ( Q , B . svg , { renderCallback : function ( ) { var X = Q . toDataURL ( "image/png" ) ; ba . location . href = X ; if ( a . pref ( "export_notice_done" ) !== "all" ) { X = e . notification . saveFromBrowser . replace ( "%s" , "PNG" ) ; if ( J . length ) X += "\n\n" + e . notification . noteTheseIssues + "\n \u2022 " + J . join ( "\n \u2022 " ) ;
a . pref ( "export_notice_done" , "all" ) ; ba . alert ( X ) } } } ) } ) ; f . bind ( "zoomed" , Oa ) ; f . bind ( "contextset" , function ( q , B ) { var J = "" ; if ( B ) { var Q = "" ; J = '<a href="#" data-root="y">' + f . getCurrentDrawing ( ) . getCurrentLayerName ( ) + "</a>" ; a ( B ) . parentsUntil ( "#svgcontent > g" ) . andSelf ( ) . each ( function ( ) { if ( this . id ) { Q += " > " + this . id ; J += this !== B ? ' > <a href="#">' + this . id + "</a>" : " > " + this . id } } ) ; Sa = Q } else Sa = null ; a ( "#cur_context_panel" ) . toggle ( ! ! B ) . html ( J ) ; H ( ) } ) ; f . bind ( "extension_added" , function ( q , B ) { function J ( ) { if ( lb ) { clearTimeout ( lb ) ;
lb = null } X || ( lb = setTimeout ( function ( ) { X = true ; ga ( b . iconsize ) } , 50 ) ) } var Q = false , X = false , ja = true , va = function ( ) { if ( B . callback && ! Q && ja ) { Q = true ; B . callback ( ) } } , ya = [ ] ; B . context _tools && a . each ( B . context _tools , function ( Ta , ia ) { var yb = ia . container _id ? ' id="' + ia . container _id + '"' : "" , bb = a ( "#" + ia . panel ) ; bb . length || ( bb = a ( "<div>" , { id : ia . panel } ) . appendTo ( "#tools_top" ) ) ; switch ( ia . type ) { case "tool_button" : var Fa = '<div class="tool_button">' + ia . id + "</div>" , Va = a ( Fa ) . appendTo ( bb ) ; ia . events && a . each ( ia . events , function ( cb , jb ) { a ( Va ) . bind ( cb ,
jb ) } ) ; break ; case "select" : Fa = "<label" + yb + '><select id="' + ia . id + '">' ; a . each ( ia . options , function ( cb , jb ) { Fa += '<option value="' + cb + '"' + ( cb == ia . defval ? " selected" : "" ) + ">" + jb + "</option>" } ) ; Fa += "</select></label>" ; var Ha = a ( Fa ) . appendTo ( bb ) . find ( "select" ) ; a . each ( ia . events , function ( cb , jb ) { a ( Ha ) . bind ( cb , jb ) } ) ; break ; case "button-select" : Fa = '<div id="' + ia . id + '" class="dropdown toolset" title="' + ia . title + '"><div id="cur_' + ia . id + '" class="icon_label"></div><button></button></div>' ; yb = a ( '<ul id="' + ia . id + '_opts"></ul>' ) . appendTo ( "#option_lists" ) ;
ia . colnum && yb . addClass ( "optcols" + ia . colnum ) ; a ( Fa ) . appendTo ( bb ) . children ( ) ; ya . push ( { elem : "#" + ia . id , list : "#" + ia . id + "_opts" , title : ia . title , callback : ia . events . change , cur : "#cur_" + ia . id } ) ; break ; case "input" : Fa = "<label" + yb + '><span id="' + ia . id + '_label">' + ia . label + ':</span><input id="' + ia . id + '" title="' + ia . title + '" size="' + ( ia . size || "4" ) + '" value="' + ( ia . defval || "" ) + '" type="text"/></label>' ; var ib = a ( Fa ) . appendTo ( bb ) . find ( "input" ) ; ia . spindata && ib . SpinButton ( ia . spindata ) ; ia . events && a . each ( ia . events , function ( cb ,
jb ) { ib . bind ( cb , jb ) } ) } } ) ; if ( B . buttons ) { var Da = { } , Ca = { } , Ba = B . svgicons , vb = { } ; a . each ( B . buttons , function ( Ta , ia ) { for ( var yb , bb = ia . id , Fa = Ta ; a ( "#" + bb ) . length ; ) bb = ia . id + "_" + ++ Fa ; if ( Ba ) { Da [ bb ] = ia . icon ; Fa = ia . svgicon ? ia . svgicon : ia . id ; if ( ia . type == "app_menu" ) Ca [ "#" + bb + " > div" ] = Fa ; else Ca [ "#" + bb ] = Fa } else yb = ia . type == "menu" ? "" : a ( '<img src="' + ia . icon + '">' ) ; var Va , Ha ; switch ( ia . type ) { case "mode_flyout" : case "mode" : Va = "tool_button" ; if ( ia . cls ) Va += " " + ia . cls ; Ha = "#tools_left" ; break ; case "context" : Va = "tool_button" ; Ha =
"#" + ia . panel ; a ( Ha ) . length || a ( "<div>" , { id : ia . panel } ) . appendTo ( "#tools_top" ) ; break ; case "menu" : Va = "menu_item tool_button" ; Ha = "#" + ( ia . after || ia . panel ) ; break ; case "app_menu" : Va = "" ; Ha = ia . parent || "#main_menu ul" ; a ( Ha ) . length || a ( "<div>" , { id : ia . panel } ) . appendTo ( "#tools_top" ) } var ib = a ( ia . list || ia . type == "app_menu" ? "<li/>" : "<div/>" ) . attr ( "id" , bb ) . attr ( "title" , ia . title ) . addClass ( Va ) ; if ( ! ia . includeWith && ! ia . list ) { if ( "position" in ia ) a ( Ha ) . children ( ) . eq ( ia . position ) . before ( ib ) ; else ia . type != "menu" || ! ia . after ? ib . appendTo ( Ha ) :
a ( Ha ) . after ( ib ) ; if ( ia . type == "mode_flyout" ) { Fa = a ( ib ) ; Va = Fa . parent ( ) ; if ( ! Fa . parent ( ) . hasClass ( "tools_flyout" ) ) { var cb = Fa [ 0 ] . id . replace ( "tool_" , "tools_" ) , jb = Fa . clone ( ) . attr ( "id" , cb + "_show" ) . append ( a ( "<div>" , { "class" : "flyout_arrow_horiz" } ) ) ; Fa . before ( jb ) ; Va = Ga ( cb , Fa ) ; Va . data ( "isLibrary" , true ) ; jb . data ( "isLibrary" , true ) } Ca [ "#" + cb + "_show" ] = ia . id ; bb = vb [ "#" + Va [ 0 ] . id ] = [ { sel : "#" + bb , fn : ia . events . click , icon : ia . id , isDefault : true } , Zb ] } else if ( ia . type == "app_menu" || ia . type == "menu" ) ib . append ( ia . title ) } else if ( ia . list ) { ib . addClass ( "push_button" ) ;
a ( "#" + ia . list + "_opts" ) . append ( ib ) ; if ( ia . isDefault ) { a ( "#cur_" + ia . list ) . append ( ib . children ( ) . clone ( ) ) ; Fa = ia . svgicon ? ia . svgicon : ia . id ; Ca [ "#cur_" + ia . list ] = Fa } } else if ( ia . includeWith ) { Ha = ia . includeWith ; Fa = a ( Ha . button ) ; Va = Fa . parent ( ) ; if ( ! Fa . parent ( ) . hasClass ( "tools_flyout" ) ) { cb = Fa [ 0 ] . id . replace ( "tool_" , "tools_" ) ; jb = Fa . clone ( ) . attr ( "id" , cb + "_show" ) . append ( a ( "<div>" , { "class" : "flyout_arrow_horiz" } ) ) ; Fa . before ( jb ) ; Va = Ga ( cb , Fa ) } var Zb = oc . getButtonData ( Ha . button ) ; if ( Ha . isDefault ) Ca [ "#" + cb + "_show" ] = ia . id ; bb = vb [ "#" +
Va [ 0 ] . id ] = [ { sel : "#" + bb , fn : ia . events . click , icon : ia . id , key : ia . key , isDefault : ia . includeWith ? ia . includeWith . isDefault : 0 } , Zb ] ; cb = "position" in Ha ? Ha . position : "last" ; Zb = Va . children ( ) . length ; if ( ! isNaN ( cb ) && cb >= 0 && cb < Zb ) Va . children ( ) . eq ( cb ) . before ( ib ) ; else { Va . append ( ib ) ; bb . reverse ( ) } } Ba || ib . append ( yb ) ; ia . list || a . each ( ia . events , function ( Nb , Wb ) { if ( Nb == "click" ) if ( ia . type == "mode" ) { ia . includeWith ? ib . bind ( Nb , Wb ) : ib . bind ( Nb , function ( ) { xa ( ib ) && Wb ( ) } ) ; if ( ia . key ) { a ( document ) . bind ( "keydown" , ia . key , Wb ) ; ia . title && ib . attr ( "title" ,
ia . title + " [" + ia . key + "]" ) } } else ib . bind ( Nb , Wb ) ; else ib . bind ( Nb , Wb ) } ) ; Qa ( vb ) } ) ; a . each ( ya , function ( ) { Bb ( this . elem , this . list , this . callback , { seticon : true } ) } ) ; if ( Ba ) ja = false ; a . svgIcons ( Ba , { w : 27 , h : 27 , id _match : false , no _img : ! O , fallback : Da , placement : Ca , callback : function ( ) { b . iconsize && b . iconsize != "m" && J ( ) ; ja = true ; va ( ) } } ) } va ( ) } ) ; f . textActions . setInputElem ( a ( "#text" ) [ 0 ] ) ; var Za = '<div class="palette_item" data-rgb="none"></div>' ; a . each ( [ "#000000" , "#3f3f3f" , "#7f7f7f" , "#bfbfbf" , "#ffffff" , "#ff0000" , "#ff7f00" , "#ffff00" ,
2012-07-14 00:14:24 +00:00
"#7fff00" , "#00ff00" , "#00ff7f" , "#00ffff" , "#007fff" , "#0000ff" , "#7f00ff" , "#ff00ff" , "#ff007f" , "#7f0000" , "#7f3f00" , "#7f7f00" , "#3f7f00" , "#007f00" , "#007f3f" , "#007f7f" , "#003f7f" , "#00007f" , "#3f007f" , "#7f007f" , "#7f003f" , "#ffaaaa" , "#ffd4aa" , "#ffffaa" , "#d4ffaa" , "#aaffaa" , "#aaffd4" , "#aaffff" , "#aad4ff" ] , function ( q , B ) { Za += '<div class="palette_item" style="background-color: ' + B + ';" data-rgb="' + B + '"></div>' } ) ; a ( "#palette" ) . append ( Za ) ; Za = "" ; a . each ( [ "#FFF" , "#888" , "#000" ] , function ( ) { Za += '<div class="color_block" style="background-color:' +
this + ';"></div>' } ) ; a ( "#bg_blocks" ) . append ( Za ) ; var Ma = a ( "#bg_blocks div" ) ; Ma . each ( function ( ) { a ( this ) . click ( function ( ) { Ma . removeClass ( "cur_background" ) ; a ( this ) . addClass ( "cur_background" ) } ) } ) ; if ( a . pref ( "bkgd_color" ) ) p ( a . pref ( "bkgd_color" ) , a . pref ( "bkgd_url" ) ) ; else a . pref ( "bkgd_url" ) && p ( o . bkgd _color , a . pref ( "bkgd_url" ) ) ; if ( a . pref ( "img_save" ) ) { b . img _save = a . pref ( "img_save" ) ; a ( "#image_save_opts input" ) . val ( [ b . img _save ] ) } var mb = function ( q ) { var B = q . value / 100 ; if ( B < 0.0010 ) q . value = 0.1 ; else { q = f . getZoom ( ) ; Oa ( window ,
2012-07-14 02:04:34 +00:00
{ width : 0 , height : 0 , x : ( qa [ 0 ] . scrollLeft + qa . width ( ) / 2 ) / q , y : ( qa [ 0 ] . scrollTop + qa . height ( ) / 2 ) / q , zoom : B } , true ) } } , Ab = function ( q , B ) { if ( B == null ) B = q . value ; a ( "#group_opacity" ) . val ( B ) ; if ( ! q || ! q . handle ) a ( "#opac_slider" ) . slider ( "option" , "value" , B ) ; f . setOpacity ( B / 100 ) } , eb = function ( q , B , J ) { if ( B == null ) B = q . value ; a ( "#blur" ) . val ( B ) ; var Q = false ; if ( ! q || ! q . handle ) { a ( "#blur_slider" ) . slider ( "option" , "value" , B ) ; Q = true } J ? f . setBlurNoUndo ( B ) : f . setBlur ( B , Q ) } , fb = function ( ) { window . opera && a ( "<p/>" ) . hide ( ) . appendTo ( "body" ) . remove ( ) } ;
a ( "#stroke_style" ) . change ( function ( ) { f . setStrokeAttr ( "stroke-dasharray" , a ( this ) . val ( ) ) ; fb ( ) } ) ; a ( "#stroke_linejoin" ) . change ( function ( ) { f . setStrokeAttr ( "stroke-linejoin" , a ( this ) . val ( ) ) ; fb ( ) } ) ; a ( "select" ) . change ( function ( ) { a ( this ) . blur ( ) } ) ; var Pb = false ; a ( "#selLayerNames" ) . change ( function ( ) { var q = this . options [ this . selectedIndex ] . value , B = e . notification . QmoveElemsToLayer . replace ( "%s" , q ) , J = function ( Q ) { if ( Q ) { Pb = true ; f . moveSelectedToLayer ( q ) ; f . clearSelection ( ) ; Eb ( ) } } ; if ( q ) Pb ? J ( true ) : a . confirm ( B , J ) } ) ; a ( "#font_family" ) . change ( function ( ) { f . setFontFamily ( this . value ) } ) ;
a ( "#seg_type" ) . change ( function ( ) { f . setSegType ( a ( this ) . val ( ) ) } ) ; a ( "#text" ) . keyup ( function ( ) { f . setTextContent ( this . value ) } ) ; a ( "#image_url" ) . change ( function ( ) { Ea ( this . value ) } ) ; a ( "#link_url" ) . change ( function ( ) { this . value . length ? f . setLinkURL ( this . value ) : f . removeHyperlink ( ) } ) ; a ( "#g_title" ) . change ( function ( ) { f . setGroupTitle ( this . value ) } ) ; a ( ".attr_changer" ) . change ( function ( ) { var q = this . getAttribute ( "data-attr" ) , B = this . value ; if ( svgedit . units . isValidUnit ( q , B , Z ) ) this . blur ( ) ; else { a . alert ( e . notification . invalidAttrValGiven ) ;
this . value = Z . getAttribute ( q ) ; return false } if ( q !== "id" ) if ( isNaN ( B ) ) B = f . convertToNum ( q , B ) ; else if ( d . baseUnit !== "px" ) { var J = svgedit . units . getTypeMap ( ) ; if ( Z [ q ] || f . getMode ( ) === "pathedit" || q === "x" || q === "y" ) B *= J [ d . baseUnit ] } if ( q === "id" ) { q = Z ; f . clearSelection ( ) ; q . id = B ; f . addToSelection ( [ q ] , true ) } else f . changeSelectedAttribute ( q , B ) ; this . blur ( ) } ) ; a ( "#palette" ) . mouseover ( function ( ) { var q = a ( '<input type="hidden">' ) ; a ( this ) . append ( q ) ; q . focus ( ) . remove ( ) } ) ; a ( ".palette_item" ) . mousedown ( function ( ) { var q = a ( "#tool_stroke" ) . hasClass ( "active" ) ,
B = q ? "stroke" : "fill" , J = a ( this ) . attr ( "data-rgb" ) , Q = null ; if ( J === "transparent" || J === "initial" || J === "#none" ) { J = "none" ; Q = new a . jGraduate . Paint } else Q = new a . jGraduate . Paint ( { alpha : 100 , solidColor : J . substr ( 1 ) } ) ; la [ B ] . setPaint ( Q ) ; if ( q ) { f . setColor ( "stroke" , J ) ; J != "none" && f . getStrokeOpacity ( ) != 1 && f . setPaintOpacity ( "stroke" , 1 ) } else { f . setColor ( "fill" , J ) ; J != "none" && f . getFillOpacity ( ) != 1 && f . setPaintOpacity ( "fill" , 1 ) } } ) . bind ( "contextmenu" , function ( q ) { q . preventDefault ( ) } ) ; a ( "#toggle_stroke_tools" ) . toggle ( function ( ) { a ( ".stroke_tool" ) . css ( "display" ,
"table-cell" ) ; a ( this ) . addClass ( "expanded" ) ; Ib ( ) } , function ( ) { a ( ".stroke_tool" ) . css ( "display" , "none" ) ; a ( this ) . removeClass ( "expanded" ) ; Ib ( ) } ) ; var xa = function ( q , B ) { if ( a ( q ) . hasClass ( "disabled" ) ) return false ; if ( a ( q ) . parent ( ) . hasClass ( "tools_flyout" ) ) return true ; var J = J || "normal" ; B || a ( ".tools_flyout" ) . fadeOut ( J ) ; a ( "#styleoverrides" ) . text ( "" ) ; a ( ".tool_button_current" ) . removeClass ( "tool_button_current" ) . addClass ( "tool_button" ) ; a ( q ) . addClass ( "tool_button_current" ) . removeClass ( "tool_button" ) ; return true } ; ( function ( ) { var q =
null , B = null , J = qa [ 0 ] , Q = false , X = false ; a ( "#svgcanvas" ) . bind ( "mousemove mouseup" , function ( ja ) { if ( Q !== false ) { J . scrollLeft -= ja . clientX - q ; J . scrollTop -= ja . clientY - B ; q = ja . clientX ; B = ja . clientY ; if ( ja . type === "mouseup" ) Q = false ; return false } } ) . mousedown ( function ( ja ) { if ( ja . button === 1 || X === true ) { Q = true ; q = ja . clientX ; B = ja . clientY ; return false } } ) ; a ( window ) . mouseup ( function ( ) { Q = false } ) ; a ( document ) . bind ( "keydown" , "space" , function ( ja ) { f . spaceKey = X = true ; ja . preventDefault ( ) } ) . bind ( "keyup" , "space" , function ( ja ) { ja . preventDefault ( ) ;
f . spaceKey = X = false } ) . bind ( "keydown" , "alt" , function ( ) { f . getMode ( ) === "zoom" && qa . addClass ( "out" ) } ) . bind ( "keyup" , "alt" , function ( ) { f . getMode ( ) === "zoom" && qa . removeClass ( "out" ) } ) } ) ( ) ; var wb = a ( ".menu" ) , rb = function ( q ) { q . target . style . background = "#fff" ; setTimeout ( function ( ) { q . target . style . background = "#ddd" } , 50 ) ; setTimeout ( function ( ) { q . target . style . background = "#fff" } , 150 ) ; setTimeout ( function ( ) { q . target . style . background = "#ddd" } , 200 ) ; setTimeout ( function ( ) { q . target . style . background = "" } , 200 ) ; setTimeout ( function ( ) { a ( "#menu_bar" ) . removeClass ( "active" ) } ,
220 ) ; return false } ; a ( ".menu_item" ) . live ( "click" , function ( q ) { rb ( q ) } ) ; a ( "svg, body" ) . on ( "mousedown" , function ( q ) { top != self && ! q . isTrigger && typeof top . exports . setEditorFocus == "function" && top . exports . setEditorFocus ( ) ; if ( ! a ( q . target ) . hasClass ( "menu_title" ) ) if ( ! a ( q . target ) . hasClass ( "disabled" ) && a ( q . target ) . hasClass ( "menu_item" ) ) rb ( q ) ; else { a ( "#tools_shapelib" ) . is ( ":visible" ) && ! a ( q . target ) . parents ( "#tools_shapelib_show, #tools_shapelib" ) . length && a ( "#tools_shapelib" ) . hide ( ) ; q . target . nodeName . toLowerCase ( ) !=
"input" && a ( "input" ) . blur ( ) } } ) ; var sb = [ 6 , 12 , 16 , 33 , 50 , 66 , 100 , 150 , 200 , 300 , 400 , 600 , 800 , 1200 ] ; a ( "#workarea" ) . on ( "mousewheel" , function ( q , B , J , Q ) { if ( q . altKey ) { q . preventDefault ( ) ; q = f . getZoom ( ) * 100 ; B = sb . length ; for ( gb = 0 ; gb < B ; gb ++ ) { J = Math . min ( B , gb + 1 ) ; if ( Q > 0 ) zoom = sb [ gb ] <= q ? sb [ J ] : zoom ; if ( Q < 0 ) zoom = sb [ gb ] < q ? sb [ gb ] : zoom } zoom && mb ( { value : zoom } ) } } ) ; a ( ".menu_title" ) . on ( "click" , function ( ) { a ( "#menu_bar" ) . toggleClass ( "active" ) } ) ; a ( ".menu_title" ) . on ( "mouseover" , function ( ) { wb . removeClass ( "open" ) ; a ( this ) . parent ( ) . addClass ( "open" ) } ) ;
c . addDropDown = function ( q , B , J ) { if ( a ( q ) . length != 0 ) { var Q = a ( q ) . find ( "button" ) , X = a ( q ) . find ( "ul" ) . attr ( "id" , a ( q ) [ 0 ] . id + "-list" ) ; J || a ( "#option_lists" ) . append ( X ) ; var ja = false ; J && a ( q ) . addClass ( "dropup" ) ; X . find ( "li" ) . bind ( "mouseup" , B ) ; a ( window ) . mouseup ( function ( ) { if ( ! ja ) { Q . removeClass ( "down" ) ; X . hide ( ) } ja = false } ) ; Q . bind ( "mousedown" , function ( ) { if ( Q . hasClass ( "down" ) ) { Q . removeClass ( "down" ) ; X . hide ( ) } else { Q . addClass ( "down" ) ; if ( ! J ) { var va = a ( q ) . offset ( ) ; X . css ( { top : va . top , left : va . left - 110 } ) } X . show ( ) ; ja = true } } ) . hover ( function ( ) { ja =
true } ) . mouseout ( function ( ) { ja = false } ) } } ; var Bb = function ( q , B , J , Q ) { var X = a ( q ) ; B = a ( B ) ; var ja = false , va = Q . dropUp ; va && a ( q ) . addClass ( "dropup" ) ; B . find ( "li" ) . bind ( "mouseup" , function ( ) { if ( Q . seticon ) { W ( "#cur_" + X [ 0 ] . id , a ( this ) . children ( ) ) ; a ( this ) . addClass ( "current" ) . siblings ( ) . removeClass ( "current" ) } J . apply ( this , arguments ) } ) ; a ( window ) . mouseup ( function ( ) { if ( ! ja ) { X . removeClass ( "down" ) ; B . hide ( ) ; B . css ( { top : 0 , left : 0 } ) } ja = false } ) ; B . height ( ) ; a ( q ) . bind ( "mousedown" , function ( ) { var ya = a ( q ) . offset ( ) ; if ( va ) { ya . top -= B . height ( ) ;
ya . left += 8 } else ya . top += a ( q ) . height ( ) ; a ( B ) . offset ( ya ) ; if ( X . hasClass ( "down" ) ) { X . removeClass ( "down" ) ; B . hide ( ) ; B . css ( { top : 0 , left : 0 } ) } else { X . addClass ( "down" ) ; B . show ( ) ; ja = true ; return false } } ) . hover ( function ( ) { ja = true } ) . mouseout ( function ( ) { ja = false } ) ; Q . multiclick && B . mousedown ( function ( ) { ja = true } ) } ; c . addDropDown ( "#font_family_dropdown" , function ( ) { a ( this ) . text ( ) ; a ( "#font_family" ) . val ( a ( this ) . text ( ) ) . change ( ) } ) ; c . addDropDown ( "#opacity_dropdown" , function ( ) { if ( ! a ( this ) . find ( "div" ) . length ) { var q = parseInt ( a ( this ) . text ( ) . split ( "%" ) [ 0 ] ) ;
2012-07-14 00:14:24 +00:00
Ab ( false , q ) } } , false ) ; a ( "#opac_slider" ) . slider ( { start : function ( ) { a ( "#opacity_dropdown li:not(.special)" ) . hide ( ) } , stop : function ( ) { a ( "#opacity_dropdown li" ) . show ( ) ; a ( window ) . mouseup ( ) } , slide : function ( q , B ) { Ab ( B ) } } ) ; c . addDropDown ( "#blur_dropdown" , a . noop ) ; var kb = false ; a ( "#blur_slider" ) . slider ( { max : 10 , step : 0.1 , stop : function ( q , B ) { kb = false ; eb ( B ) ; a ( "#blur_dropdown li" ) . show ( ) ; a ( window ) . mouseup ( ) } , start : function ( ) { kb = true } , slide : function ( q , B ) { eb ( B , null , kb ) } } ) ; c . addDropDown ( "#zoom_dropdown" , function ( ) { var q =
a ( this ) , B = q . attr ( "data-val" ) ; B ? Oa ( window , B ) : mb ( { value : parseInt ( q . text ( ) ) } ) } , true ) ; Bb ( "#stroke_linecap" , "#linecap_opts" , function ( ) { w ( this , true ) } , { dropUp : true } ) ; Bb ( "#stroke_linejoin" , "#linejoin_opts" , function ( ) { w ( this , true ) } , { dropUp : true } ) ; a ( "div" , "#position_opts" ) . each ( function ( ) { this . addEventListener ( "mouseup" , function ( ) { var q = this . id . replace ( "tool_pos" , "" ) . charAt ( 0 ) ; f . alignSelectedElements ( q , "page" ) } ) } ) ; ( function ( ) { var q , B = function ( ) { a ( q ) . blur ( ) } ; a ( "#svg_editor" ) . find ( "button, select, input:not(#text)" ) . focus ( function ( ) { q =
2012-07-14 02:04:34 +00:00
this ; U = "toolbars" ; qa . mousedown ( B ) } ) . blur ( function ( ) { U = "canvas" ; qa . unbind ( "mousedown" , B ) ; f . getMode ( ) == "textedit" && a ( "#text" ) . focus ( ) } ) } ) ( ) ; var Cb = function ( ) { if ( xa ( "#tool_select" ) ) { f . setMode ( "select" ) ; a ( "#styleoverrides" ) . text ( "#svgcanvas svg *{cursor:move;pointer-events:all}, #svgcanvas svg{cursor:default}" ) } } , Lb = function ( ) { xa ( "#tool_fhpath" ) && f . setMode ( "fhpath" ) } , Gb = function ( ) { xa ( "#tool_line" ) && f . setMode ( "line" ) } , Rb = function ( ) { xa ( "#tool_rect" ) && f . setMode ( "rect" ) } , na = function ( ) { xa ( "#tool_ellipse" ) &&
f . setMode ( "ellipse" ) } , aa = function ( ) { xa ( "#tool_image" ) && f . setMode ( "image" ) } , ta = function ( ) { xa ( "#tool_zoom" ) && f . setMode ( "zoom" ) } , M = function ( ) { if ( xa ( "#tool_zoom" ) ) { v ( ) ; ma ( ) } } , I = function ( ) { xa ( "#tool_text" ) && f . setMode ( "text" ) } , Y = function ( ) { xa ( "#tool_path" ) && f . setMode ( "path" ) } , Pa = function ( ) { if ( Z != null || Aa ) f . deleteSelectedElements ( ) } , Wa = function ( ) { if ( Z != null || Aa ) f . cutSelectedElements ( ) } , db = function ( ) { if ( Z != null || Aa ) f . copySelectedElements ( ) } , tb = function ( ) { var q = f . getZoom ( ) , B = ( qa [ 0 ] . scrollLeft + qa . width ( ) / 2 ) /
q - f . contentW ; q = ( qa [ 0 ] . scrollTop + qa . height ( ) / 2 ) / q - f . contentH ; f . pasteElements ( "point" , B , q ) } , ub = function ( ) { Z != null && f . moveToTopSelectedElement ( ) } , zb = function ( ) { Z != null && f . moveToBottomSelectedElement ( ) } , pb = function ( ) { Z != null && f . moveUpDownSelected ( "Up" ) } , Mb = function ( ) { Z != null && f . moveUpDownSelected ( "Down" ) } , ab = function ( ) { Z != null && f . convertToPath ( ) } , Jb = function ( ) { Z != null && sa . reorient ( ) } , Qb = function ( ) { if ( Z != null || Aa ) a . prompt ( e . notification . enterNewLinkURL , "http://" , function ( q ) { q && f . makeHyperlink ( q ) } ) } , Kb =
function ( q , B ) { if ( Z != null || Aa ) { if ( d . gridSnapping ) { var J = f . getZoom ( ) * d . snappingStep ; q *= J ; B *= J } f . moveSelectedElements ( q , B ) } } , ac = function ( ) { var q = ! a ( "#tool_node_link" ) . hasClass ( "push_button_pressed" ) ; q ? a ( "#tool_node_link" ) . addClass ( "push_button_pressed" ) . removeClass ( "tool_button" ) . find ( "input" ) . attr ( "checked" , true ) : a ( "#tool_node_link" ) . removeClass ( "push_button_pressed" ) . addClass ( "tool_button" ) . find ( "input" ) . attr ( "checked" , false ) ; sa . linkControlPoints ( q ) } , qb = function ( ) { sa . getNodePoint ( ) && sa . clonePathNode ( ) } ,
Ua = function ( ) { sa . getNodePoint ( ) && sa . deletePathNode ( ) } , jc = function ( ) { var q = a ( "#tool_add_subpath" ) , B = ! q . hasClass ( "push_button_pressed" ) ; B ? q . addClass ( "push_button_pressed" ) . removeClass ( "tool_button" ) : q . removeClass ( "push_button_pressed" ) . addClass ( "tool_button" ) ; sa . addSubPath ( B ) } , hc = function ( ) { sa . opencloseSubPath ( ) } , $b = function ( ) { f . cycleElement ( 1 ) } , cc = function ( ) { f . cycleElement ( 0 ) } , Yb = function ( q , B ) { if ( ! ( Z == null || Aa ) ) { q || ( B *= - 1 ) ; var J = a ( "#angle" ) . val ( ) * 1 + B ; f . setRotationAngle ( J ) ; Ja ( ) } } , Vb = function ( ) { var q =
2012-07-14 00:14:24 +00:00
d . dimensions ; a . confirm ( e . notification . QwantToClear , function ( B ) { if ( B ) { ma ( ) ; f . clear ( ) ; f . setResolution ( q [ 0 ] , q [ 1 ] ) ; Sb ( true ) ; v ( ) ; Eb ( ) ; Ja ( ) ; la . fill . prep ( ) ; la . stroke . prep ( ) ; f . runExtensions ( "onNewDocument" ) } } ) } , bc = function ( ) { f . setBold ( ! f . getBold ( ) ) ; Ja ( ) ; return false } , mc = function ( ) { f . setItalic ( ! f . getItalic ( ) ) ; Ja ( ) ; return false } , Ub = function ( ) { if ( ! l . pngsave ) { var q = e . notification . loadingImage ; ba = window . open ( "data:text/html;charset=utf-8,<title>" + q + "</title><h1>" + q + "</h1>" ) } window . canvg ? f . rasterExport ( ) : a . getScript ( "canvg/rgbcolor.js" ,
2012-07-14 02:04:34 +00:00
function ( ) { a . getScript ( "canvg/canvg.js" , function ( ) { f . rasterExport ( ) } ) } ) } , xb = function ( ) { f . open ( ) } , kc = function ( ) { } , dc = function ( q ) { var B = q . prev ( ) ; B . css ( "background" , "#09f" ) ; setTimeout ( function ( ) { B . css ( "background" , "" ) } , 200 ) } , Tb = function ( ) { if ( ha . getUndoStackSize ( ) > 0 ) { window . event . type === "keydown" && dc ( a ( "#edit_menu" ) ) ; ha . undo ( ) ; Eb ( ) } } , ob = function ( ) { if ( ha . getRedoStackSize ( ) > 0 ) { window . event . type === "keydown" && dc ( a ( "#edit_menu" ) ) ; ha . redo ( ) ; Eb ( ) } } , Xb = function ( ) { if ( Aa ) f . groupSelectedElements ( ) ; else Z && f . ungroupSelectedElement ( ) } ,
g = function ( ) { window . event . type === "keydown" && dc ( a ( "#edit_menu" ) ) ; f . cloneSelectedElements ( 20 , 20 ) } , h = function ( ) { var q = this . id . replace ( "tool_align" , "" ) . charAt ( 0 ) ; f . alignSelectedElements ( q , a ( "#align_relative_to" ) . val ( ) ) } , k = function ( ) { var q = document . querySelector ( "#tool_stroke rect" ) , B = document . querySelector ( "#tool_fill rect" ) , J = B . getAttribute ( "fill" ) , Q = q . getAttribute ( "fill" ) ; q = parseFloat ( q . getAttribute ( "stroke-opacity" ) ) ; if ( isNaN ( q ) ) q = 100 ; B = parseFloat ( B . getAttribute ( "fill-opacity" ) ) ; if ( isNaN ( B ) ) B = 100 ;
Q = $a ( Q , q , "stroke" ) ; J = $a ( J , B , "fill" ) ; la . fill . setPaint ( Q , true ) ; la . stroke . setPaint ( J , true ) } , v = function ( q ) { var B = f . getResolution ( ) ; q = q ? B . zoom * q : 1 ; a ( "#zoom" ) . val ( q * 100 ) ; f . setZoom ( q ) ; s ( ) ; Sb ( true ) } , t = function ( ) { ! a ( "#tool_wireframe" ) . hasClass ( "push_button_pressed" ) ? a ( "#tool_wireframe" ) . addClass ( "push_button_pressed" ) : a ( "#tool_wireframe" ) . removeClass ( "push_button_pressed" ) ; qa . toggleClass ( "wireframe" ) ; if ( ! rc ) { var q = a ( "#wireframe_rules" ) ; q . length ? q . empty ( ) : a ( '<style id="wireframe_rules"></style>' ) . appendTo ( "head" ) ;
2012-07-14 00:14:24 +00:00
s ( ) } } , E = function ( ) { window . self != window . top && top . exports . setEditorFocus ( false ) } , z = function ( ) { if ( a ( "#tool_rulers" ) . hasClass ( "push_button_pressed" ) ) { a ( "#tool_rulers" ) . removeClass ( "push_button_pressed" ) ; a ( "#show_rulers" ) . attr ( "checked" , false ) ; d . showRulers = false } else { a ( "#tool_rulers" ) . addClass ( "push_button_pressed" ) ; a ( "#show_rulers" ) . attr ( "checked" , true ) ; d . showRulers = true } a ( "#rulers" ) . toggle ( ! ! d . showRulers ) } , s = function ( ) { if ( ! rc ) { var q = "#workarea.wireframe #svgcontent * { stroke-width: " + 1 / f . getZoom ( ) +
2012-07-14 02:04:34 +00:00
"px; }" ; a ( "#wireframe_rules" ) . text ( qa . hasClass ( "wireframe" ) ? q : "" ) } } , A = function ( q , B ) { if ( ! Ka ) { Ka = true ; a ( "#save_output_btns" ) . toggle ( ! ! B ) ; a ( "#tool_source_back" ) . toggle ( ! B ) ; var J = ra = f . getSvgString ( ) ; a ( "#svg_source_textarea" ) . val ( J ) ; a ( "#svg_source_editor" ) . fadeIn ( ) ; D ( ) ; a ( "#svg_source_textarea" ) . focus ( ) } } , F = function ( ) { if ( ! Ra ) { Ra = true ; a ( "#image_save_opts input" ) . val ( [ b . img _save ] ) ; var q = f . getResolution ( ) ; if ( d . baseUnit !== "px" ) { q . w = svgedit . units . convertUnit ( q . w ) + d . baseUnit ; q . h = svgedit . units . convertUnit ( q . h ) +
d . baseUnit } a ( ".canvas_width" ) . val ( q . w ) ; a ( ".canvas_height" ) . val ( q . h ) ; a ( "#canvas_title" ) . val ( f . getDocumentTitle ( ) ) ; a ( "#svg_docprops" ) . show ( ) } } , C = function ( ) { if ( ! Na ) { Na = true ; var q = a ( "#bg_blocks div" ) , B = a . pref ( "bkgd_color" ) , J = a . pref ( "bkgd_url" ) ; q . each ( function ( ) { var Q = a ( this ) , X = Q . css ( "background-color" ) == B ; Q . toggleClass ( "cur_background" , X ) ; X && a ( "#canvas_bg_url" ) . removeClass ( "cur_background" ) } ) ; B || q . eq ( 0 ) . addClass ( "cur_background" ) ; J && a ( "#canvas_bg_url" ) . val ( J ) ; a ( "grid_snapping_step" ) . attr ( "value" , d . snappingStep ) ;
2012-07-14 00:14:24 +00:00
d . gridSnapping == true ? a ( "#grid_snapping_on" ) . attr ( "checked" , "checked" ) : a ( "#grid_snapping_on" ) . removeAttr ( "checked" ) ; a ( "#svg_prefs" ) . show ( ) } } , D = function ( ) { var q = a ( "#svg_source_container" ) . height ( ) - 50 ; a ( "#svg_source_textarea" ) . css ( "height" , q ) } , G = function ( ) { if ( Ka ) { var q = function ( ) { f . clearSelection ( ) ; oa ( ) ; v ( ) ; Eb ( ) ; H ( ) ; la . fill . prep ( ) ; la . stroke . prep ( ) } ; f . setSvgString ( a ( "#svg_source_textarea" ) . val ( ) ) ? q ( ) : a . confirm ( e . notification . QerrorsRevertToSource , function ( B ) { if ( ! B ) return false ; q ( ) } ) ; ma ( ) } } , H = function ( q ) { q =
2012-07-14 02:04:34 +00:00
q || f . getDocumentTitle ( ) ; q = Xa + ( q ? ": " + q : "" ) ; a ( "title:first" ) . text ( q ) } , P = function ( ) { var q = a ( "#canvas_width" ) , B = q . val ( ) , J = a ( "#canvas_height" ) , Q = J . val ( ) ; if ( B != "fit" && ! svgedit . units . isValidUnit ( "width" , B ) ) { a . alert ( e . notification . invalidAttrValGiven ) ; q . parent ( ) . addClass ( "error" ) ; return false } q . parent ( ) . removeClass ( "error" ) ; if ( Q != "fit" && ! svgedit . units . isValidUnit ( "height" , Q ) ) { a . alert ( e . notification . invalidAttrValGiven ) ; J . parent ( ) . addClass ( "error" ) ; return false } J . parent ( ) . removeClass ( "error" ) ; if ( ! f . setResolution ( B ,
Q ) ) { a . alert ( e . notification . noContentToFitTo ) ; return false } b . img _save = a ( "#image_save_opts :checked" ) . val ( ) ; a . pref ( "img_save" , b . img _save ) ; Sb ( ) ; za ( ) } , R = function ( ) { var q = a ( "#bg_blocks div.cur_background" ) . css ( "background-color" ) || "#FFF" ; p ( q , a ( "#canvas_bg_url" ) . val ( ) ) ; q = a ( "#lang_select" ) . val ( ) ; q != b . lang && c . putLocale ( q ) ; ga ( a ( "#iconsize" ) . val ( ) ) ; d . gridSnapping = a ( "#grid_snapping_on" ) [ 0 ] . checked ; d . snappingStep = a ( "#grid_snapping_step" ) . val ( ) ; d . showRulers = a ( "#show_rulers" ) [ 0 ] . checked ; a ( "#rulers" ) . toggle ( d . showRulers ) ;
d . showRulers && da ( ) ; d . baseUnit = a ( "#base_unit" ) . val ( ) ; f . setConfig ( d ) ; Sb ( ) ; hb ( ) } , W = c . setIcon = function ( q , B ) { var J = typeof B === "string" ? a . getSvgIcon ( B , true ) : B . clone ( ) ; J ? a ( q ) . find ( "img" ) . replaceWith ( J ) : console . log ( "NOTE: Icon image missing: " + B ) } , ua ; ua = function ( ) { var q = /^(Moz|Webkit|Khtml|O|ms|Icab)(?=[A-Z])/ , B = document . getElementsByTagName ( "script" ) [ 0 ] , J ; for ( J in B . style ) if ( q . test ( J ) ) return J . match ( q ) [ 0 ] ; if ( "WebkitOpacity" in B . style ) return "Webkit" ; if ( "KhtmlOpacity" in B . style ) return "Khtml" ; return "" } ( ) ; var wa =
function ( q , B ) { ua . toLowerCase ( ) ; var J = [ "top" , "left" , "bottom" , "right" ] ; q . each ( function ( ) { for ( var Q = a ( this ) , X = Q . outerWidth ( ) * ( B - 1 ) , ja = Q . outerHeight ( ) * ( B - 1 ) , va = 0 ; va < 4 ; va ++ ) { var ya = J [ va ] , Da = Q . data ( "orig_margin-" + ya ) ; if ( Da == null ) { Da = parseInt ( Q . css ( "margin-" + ya ) ) ; Q . data ( "orig_margin-" + ya , Da ) } Da = Da * B ; if ( ya === "right" ) Da += X ; else if ( ya === "bottom" ) Da += ja ; Q . css ( "margin-" + ya , Da ) } } ) } , ga = c . setIconSize = function ( q , B ) { if ( ! ( q == b . size && ! B ) ) { var J = a ( "#tools_top .toolset, #editor_panel > *, #history_panel > *,\t\t\t\t#main_button, #tools_left > *, #path_node_panel > *, #multiselected_panel > *,\t\t\t\t#g_panel > *, #tool_font_size > *, .tools_flyout" ) ,
Q = 1 ; Q = typeof q == "number" ? q : { s : 0.75 , m : 1 , l : 1.25 , xl : 1.5 } [ q ] ; c . tool _scale = S = Q ; Fb ( ) ; var X = J . parents ( ":hidden" ) ; X . css ( "visibility" , "hidden" ) . show ( ) ; wa ( J , Q ) ; X . css ( "visibility" , "visible" ) . hide ( ) ; a . pref ( "iconsize" , q ) ; a ( "#iconsize" ) . val ( q ) ; X = { "#tools_top" : { left : 50 , height : 72 } , "#tools_left" : { width : 31 , top : 74 } , "div#workarea" : { left : 38 , top : 74 } } ; J = a ( "#tool_size_rules" ) ; if ( J . length ) J . empty ( ) ; else J = a ( '<style id="tool_size_rules"></style>' ) . appendTo ( "head" ) ; if ( q != "m" ) { var ja = "" ; a . each ( X , function ( va , ya ) { va = "#svg_editor " +
va . replace ( /,/g , ", #svg_editor" ) ; ja += va + "{" ; a . each ( ya , function ( Da , Ca ) { if ( typeof Ca === "number" ) var Ba = Ca * Q + "px" ; else if ( Ca [ q ] || Ca . all ) Ba = Ca [ q ] || Ca . all ; ja += Da + ":" + Ba + ";" } ) ; ja += "}" } ) ; X = "-" + ua . toLowerCase ( ) + "-" ; ja += "#tools_top .toolset, #editor_panel > *, #history_panel > *,\t\t\t\t#main_button, #tools_left > *, #path_node_panel > *, #multiselected_panel > *,\t\t\t\t#g_panel > *, #tool_font_size > *, .tools_flyout{" + X + "transform: scale(" + Q + ");} #svg_editor div.toolset .toolset {" + X + "transform: scale(1); margin: 1px !important;} #svg_editor .ui-slider {" +
X + "transform: scale(" + 1 / Q + ");}" ; J . text ( ja ) } Fb ( ) } } , ka = function ( ) { a ( "#dialog_box" ) . hide ( ) ; if ( ! Ka && ! Ra && ! Na ) Sa && f . leaveContext ( ) ; else { if ( Ka ) ra !== a ( "#svg_source_textarea" ) . val ( ) ? a . confirm ( e . notification . QignoreSourceChanges , function ( q ) { q && oa ( ) } ) : oa ( ) ; else if ( Ra ) za ( ) ; else Na && hb ( ) ; Ib ( ) } } , oa = function ( ) { a ( "#svg_source_editor" ) . hide ( ) ; Ka = false ; a ( "#svg_source_textarea" ) . blur ( ) } , za = function ( ) { a ( "#svg_docprops" ) . hide ( ) ; a ( "#canvas_width,#canvas_height" ) . removeAttr ( "disabled" ) ; a ( "#resolution" ) [ 0 ] . selectedIndex =
2012-07-14 00:14:24 +00:00
0 ; a ( "#image_save_opts input" ) . val ( [ b . img _save ] ) ; Ra = false } , hb = function ( ) { a ( "#svg_prefs" ) . hide ( ) ; Na = false } , Hb = { width : a ( window ) . width ( ) , height : a ( window ) . height ( ) } , Ib = a . noop , Db ; svgedit . browser . isIE ( ) && function ( ) { Ib = function ( ) { if ( qa [ 0 ] . scrollLeft === 0 && qa [ 0 ] . scrollTop === 0 ) { qa [ 0 ] . scrollLeft = Db . left ; qa [ 0 ] . scrollTop = Db . top } } ; Db = { left : qa [ 0 ] . scrollLeft , top : qa [ 0 ] . scrollTop } ; a ( window ) . resize ( Ib ) ; svgEditor . ready ( function ( ) { setTimeout ( function ( ) { Ib ( ) } , 500 ) } ) ; qa . scroll ( function ( ) { Db = { left : qa [ 0 ] . scrollLeft , top : qa [ 0 ] . scrollTop } } ) } ( ) ;
2012-07-14 02:04:34 +00:00
a ( window ) . resize ( function ( ) { Ka && D ( ) ; a . each ( Hb , function ( q , B ) { var J = a ( window ) [ q ] ( ) ; qa [ 0 ] [ "scroll" + ( q === "width" ? "Left" : "Top" ) ] -= ( J - B ) / 2 ; Hb [ q ] = J } ) } ) ; ( function ( ) { qa . scroll ( function ( ) { if ( a ( "#ruler_x" ) . length != 0 ) a ( "#ruler_x" ) [ 0 ] . scrollLeft = qa [ 0 ] . scrollLeft ; if ( a ( "#ruler_y" ) . length != 0 ) a ( "#ruler_y" ) [ 0 ] . scrollTop = qa [ 0 ] . scrollTop } ) } ) ( ) ; a ( "#url_notice" ) . click ( function ( ) { a . alert ( this . title ) } ) ; a ( "#change_image_url" ) . click ( L ) ; ( function ( ) { var q = [ "clear" , "open" , "save" , "source" , "delete" , "delete_multi" , "paste" , "clone" ,
"clone_multi" , "move_top" , "move_bottom" ] , B = "" ; a . each ( q , function ( J , Q ) { B += "#tool_" + Q + ( J == q . length - 1 ? "," : "" ) } ) ; a ( B ) . mousedown ( function ( ) { a ( this ) . addClass ( "tool_button_current" ) } ) . bind ( "mousedown mouseout" , function ( ) { a ( this ) . removeClass ( "tool_button_current" ) } ) ; a ( "#tool_undo, #tool_redo" ) . mousedown ( function ( ) { a ( this ) . hasClass ( "disabled" ) || a ( this ) . addClass ( "tool_button_current" ) } ) . bind ( "mousedown mouseout" , function ( ) { a ( this ) . removeClass ( "tool_button_current" ) } ) } ) ( ) ; if ( V && ! window . opera ) { V = [ "tool_clear" ,
"tool_save" , "tool_source" , "tool_undo" , "tool_redo" , "tool_clone" ] ; for ( var gb = V . length ; gb -- ; ) { var fc = document . getElementById ( V [ gb ] ) ; if ( fc != null ) { var gc = fc . title , sc = gc . indexOf ( "Ctrl+" ) ; fc . title = [ gc . substr ( 0 , sc ) , "Cmd+" , gc . substr ( sc + 5 ) ] . join ( "" ) } } } var pc = function ( q ) { var B = q [ 0 ] . id == "stroke_color" ? "stroke" : "fill" , J = q [ 0 ] . id == "canvas_color" ; if ( J ) B = "canvas" ; var Q = la [ B ] . paint ; q = B == "stroke" ? "Pick a Stroke Paint and Opacity" : "Pick a Fill Paint and Opacity" ; J = J ? { right : 200 , top : 50 } : { left : 45 , bottom : 50 } ; a ( "#color_picker" ) . draggable ( { cancel : ".jGraduate_tabs, .jGraduate_colPick, .jGraduate_gradPick, .jPicker" ,
containment : "window" } ) . css ( J ) . jGraduate ( { paint : Q , window : { pickerTitle : q } , images : { clientPath : d . jGraduatePath } , newstop : "inverse" } , function ( X ) { Q = new a . jGraduate . Paint ( X ) ; la [ B ] . setPaint ( Q ) ; f . setPaint ( B , Q ) ; a ( "#color_picker" ) . hide ( ) } , function ( ) { a ( "#color_picker" ) . hide ( ) } ) } ; V = function ( q , B ) { var J = document . getElementById ( "canvas_background" ) , Q = { color : "#fff" , opacity : 1 } ; if ( B == "stroke" ) Q = d . initStroke ; if ( B == "fill" ) Q = d . initFill ; if ( B == "canvas" && J ) { Q = J . getAttribute ( "fill" ) . match ( /^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/ ) ;
Q = { color : ( "0" + parseInt ( Q [ 1 ] , 10 ) . toString ( 16 ) ) . slice ( - 2 ) + ( "0" + parseInt ( Q [ 2 ] , 10 ) . toString ( 16 ) ) . slice ( - 2 ) + ( "0" + parseInt ( Q [ 3 ] , 10 ) . toString ( 16 ) ) . slice ( - 2 ) , opacity : 1 } } J = ( new DOMParser ) . parseFromString ( '<svg xmlns="http://www.w3.org/2000/svg"><rect width="100%" height="100%"\t\t\t\t\tfill="#' + Q . color + '" opacity="' + Q . opacity + '"/>\t\t\t\t\t<defs><linearGradient id="gradbox_"/></defs></svg>' , "text/xml" ) . documentElement ; J = a ( q ) [ 0 ] . appendChild ( document . importNode ( J , true ) ) ; J . setAttribute ( "width" , 24.5 ) ; this . rect =
J . firstChild ; this . defs = J . getElementsByTagName ( "defs" ) [ 0 ] ; this . grad = this . defs . firstChild ; this . paint = new a . jGraduate . Paint ( { solidColor : Q . color } ) ; this . type = B ; this . setPaint = function ( X , ja ) { this . paint = X ; var va = "none" , ya = X . type , Da = X . alpha / 100 ; switch ( ya ) { case "solidColor" : va = X [ ya ] == "none" || X [ ya ] == "one" ? "none" : "#" + X [ ya ] ; break ; case "linearGradient" : case "radialGradient" : this . defs . removeChild ( this . grad ) ; this . grad = this . defs . appendChild ( X [ ya ] ) ; va = "url(#" + ( this . grad . id = "gradbox_" + this . type ) + ")" } this . rect . setAttribute ( "fill" ,
va ) ; this . rect . setAttribute ( "opacity" , Da ) ; if ( ja ) { f . setColor ( this . type , va , true ) ; f . setPaintOpacity ( this . type , Da , true ) } if ( this . type == "canvas" ) { ( ya = document . getElementById ( "canvas_background" ) ) ? ya . setAttribute ( "fill" , va ) : La ( va ) ; console . log ( ya . getAttribute ( "fill" ) ) } } ; this . update = function ( X ) { if ( Z ) { var ja = this . type ; switch ( Z . tagName ) { case "use" : case "image" : case "foreignObject" : return ; case "g" : case "a" : for ( var va = null , ya = Z . getElementsByTagName ( "*" ) , Da = 0 , Ca = ya . length ; Da < Ca ; Da ++ ) { var Ba = ya [ Da ] . getAttribute ( ja ) ;
if ( Da === 0 ) va = Ba ; else if ( va !== Ba ) { va = null ; break } } if ( va === null ) { ya = null ; return } ya = va ; va = 1 ; break ; default : va = parseFloat ( Z . getAttribute ( ja + "-opacity" ) ) ; if ( isNaN ( va ) ) va = 1 ; ya = ja === "fill" ? "black" : "none" ; ya = Z . getAttribute ( ja ) || ya } if ( X ) { f . setColor ( ja , ya , true ) ; f . setPaintOpacity ( ja , va , true ) } va *= 100 ; this . setPaint ( $a ( ya , va , ja ) ) } } ; this . prep = function ( ) { switch ( this . paint . type ) { case "linearGradient" : case "radialGradient" : var X = new a . jGraduate . Paint ( { copy : this . paint } ) ; f . setPaint ( B , X ) } } } ; la . fill = new V ( "#fill_color" ,
"fill" ) ; la . stroke = new V ( "#stroke_color" , "stroke" ) ; la . canvas = new V ( "#canvas_color" , "canvas" ) ; a ( "#stroke_width" ) . val ( d . initStroke . width ) ; a ( "#group_opacity" ) . val ( d . initOpacity * 100 ) ; V = la . fill . rect . cloneNode ( false ) ; V . setAttribute ( "style" , "vector-effect:non-scaling-stroke" ) ; var rc = V . style . vectorEffect === "non-scaling-stroke" ; V . removeAttribute ( "style" ) ; V = la . fill . rect . ownerDocument . createElementNS ( "http://www.w3.org/2000/svg" , "feGaussianBlur" ) ; typeof V . stdDeviationX === "undefined" && a ( "#tool_blur" ) . hide ( ) ; a ( V ) . remove ( ) ;
setTimeout ( function ( ) { f . embedImage ( "images/placeholder.svg" , function ( q ) { if ( ! q ) { a ( "#image_save_opts [value=embed]" ) . attr ( "disabled" , "disabled" ) ; a ( "#image_save_opts input" ) . val ( [ "ref" ] ) ; b . img _save = "ref" ; a ( "#image_opt_embed" ) . css ( "color" , "#666" ) . attr ( "title" , e . notification . featNotSupported ) } } ) } , 1E3 ) ; a ( "#tool_fill" ) . click ( function ( ) { if ( a ( "#tool_fill" ) . hasClass ( "active" ) ) pc ( a ( "#fill_color" ) ) ; else { a ( "#tool_fill" ) . addClass ( "active" ) ; a ( "#tool_stroke" ) . removeClass ( "active" ) } } ) ; a ( "#tool_canvas" ) . click ( function ( ) { pc ( a ( "#canvas_color" ) ) } ) ;
a ( "#tool_stroke" ) . click ( function ( ) { if ( a ( "#tool_stroke" ) . hasClass ( "active" ) ) pc ( a ( "#stroke_color" ) ) ; else { a ( "#tool_stroke" ) . addClass ( "active" ) ; a ( "#tool_fill" ) . removeClass ( "active" ) } } ) ; a ( "#group_opacityLabel" ) . click ( function ( ) { a ( "#opacity_dropdown button" ) . mousedown ( ) ; a ( window ) . mouseup ( ) } ) ; a ( "#zoomLabel" ) . click ( function ( ) { a ( "#zoom_dropdown button" ) . mousedown ( ) ; a ( window ) . mouseup ( ) } ) ; a ( "#tool_move_top" ) . mousedown ( function ( q ) { a ( "#tools_stacking" ) . show ( ) ; q . preventDefault ( ) } ) ; a ( ".layer_button" ) . mousedown ( function ( ) { a ( this ) . addClass ( "layer_buttonpressed" ) } ) . mouseout ( function ( ) { a ( this ) . removeClass ( "layer_buttonpressed" ) } ) . mouseup ( function ( ) { a ( this ) . removeClass ( "layer_buttonpressed" ) } ) ;
a ( ".push_button" ) . mousedown ( function ( ) { a ( this ) . hasClass ( "disabled" ) || a ( this ) . addClass ( "push_button_pressed" ) . removeClass ( "push_button" ) } ) . mouseout ( function ( ) { a ( this ) . removeClass ( "push_button_pressed" ) . addClass ( "push_button" ) } ) . mouseup ( function ( ) { a ( this ) . removeClass ( "push_button_pressed" ) . addClass ( "push_button" ) } ) ; a ( "#layer_new" ) . click ( function ( ) { var q = f . getCurrentDrawing ( ) . getNumLayers ( ) ; do var B = e . layers . layer + " " + ++ q ; while ( f . getCurrentDrawing ( ) . hasLayer ( B ) ) ; a . prompt ( e . notification . enterUniqueLayerName ,
B , function ( J ) { if ( J ) if ( f . getCurrentDrawing ( ) . hasLayer ( J ) ) a . alert ( e . notification . dupeLayerName ) ; else { f . createLayer ( J ) ; Ja ( ) ; Eb ( ) } } ) } ) ; a ( "#layer_delete" ) . click ( T ) ; a ( "#layer_up" ) . click ( function ( ) { K ( - 1 ) } ) ; a ( "#layer_down" ) . click ( function ( ) { K ( 1 ) } ) ; a ( "#layer_rename" ) . click ( function ( ) { a ( "#layerlist tr.layersel" ) . prevAll ( ) ; var q = a ( "#layerlist tr.layersel td.layername" ) . text ( ) ; a . prompt ( e . notification . enterNewLayerName , "" , function ( B ) { if ( B ) if ( q == B || f . getCurrentDrawing ( ) . hasLayer ( B ) ) a . alert ( e . notification . layerHasThatName ) ;
else { f . renameCurrentLayer ( B ) ; Eb ( ) } } ) } ) ; var ec = - 1 , lc = false , qc = false , tc = function ( q ) { if ( qc ) if ( ec != - 1 ) { lc = true ; q = ec - q . pageX ; var B = a ( "#sidepanels" ) , J = parseInt ( B . css ( "width" ) ) ; if ( J + q > 300 ) q = 300 - J ; else if ( J + q < 2 ) q = 2 - J ; if ( q != 0 ) { ec -= q ; J = a ( "#layerpanel" ) ; qa . css ( "right" , parseInt ( qa . css ( "right" ) ) + q ) ; B . css ( "width" , parseInt ( B . css ( "width" ) ) + q ) ; J . css ( "width" , parseInt ( J . css ( "width" ) ) + q ) ; B = a ( "#ruler_x" ) ; B . css ( "right" , parseInt ( B . css ( "right" ) ) + q ) } } } ; a ( "#sidepanel_handle" ) . mousedown ( function ( q ) { ec = q . pageX ; a ( window ) . mousemove ( tc ) ;
qc = false ; setTimeout ( function ( ) { qc = true } , 20 ) } ) . mouseup ( function ( ) { lc || uc ( ) ; ec = - 1 ; lc = false } ) ; a ( window ) . mouseup ( function ( ) { ec = - 1 ; lc = false ; a ( "#svg_editor" ) . unbind ( "mousemove" , tc ) } ) ; var uc = function ( q ) { var B = parseInt ( a ( "#sidepanels" ) . css ( "width" ) ) ; q = ( B > 2 || q ? 2 : 150 ) - B ; B = a ( "#sidepanels" ) ; var J = a ( "#layerpanel" ) , Q = a ( "#ruler_x" ) ; qa . css ( "right" , parseInt ( qa . css ( "right" ) ) + q ) ; B . css ( "width" , parseInt ( B . css ( "width" ) ) + q ) ; J . css ( "width" , parseInt ( J . css ( "width" ) ) + q ) ; Q . css ( "right" , parseInt ( Q . css ( "right" ) ) + q ) } , vc = function ( q ) { for ( var B =
Array ( f . getCurrentDrawing ( ) . getNumLayers ( ) ) , J = 0 ; J < B . length ; ++ J ) B [ J ] = f . getCurrentDrawing ( ) . getLayerName ( J ) ; if ( q ) for ( J = 0 ; J < B . length ; ++ J ) B [ J ] != q && f . getCurrentDrawing ( ) . setLayerOpacity ( B [ J ] , 0.5 ) ; else for ( J = 0 ; J < B . length ; ++ J ) f . getCurrentDrawing ( ) . setLayerOpacity ( B [ J ] , 1 ) } , Eb = function ( ) { var q = a ( "#layerlist tbody" ) , B = a ( "#selLayerNames" ) ; q . empty ( ) ; B . empty ( ) ; for ( var J = f . getCurrentDrawing ( ) . getCurrentLayerName ( ) , Q = f . getCurrentDrawing ( ) . getNumLayers ( ) , X = a . getSvgIcon ( "eye" ) ; Q -- ; ) { var ja = f . getCurrentDrawing ( ) . getLayerName ( Q ) ,
va = '<tr class="layer' ; if ( ja == J ) va += " layersel" ; va += '">' ; va += f . getCurrentDrawing ( ) . getLayerVisibility ( ja ) ? '<td class="layervis"/><td class="layername" >' + ja + "</td></tr>" : '<td class="layervis layerinvis"/><td class="layername" >' + ja + "</td></tr>" ; q . append ( va ) ; B . append ( '<option value="' + ja + '">' + ja + "</option>" ) } if ( X !== undefined ) { X . clone ( ) ; a ( "td.layervis" , q ) . append ( X . clone ( ) ) ; a . resizeSvgIcons ( { "td.layervis .svg_icon" : 14 } ) } a ( "#layerlist td.layername" ) . mouseup ( function ( ya ) { a ( "#layerlist tr.layer" ) . removeClass ( "layersel" ) ;
a ( this . parentNode ) . addClass ( "layersel" ) ; f . setCurrentLayer ( this . textContent ) ; ya . preventDefault ( ) } ) . mouseover ( function ( ) { a ( this ) . css ( { "font-style" : "italic" , color : "blue" } ) ; vc ( this . textContent ) } ) . mouseout ( function ( ) { a ( this ) . css ( { "font-style" : "normal" , color : "black" } ) ; vc ( ) } ) ; a ( "#layerlist td.layervis" ) . click ( function ( ) { var ya = a ( this . parentNode ) . prevAll ( ) . length ; ya = a ( "#layerlist tr.layer:eq(" + ya + ") td.layername" ) . text ( ) ; var Da = a ( this ) . hasClass ( "layerinvis" ) ; f . setLayerVisibility ( ya , Da ) ; Da ? a ( this ) . removeClass ( "layerinvis" ) :
a ( this ) . addClass ( "layerinvis" ) } ) ; for ( B = 5 - a ( "#layerlist tr.layer" ) . size ( ) ; B -- > 0 ; ) q . append ( '<tr><td style="color:white">_</td><td/></tr>' ) } ; Eb ( ) ; a ( window ) . bind ( "load resize" , function ( ) { qa . css ( "line-height" , qa . height ( ) + "px" ) } ) ; a ( "#resolution" ) . change ( function ( ) { var q = a ( "#canvas_width,#canvas_height" ) ; if ( this . selectedIndex ) if ( this . value == "content" ) q . val ( "fit" ) . attr ( "disabled" , "disabled" ) ; else { var B = this . value . split ( "x" ) ; a ( "#canvas_width" ) . val ( B [ 0 ] ) ; a ( "#canvas_height" ) . val ( B [ 1 ] ) ; q . removeAttr ( "disabled" ) } else a ( "#canvas_width" ) . val ( ) ==
"fit" && q . removeAttr ( "disabled" ) . val ( 100 ) } ) ; a ( "input,select" ) . attr ( "autocomplete" , "off" ) ; var oc = function ( ) { var q = [ { sel : "#tool_select" , fn : Cb , evt : "click" , key : [ "V" , true ] } , { sel : "#tool_fhpath" , fn : Lb , evt : "click" , key : [ "Q" , true ] } , { sel : "#tool_line" , fn : Gb , evt : "click" , key : [ "L" , true ] } , { sel : "#tool_rect" , fn : Rb , evt : "click" , key : [ "R" , true ] , icon : "rect" } , { sel : "#tool_ellipse" , fn : na , evt : "mouseup" , key : [ "C" , true ] , icon : "ellipse" } , { sel : "#tool_path" , fn : Y , evt : "click" , key : [ "P" , true ] } , { sel : "#tool_text" , fn : I , evt : "click" , key : [ "T" ,
true ] } , { sel : "#tool_image" , fn : aa , evt : "mouseup" } , { sel : "#tool_zoom" , fn : ta , evt : "mouseup" , key : [ "Z" , true ] } , { sel : "#tool_clear" , fn : Vb , evt : "mouseup" , key : [ fa + "N" , true ] } , { sel : "#tool_save" , fn : function ( ) { Ka ? G ( ) : f . save ( { images : b . img _save , round _digits : 6 } ) } , evt : "mouseup" , key : [ fa + "S" , true ] } , { sel : "#tool_export" , fn : Ub , evt : "mouseup" } , { sel : "#tool_open" , fn : xb , evt : "mouseup" } , { sel : "#tool_import" , fn : kc , evt : "mouseup" } , { sel : "#tool_source" , fn : A , evt : "click" , key : [ fa + "U" , true ] } , { sel : "#tool_wireframe" , fn : t , evt : "click" } , { sel : "#tool_rulers" ,
fn : z , evt : "click" } , { sel : "#tool_source_cancel,#svg_source_overlay,#tool_docprops_cancel,#tool_prefs_cancel" , fn : ka , evt : "click" , key : [ "esc" , false , false ] , hidekey : true } , { sel : "#tool_source_save" , fn : G , evt : "click" } , { sel : "#tool_docprops_save" , fn : P , evt : "click" } , { sel : "#tool_docprops" , fn : F , evt : "mouseup" } , { sel : "#tool_prefs_save" , fn : R , evt : "click" } , { sel : "#tool_prefs_option" , fn : function ( ) { C ( ) ; return false } , evt : "mouseup" } , { sel : "#tool_delete,#tool_delete_multi" , fn : Pa , evt : "click" , key : [ "del/backspace" , true ] } , { sel : "#tool_reorient" ,
fn : Jb , evt : "click" } , { sel : "#tool_node_link" , fn : ac , evt : "click" } , { sel : "#tool_node_clone" , fn : qb , evt : "click" } , { sel : "#tool_node_delete" , fn : Ua , evt : "click" } , { sel : "#tool_openclose_path" , fn : hc , evt : "click" } , { sel : "#tool_add_subpath" , fn : jc , evt : "click" } , { sel : "#tool_move_top" , fn : ub , evt : "click" , key : fa + "shift+up" } , { sel : "#tool_move_bottom" , fn : zb , evt : "click" , key : fa + "shift+down" } , { sel : "#tool_move_up" , fn : pb , evt : "click" , key : [ fa + "up" , true ] } , { sel : "#tool_move_down" , fn : Mb , evt : "click" , key : [ fa + "down" , true ] } , { sel : "#tool_topath" ,
fn : ab , evt : "click" } , { sel : "#tool_make_link,#tool_make_link_multi" , fn : Qb , evt : "click" } , { sel : "#tool_undo" , fn : Tb , evt : "click" } , { sel : "#tool_redo" , fn : ob , evt : "click" , key : [ "Y" , true ] } , { sel : "#tool_clone,#tool_clone_multi" , fn : g , evt : "click" , key : [ fa + "D" , true ] } , { sel : "#tool_group" , fn : Xb , evt : "click" , key : [ fa + "G" , true ] } , { sel : "#tool_ungroup" , fn : Xb , evt : "click" , key : fa + "shift+G" } , { sel : "#tool_unlink_use" , fn : Xb , evt : "click" } , { sel : "[id^=tool_align]" , fn : h , evt : "click" } , { sel : "#tool_switch" , fn : k , evt : "click" , key : [ "X" , true ] } , { sel : "#tool_bold" ,
fn : bc , evt : "mousedown" , key : [ fa + "B" , true ] } , { sel : "#tool_italic" , fn : mc , evt : "mousedown" , key : [ fa + "I" , true ] } , { sel : "#copy_save_done" , fn : ka , evt : "click" } , { key : "ctrl+left" , fn : function ( ) { Yb ( 0 , 1 ) } } , { key : "ctrl+right" , fn : function ( ) { Yb ( 1 , 1 ) } } , { key : "ctrl+shift+left" , fn : function ( ) { Yb ( 0 , 5 ) } } , { key : "ctrl+shift+right" , fn : function ( ) { Yb ( 1 , 5 ) } } , { key : "shift+O" , fn : cc } , { key : "shift+P" , fn : $b } , { key : [ fa + "+" , true ] , fn : function ( ) { v ( 2 ) } } , { key : [ fa + "-" , true ] , fn : function ( ) { v ( 0.5 ) } } , { key : [ "up" , true ] , fn : function ( ) { Kb ( 0 , - 1 ) } } , { key : [ "down" ,
true ] , fn : function ( ) { Kb ( 0 , 1 ) } } , { key : [ "left" , true ] , fn : function ( ) { Kb ( - 1 , 0 ) } } , { key : [ "right" , true ] , fn : function ( ) { Kb ( 1 , 0 ) } } , { key : "shift+up" , fn : function ( ) { Kb ( 0 , - 10 ) } } , { key : "shift+down" , fn : function ( ) { Kb ( 0 , 10 ) } } , { key : "shift+left" , fn : function ( ) { Kb ( - 10 , 0 ) } } , { key : "shift+right" , fn : function ( ) { Kb ( 10 , 0 ) } } , { key : [ "alt+up" , true ] , fn : function ( ) { f . cloneSelectedElements ( 0 , - 1 ) } } , { key : [ "alt+down" , true ] , fn : function ( ) { f . cloneSelectedElements ( 0 , 1 ) } } , { key : [ "alt+left" , true ] , fn : function ( ) { f . cloneSelectedElements ( - 1 , 0 ) } } , { key : [ "alt+right" ,
true ] , fn : function ( ) { f . cloneSelectedElements ( 1 , 0 ) } } , { key : [ "alt+shift+up" , true ] , fn : function ( ) { f . cloneSelectedElements ( 0 , - 10 ) } } , { key : [ "alt+shift+down" , true ] , fn : function ( ) { f . cloneSelectedElements ( 0 , 10 ) } } , { key : [ "alt+shift+left" , true ] , fn : function ( ) { f . cloneSelectedElements ( - 10 , 0 ) } } , { key : [ "alt+shift+right" , true ] , fn : function ( ) { f . cloneSelectedElements ( 10 , 0 ) } } , { key : fa + "A" , fn : function ( ) { f . selectAllInCurrentLayer ( ) } } , { key : fa + "z" , fn : Tb } , { key : fa + "shift+z" , fn : ob } , { key : fa + "y" , fn : ob } , { key : "esc" , fn : E } , { key : fa + "x" , fn : Wa } ,
{ key : fa + "c" , fn : db } , { key : fa + "v" , fn : tb } ] , B = { "4/Shift+4" : "#tools_rect_show" , "5/Shift+5" : "#tools_ellipse_show" } ; return { setAll : function ( ) { var J = { } ; a . each ( q , function ( Q , X ) { if ( X . sel ) { var ja = a ( X . sel ) ; if ( ja . length == 0 ) return true ; if ( X . evt ) { if ( svgedit . browser . isTouch ( ) && X . evt === "click" ) X . evt = "mousedown" ; ja [ X . evt ] ( X . fn ) } if ( X . parent && a ( X . parent + "_show" ) . length != 0 ) { var va = a ( X . parent ) ; va . length || ( va = Ga ( X . parent . substr ( 1 ) ) ) ; va . append ( ja ) ; a . isArray ( J [ X . parent ] ) || ( J [ X . parent ] = [ ] ) ; J [ X . parent ] . push ( X ) } } if ( X . key ) { var ya =
X . fn , Da = false ; if ( a . isArray ( X . key ) ) { va = X . key [ 0 ] ; if ( X . key . length > 1 ) Da = X . key [ 1 ] } else va = X . key ; va += "" ; svgedit . browser . isMac && va . indexOf ( "+" ) != - 1 && va . split ( "+" ) [ 0 ] == "ctrl" && va . replace ( "ctrl" , "cmd" ) ; a . each ( va . split ( "/" ) , function ( Ba , vb ) { a ( document ) . bind ( "keydown" , vb , function ( Ta ) { ya ( ) ; Da && Ta . preventDefault ( ) ; return false } ) } ) ; if ( X . sel && ! X . hidekey && ja . attr ( "title" ) ) { var Ca = ja . attr ( "title" ) . split ( "[" ) [ 0 ] + " (" + va + ")" ; B [ va ] = X . sel ; ja . parents ( "#main_menu" ) . length || ja . attr ( "title" , Ca ) } } } ) ; Qa ( J ) ; a ( ".attr_changer, #image_url" ) . bind ( "keydown" ,
"return" , function ( Q ) { a ( this ) . change ( ) ; Q . preventDefault ( ) } ) ; a ( window ) . bind ( "keydown" , "tab" , function ( Q ) { if ( U === "canvas" ) { Q . preventDefault ( ) ; $b ( ) } } ) . bind ( "keydown" , "shift+tab" , function ( Q ) { if ( U === "canvas" ) { Q . preventDefault ( ) ; cc ( ) } } ) ; a ( "#tool_zoom" ) . dblclick ( M ) } , setTitles : function ( ) { a . each ( B , function ( J , Q ) { var X = a ( Q ) . parents ( "#main_menu" ) . length ; a ( Q ) . each ( function ( ) { var ja = X ? a ( this ) . text ( ) . split ( " [" ) [ 0 ] : this . title . split ( " [" ) [ 0 ] , va = "" ; a . each ( J . split ( "/" ) , function ( ya , Da ) { var Ca = Da . split ( "+" ) , Ba = "" ; if ( Ca . length >
1 ) { Ba = Ca [ 0 ] + "+" ; Da = Ca [ 1 ] } va += ( ya ? "/" : "" ) + Ba + ( e [ "key_" + Da ] || Da ) } ) ; if ( X ) this . lastChild . textContent = ja + " [" + va + "]" ; else this . title = ja + " [" + va + "]" } ) } ) } , getButtonData : function ( J ) { var Q ; a . each ( q , function ( X , ja ) { if ( ja . sel === J ) Q = ja } ) ; return Q } } } ( ) ; oc . setAll ( ) ; c . ready ( function ( ) { var q = d . initTool , B = a ( "#tools_left, #svg_editor .tools_flyout" ) , J = B . find ( "#tool_" + q ) ; q = B . find ( "#" + q ) ; ( J . length ? J : q . length ? q : a ( "#tool_select" ) ) . click ( ) . mouseup ( ) ; d . wireframe && a ( "#tool_wireframe" ) . click ( ) ; d . showlayers && uc ( ) ; a ( "#rulers" ) . toggle ( ! ! d . showRulers ) ;
if ( d . showRulers ) a ( "#show_rulers" ) [ 0 ] . checked = true ; if ( d . gridSnapping ) a ( "#grid_snapping_on" ) [ 0 ] . checked = true ; d . baseUnit && a ( "#base_unit" ) . val ( d . baseUnit ) ; d . snappingStep && a ( "#grid_snapping_step" ) . val ( d . snappingStep ) } ) ; a ( "#rect_rx" ) . SpinButton ( { min : 0 , max : 1E3 , step : 1 , callback : function ( q ) { f . setRectRadius ( q . value ) } } ) ; a ( "#stroke_width" ) . SpinButton ( { min : 0 , max : 99 , step : 1 , smallStep : 0.1 , callback : function ( q ) { var B = q . value ; if ( B == 0 && Z && [ "line" , "polyline" ] . indexOf ( Z . nodeName ) >= 0 ) B = q . value = 1 ; f . setStrokeWidth ( B ) } } ) ; a ( "#angle" ) . SpinButton ( { min : - 180 ,
max : 180 , step : 5 , callback : function ( q ) { f . setRotationAngle ( q . value ) ; a ( "#tool_reorient" ) . toggleClass ( "disabled" , q . value == 0 ) } } ) ; a ( "#font_size" ) . SpinButton ( { step : 1 , min : 0.0010 , stepfunc : function ( q , B ) { var J = q . value - 0 , Q = J + B , X = Q >= J ; if ( B === 0 ) return J ; return J >= 24 ? X ? Math . round ( J * 1.1 ) : Math . round ( J / 1.1 ) : J <= 1 ? X ? J * 2 : J / 2 : Q } , callback : function ( q ) { f . setFontSize ( q . value ) } } ) ; a ( "#group_opacity" ) . SpinButton ( { step : 5 , min : 0 , max : 100 , callback : Ab } ) ; a ( "#blur" ) . SpinButton ( { step : 0.1 , min : 0 , max : 10 , callback : eb } ) ; a ( "#zoom" ) . SpinButton ( { min : 0.0010 ,
max : 1E4 , step : 50 , stepfunc : function ( q , B ) { var J = q . value - 0 ; if ( J === 0 ) return 100 ; var Q = J + B ; if ( B === 0 ) return J ; return J >= 100 ? Q : Q >= J ? J * 2 : J / 2 } , callback : mb } ) . val ( f . getZoom ( ) * 100 ) ; a ( "#workarea" ) . contextMenu ( { menu : "cmenu_canvas" , inSpeed : 0 } , function ( q ) { switch ( q ) { case "delete" : Pa ( ) ; break ; case "cut" : Wa ( ) ; break ; case "copy" : db ( ) ; break ; case "paste" : f . pasteElements ( ) ; break ; case "paste_in_place" : f . pasteElements ( "in_place" ) ; break ; case "group" : f . groupSelectedElements ( ) ; break ; case "ungroup" : f . ungroupSelectedElement ( ) ; break ;
case "move_front" : ub ( ) ; break ; case "move_up" : Z != null && f . moveUpDownSelected ( "Up" ) ; break ; case "move_down" : Z != null && f . moveUpDownSelected ( "Down" ) ; break ; case "move_back" : zb ( ) ; break ; default : svgedit . contextmenu && svgedit . contextmenu . hasCustomHandler ( q ) && svgedit . contextmenu . getCustomHandler ( q ) . call ( ) } f . clipBoard . length && pa . enableContextMenuItems ( "#paste,#paste_in_place" ) } ) ; V = function ( q ) { switch ( q ) { case "dupe" : N ( ) ; break ; case "delete" : T ( ) ; break ; case "merge_down" : if ( a ( "#layerlist tr.layersel" ) . index ( ) != f . getCurrentDrawing ( ) . getNumLayers ( ) -
1 ) { f . mergeLayer ( ) ; Ja ( ) ; Eb ( ) } break ; case "merge_all" : f . mergeAllLayers ( ) ; Ja ( ) ; Eb ( ) } } ; a ( "#layerlist" ) . contextMenu ( { menu : "cmenu_layers" , inSpeed : 0 } , V ) ; a ( "#layer_moreopts" ) . contextMenu ( { menu : "cmenu_layers" , inSpeed : 0 , allowLeft : true } , V ) ; a ( ".contextMenu li" ) . mousedown ( function ( q ) { q . preventDefault ( ) } ) ; a ( "#cmenu_canvas li" ) . disableContextMenu ( ) ; pa . enableContextMenuItems ( "#delete,#cut,#copy" ) ; window . onbeforeunload = function ( ) { if ( ha . getUndoStackSize ( ) === 0 ) c . show _save _warning = false ; if ( ! d . no _save _warning && c . show _save _warning ) return e . notification . unsavedChanges } ;
c . openPrep = function ( q ) { a ( "#main_menu" ) . hide ( ) ; ha . getUndoStackSize ( ) === 0 ? q ( true ) : a . confirm ( e . notification . QwantToOpen , q ) } ; if ( window . FileReader ) { V = a ( '<input type="file">' ) . change ( function ( ) { var q = this ; c . openPrep ( function ( B ) { if ( B ) { f . clear ( ) ; if ( q . files . length == 1 ) { B = new FileReader ; B . onloadend = function ( J ) { n ( J . target . result ) ; Sb ( ) } ; B . readAsText ( q . files [ 0 ] ) } } } ) } ) ; a ( "#tool_open" ) . show ( ) . prepend ( V ) ; V = a ( '<input type="file">' ) . change ( function ( ) { a ( "#main_menu" ) . hide ( ) ; if ( this . files . length == 1 ) { var q = new FileReader ;
q . onloadend = function ( B ) { f . importSvgString ( B . target . result , true ) ; Sb ( ) } ; q . readAsText ( this . files [ 0 ] ) } } ) ; a ( "#tool_import" ) . show ( ) . prepend ( V ) } var Sb = c . updateCanvas = function ( q , B ) { var J = qa . width ( ) , Q = qa . height ( ) , X = J , ja = Q , va = f . getZoom ( ) , ya = a ( "#svgcanvas" ) , Da = { x : qa [ 0 ] . scrollLeft + X / 2 , y : qa [ 0 ] . scrollTop + ja / 2 } , Ca = d . canvas _expansion ; J = Math . max ( X , f . contentW * va * Ca ) ; Q = Math . max ( ja , f . contentH * va * Ca ) ; J == X && Q == ja ? qa . css ( "overflow" , "hidden" ) : qa . css ( "overflow" , "scroll" ) ; Ca = ya . height ( ) / 2 ; var Ba = ya . width ( ) / 2 ; ya . width ( J ) . height ( Q ) ;
var vb = Q / 2 , Ta = J / 2 , ia = f . updateCanvas ( J , Q ) , yb = Ta / Ba ; J = J / 2 - X / 2 ; Q = Q / 2 - ja / 2 ; if ( B ) { B . x += ia . x ; B . y += ia . y } else B = { x : Ta + ( Da . x - Ba ) * yb , y : vb + ( Da . y - Ca ) * yb } ; if ( q ) if ( f . contentW > qa . width ( ) ) { qa [ 0 ] . scrollLeft = ia . x - 10 ; qa [ 0 ] . scrollTop = ia . y - 10 } else { qa [ 0 ] . scrollLeft = J ; qa [ 0 ] . scrollTop = Q } else { qa [ 0 ] . scrollLeft = B . x - X / 2 ; qa [ 0 ] . scrollTop = B . y - ja / 2 } if ( d . showRulers ) { da ( ya , va ) ; qa . scroll ( ) } } , ic = [ ] ; for ( gb = 0.1 ; gb < 1E5 ; gb *= 10 ) { ic . push ( 1 * gb ) ; ic . push ( 2 * gb ) ; ic . push ( 5 * gb ) } Sb ( true ) ; try { var wc = function ( q ) { if ( window . JSON && JSON . stringify ) return JSON . stringify ( q ) ;
var B = arguments . callee ; if ( typeof q == "boolean" || typeof q == "number" ) return q + "" ; else if ( typeof q == "string" ) return '"' + q . replace ( /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g , function ( X ) { return "\\u" + ( "0000" + X . charCodeAt ( 0 ) . toString ( 16 ) ) . slice ( - 4 ) } ) + '"' ; else if ( q . length ) { for ( var J = 0 ; J < q . length ; J ++ ) q [ J ] = B ( q [ J ] ) ; return "[" + q . join ( "," ) + "]" } else { J = [ ] ; for ( var Q in q ) J . push ( B ( Q ) + ":" + B ( q [ Q ] ) ) ; return "{" + J . join ( "," ) + "}" } } ; window . addEventListener ( "message" ,
function ( q ) { var B = parseInt ( q . data . substr ( 0 , q . data . indexOf ( ";" ) ) ) ; try { q . source . postMessage ( "SVGe" + B + ";" + wc ( eval ( q . data ) ) , "*" ) } catch ( J ) { q . source . postMessage ( "SVGe" + B + ";error:" + J . message , "*" ) } } , false ) } catch ( xc ) { window . embed _error = xc } a ( function ( ) { window . svgCanvas = f ; f . ready = svgEditor . ready } ) ; c . setLang = function ( q , B ) { a . pref ( "lang" , q ) ; a ( "#lang_select" ) . val ( q ) ; if ( B ) { var J = a ( "#layerlist tr.layersel td.layername" ) . text ( ) == e . common . layer + " 1" ; a . extend ( e , B ) ; f . setUiStrings ( B ) ; oc . setTitles ( ) ; if ( J ) { f . renameCurrentLayer ( e . common . layer +
" 1" ) ; Eb ( ) } f . runExtensions ( "langChanged" , q ) ; Ob ( ) ; a . each ( { "#stroke_color" : "#tool_stroke .icon_label, #tool_stroke .color_block" , "#fill_color" : "#tool_fill label, #tool_fill .color_block" , "#linejoin_miter" : "#cur_linejoin" , "#linecap_butt" : "#cur_linecap" } , function ( Q , X ) { a ( X ) . attr ( "title" , a ( Q ) [ 0 ] . title ) } ) ; a ( "#multiselected_panel div[id^=tool_align]" ) . each ( function ( ) { a ( "#tool_pos" + this . id . substr ( 10 ) ) [ 0 ] . title = this . title } ) } } } ; var u = [ ] ; c . ready = function ( w ) { m ? w ( ) : u . push ( w ) } ; c . runCallbacks = function ( ) { a . each ( u ,
function ( ) { this ( ) } ) ; m = true } ; c . loadFromString = function ( w ) { c . ready ( function ( ) { n ( w ) } ) } ; c . disableUI = function ( ) { } ; c . loadFromURL = function ( w , p ) { p || ( p = { } ) ; var L = p . cache , T = p . callback ; c . ready ( function ( ) { a . ajax ( { url : w , dataType : "text" , cache : ! ! L , success : function ( N ) { n ( N , T ) } , error : function ( N , K , da ) { N . status != 404 && N . responseText ? n ( N . responseText , T ) : a . alert ( e . notification . URLloadFail + ": \n" + da + "" , T ) } } ) } ) } ; c . loadFromDataURI = function ( w ) { c . ready ( function ( ) { var p = w . substring ( 26 ) ; n ( svgedit . utilities . decode64 ( p ) ) } ) } ; c . addExtension =
function ( ) { var w = arguments ; a ( function ( ) { f && f . addExtension . apply ( this , w ) } ) } ; return c } ( jQuery ) ; $ ( svgEditor . init ) } ) ( ) ; svgedit = svgedit || { } ;
2012-06-23 19:40:40 +00:00
( function ( ) { var a = this ; if ( ! svgedit . contextmenu ) svgedit . contextmenu = { } ; a . contextMenuExtensions = { } ; svgEditor . ready ( function ( ) { for ( menuItem in contextMenuExtensions ) { var n = contextMenuExtensions [ menuItem ] ; Object . keys ( a . contextMenuExtensions ) . length == 0 && $ ( "#cmenu_canvas" ) . append ( "<li class='separator'>" ) ; var f = n . shortcut || "" ; $ ( "#cmenu_canvas" ) . append ( "<li class='disabled'><a href='#" + n . id + "'>" + n . label + "<span class='shortcut'>" + f + "</span></a></li>" ) } } ) ; svgedit . contextmenu . resetCustomMenus = function ( ) { a . contextMenuExtensions =
{ } } ; svgedit . contextmenu . add = function ( n ) { if ( n && n . id && n . label && n . action && typeof n . action == "function" ) if ( n . id in a . contextMenuExtensions ) console . error ( 'Cannot add extension "' + n . id + '", an extension by that name already exists"' ) ; else { console . log ( "Registed contextmenu item: {id:" + n . id + ", label:" + n . label + "}" ) ; a . contextMenuExtensions [ n . id ] = n } else console . error ( "Menu items must be defined and have at least properties: id, label, action, where action must be a function" ) } ; svgedit . contextmenu . hasCustomHandler =
2012-07-14 00:14:24 +00:00
function ( n ) { return a . contextMenuExtensions [ n ] && true } ; svgedit . contextmenu . getCustomHandler = function ( n ) { return a . contextMenuExtensions [ n ] . action } } ) ( ) ; var svgEditor = function ( a , n ) { function f ( m , o , b ) { var d = a ( "#svg_editor" ) . parent ( ) , e ; for ( e in o ) { var l = o [ e ] ; l || console . log ( e ) ; if ( b ) e = "#" + e ; if ( d . find ( e ) . length ) { var u = d . find ( e ) [ 0 ] ; switch ( m ) { case "content" : for ( var w = 0 ; w < u . childNodes . length ; w ++ ) { var p = u . childNodes [ w ] ; if ( p . nodeType === 3 && p . textContent . replace ( /\s/g , "" ) ) { p . textContent = l ; break } } break ; case "title" : u . title = l } } else console . log ( "Missing: " + e ) } } var c ; n . readLang = function ( m ) { var o = n . canvas . runExtensions ( "addlangData" , c , true ) ; a . each ( o , function ( T , N ) { if ( N . data ) m =
2012-07-04 14:42:50 +00:00
a . merge ( m , N . data ) } ) ; if ( m . tools ) { var b = m . tools ; o = m . properties ; var d = m . config , e = m . layers , l = m . common , u = m . ui ; f ( "content" , { copyrightLabel : m . misc . powered _by , curve _segments : o . curve _segments , fitToContent : b . fitToContent , fit _to _all : b . fit _to _all , fit _to _canvas : b . fit _to _canvas , fit _to _layer _content : b . fit _to _layer _content , fit _to _sel : b . fit _to _sel , icon _large : d . icon _large , icon _medium : d . icon _medium , icon _small : d . icon _small , icon _xlarge : d . icon _xlarge , image _opt _embed : d . image _opt _embed , image _opt _ref : d . image _opt _ref , includedImages : d . included _images ,
largest _object : b . largest _object , layersLabel : e . layers , page : b . page , relativeToLabel : b . relativeTo , selLayerLabel : e . move _elems _to , selectedPredefined : d . select _predefined , selected _objects : b . selected _objects , smallest _object : b . smallest _object , straight _segments : o . straight _segments , svginfo _bg _url : d . editor _img _url + ":" , svginfo _bg _note : d . editor _bg _note , svginfo _change _background : d . background , svginfo _dim : d . doc _dims , svginfo _editor _prefs : d . editor _prefs , svginfo _height : l . height , svginfo _icons : d . icon _size , svginfo _image _props : d . image _props ,
2012-06-23 19:40:40 +00:00
svginfo _lang : d . language , svginfo _title : d . doc _title , svginfo _width : l . width , tool _docprops _cancel : l . cancel , tool _docprops _save : l . ok , tool _source _cancel : l . cancel , tool _source _save : l . ok , tool _prefs _cancel : l . cancel , tool _prefs _save : l . ok , sidepanel _handle : e . layers . split ( "" ) . join ( " " ) , tool _clear : b . new _doc , tool _docprops : b . docprops , tool _export : b . export _png , tool _import : b . import _doc , tool _imagelib : b . imagelib , tool _open : b . open _doc , tool _save : b . save _doc , svginfo _units _rulers : d . units _and _rulers , svginfo _rulers _onoff : d . show _rulers ,
2012-07-14 00:14:24 +00:00
svginfo _unit : d . base _unit , svginfo _grid _settings : d . grid , svginfo _snap _onoff : d . snapping _onoff , svginfo _snap _step : d . snapping _stepsize } , true ) ; var w = { } , p ; for ( p in m . shape _cats ) w [ '#shape_cats [data-cat="' + p + '"]' ] = m . shape _cats [ p ] ; setTimeout ( function ( ) { f ( "content" , w ) } , 2E3 ) ; var L = { } ; a . each ( [ "cut" , "copy" , "paste" , "paste_in_place" , "delete" , "group" , "ungroup" , "move_front" , "move_up" , "move_down" , "move_back" ] , function ( ) { L [ '#cmenu_canvas a[href="#' + this + '"]' ] = b [ this ] } ) ; a . each ( [ "dupe" , "merge_down" , "merge_all" ] , function ( ) { L [ '#cmenu_layers a[href="#' +
2012-07-04 14:42:50 +00:00
this + '"]' ] = e [ this ] } ) ; L [ '#cmenu_layers a[href="#delete"]' ] = e . del ; f ( "content" , L ) ; f ( "title" , { align _relative _to : b . align _relative _to , circle _cx : o . circle _cx , circle _cy : o . circle _cy , circle _r : o . circle _r , cornerRadiusLabel : o . corner _radius , ellipse _cx : o . ellipse _cx , ellipse _cy : o . ellipse _cy , ellipse _rx : o . ellipse _rx , ellipse _ry : o . ellipse _ry , fill _color : o . fill _color , font _family : o . font _family , idLabel : o . id , image _height : o . image _height , image _url : o . image _url , image _width : o . image _width , layer _delete : e . del , layer _down : e . move _down ,
layer _new : e [ "new" ] , layer _rename : e . rename , layer _moreopts : l . more _opts , layer _up : e . move _up , line _x1 : o . line _x1 , line _x2 : o . line _x2 , line _y1 : o . line _y1 , line _y2 : o . line _y2 , linecap _butt : o . linecap _butt , linecap _round : o . linecap _round , linecap _square : o . linecap _square , linejoin _bevel : o . linejoin _bevel , linejoin _miter : o . linejoin _miter , linejoin _round : o . linejoin _round , main _icon : b . main _menu , mode _connect : b . mode _connect , tools _shapelib _show : b . mode _shapelib , palette : u . palette _info , zoom _panel : u . zoom _level , path _node _x : o . node _x , path _node _y : o . node _y ,
rect _height _tool : o . rect _height , rect _width _tool : o . rect _width , seg _type : o . seg _type , selLayerNames : e . move _selected , selected _x : o . pos _x , selected _y : o . pos _y , stroke _color : o . stroke _color , stroke _style : o . stroke _style , stroke _width : o . stroke _width , svginfo _title : d . doc _title , text : o . text _contents , toggle _stroke _tools : u . toggle _stroke _tools , tool _add _subpath : b . add _subpath , tool _alignbottom : b . align _bottom , tool _aligncenter : b . align _center , tool _alignleft : b . align _left , tool _alignmiddle : b . align _middle , tool _alignright : b . align _right ,
tool _aligntop : b . align _top , tool _angle : o . angle , tool _blur : o . blur , tool _bold : o . bold , tool _circle : b . mode _circle , tool _clone : b . clone , tool _clone _multi : b . clone , tool _delete : b . del , tool _delete _multi : b . del , tool _ellipse : b . mode _ellipse , tool _eyedropper : b . mode _eyedropper , tool _fhellipse : b . mode _fhellipse , tool _fhpath : b . mode _fhpath , tool _fhrect : b . mode _fhrect , tool _font _size : o . font _size , tool _group : b . group , tool _make _link : b . make _link , tool _link _url : b . set _link _url , tool _image : b . mode _image , tool _italic : o . italic , tool _line : b . mode _line ,
tool _move _bottom : b . move _bottom , tool _move _top : b . move _top , tool _node _clone : b . node _clone , tool _node _delete : b . node _delete , tool _node _link : b . node _link , tool _opacity : o . opacity , tool _openclose _path : b . openclose _path , tool _path : b . mode _path , tool _position : b . align _to _page , tool _rect : b . mode _rect , tool _redo : b . redo , tool _reorient : b . reorient _path , tool _select : b . mode _select , tool _source : b . source _save , tool _square : b . mode _square , tool _text : b . mode _text , tool _topath : b . to _path , tool _undo : b . undo , tool _ungroup : b . ungroup , tool _wireframe : b . wireframe _mode ,
view _grid : b . toggle _grid , tool _zoom : b . mode _zoom , url _notice : b . no _embed } , true ) ; n . setLang ( c , m ) } } ; n . putLocale = function ( m , o ) { if ( m ) c = m ; else { c = a . pref ( "lang" ) ; if ( ! c ) { if ( navigator . userLanguage ) c = navigator . userLanguage ; else if ( navigator . language ) c = navigator . language ; if ( c == "" ) return } console . log ( "Lang: " + c ) ; if ( a . inArray ( c , o ) == - 1 && c !== "test" ) c = "en" ; if ( c . indexOf ( "en" ) == 0 ) return } var b = n . curConfig . langPath + "lang." + c + ".js" ; a . getScript ( b , function ( d ) { if ( ! d ) { d = document . createElement ( "script" ) ; d . src = b ; document . querySelector ( "head" ) . appendChild ( d ) } } ) } ;
return n } ( jQuery , svgEditor ) ; ( function ( a , n ) { function f ( m ) { return ! a ( m ) . parents ( ) . andSelf ( ) . filter ( function ( ) { return a . curCSS ( this , "visibility" ) === "hidden" || a . expr . filters . hidden ( this ) } ) . length } function c ( m , o ) { var b = m . nodeName . toLowerCase ( ) ; if ( "area" === b ) { b = m . parentNode ; var d = b . name ; if ( ! m . href || ! d || b . nodeName . toLowerCase ( ) !== "map" ) return false ; b = a ( "img[usemap=#" + d + "]" ) [ 0 ] ; return ! ! b && f ( b ) } return ( /input|select|textarea|button|object/ . test ( b ) ? ! m . disabled : "a" == b ? m . href || o : o ) && f ( m ) } a . ui = a . ui || { } ; a . ui . version || ( a . extend ( a . ui , { version : "1.8.17" ,
keyCode : { ALT : 18 , BACKSPACE : 8 , CAPS _LOCK : 20 , COMMA : 188 , COMMAND : 91 , COMMAND _LEFT : 91 , COMMAND _RIGHT : 93 , CONTROL : 17 , DELETE : 46 , DOWN : 40 , END : 35 , ENTER : 13 , ESCAPE : 27 , HOME : 36 , INSERT : 45 , LEFT : 37 , MENU : 93 , NUMPAD _ADD : 107 , NUMPAD _DECIMAL : 110 , NUMPAD _DIVIDE : 111 , NUMPAD _ENTER : 108 , NUMPAD _MULTIPLY : 106 , NUMPAD _SUBTRACT : 109 , PAGE _DOWN : 34 , PAGE _UP : 33 , PERIOD : 190 , RIGHT : 39 , SHIFT : 16 , SPACE : 32 , TAB : 9 , UP : 38 , WINDOWS : 91 } } ) , a . fn . extend ( { propAttr : a . fn . prop || a . fn . attr , _focus : a . fn . focus , focus : function ( m , o ) { return typeof m == "number" ? this . each ( function ( ) { var b =
this ; setTimeout ( function ( ) { a ( b ) . focus ( ) ; o && o . call ( b ) } , m ) } ) : this . _focus . apply ( this , arguments ) } , scrollParent : function ( ) { var m ; a . browser . msie && /(static|relative)/ . test ( this . css ( "position" ) ) || /absolute/ . test ( this . css ( "position" ) ) ? m = this . parents ( ) . filter ( function ( ) { return /(relative|absolute|fixed)/ . test ( a . curCSS ( this , "position" , 1 ) ) && /(auto|scroll)/ . test ( a . curCSS ( this , "overflow" , 1 ) + a . curCSS ( this , "overflow-y" , 1 ) + a . curCSS ( this , "overflow-x" , 1 ) ) } ) . eq ( 0 ) : m = this . parents ( ) . filter ( function ( ) { return /(auto|scroll)/ . test ( a . curCSS ( this ,
"overflow" , 1 ) + a . curCSS ( this , "overflow-y" , 1 ) + a . curCSS ( this , "overflow-x" , 1 ) ) } ) . eq ( 0 ) ; return /fixed/ . test ( this . css ( "position" ) ) || ! m . length ? a ( document ) : m } , zIndex : function ( m ) { if ( m !== n ) return this . css ( "zIndex" , m ) ; if ( this . length ) { m = a ( this [ 0 ] ) ; for ( var o ; m . length && m [ 0 ] !== document ; ) { o = m . css ( "position" ) ; if ( o === "absolute" || o === "relative" || o === "fixed" ) { o = parseInt ( m . css ( "zIndex" ) , 10 ) ; if ( ! isNaN ( o ) && o !== 0 ) return o } m = m . parent ( ) } } return 0 } , disableSelection : function ( ) { return this . bind ( ( a . support . selectstart ? "selectstart" :
2012-07-14 00:14:24 +00:00
"mousedown" ) + ".ui-disableSelection" , function ( m ) { m . preventDefault ( ) } ) } , enableSelection : function ( ) { return this . unbind ( ".ui-disableSelection" ) } } ) , a . each ( [ "Width" , "Height" ] , function ( m , o ) { function b ( u , w , p , L ) { a . each ( d , function ( ) { w -= parseFloat ( a . curCSS ( u , "padding" + this , true ) ) || 0 ; p && ( w -= parseFloat ( a . curCSS ( u , "border" + this + "Width" , true ) ) || 0 ) ; L && ( w -= parseFloat ( a . curCSS ( u , "margin" + this , true ) ) || 0 ) } ) ; return w } var d = o === "Width" ? [ "Left" , "Right" ] : [ "Top" , "Bottom" ] , e = o . toLowerCase ( ) , l = { innerWidth : a . fn . innerWidth , innerHeight : a . fn . innerHeight ,
outerWidth : a . fn . outerWidth , outerHeight : a . fn . outerHeight } ; a . fn [ "inner" + o ] = function ( u ) { if ( u === n ) return l [ "inner" + o ] . call ( this ) ; return this . each ( function ( ) { a ( this ) . css ( e , b ( this , u ) + "px" ) } ) } ; a . fn [ "outer" + o ] = function ( u , w ) { if ( typeof u != "number" ) return l [ "outer" + o ] . call ( this , u ) ; return this . each ( function ( ) { a ( this ) . css ( e , b ( this , u , true , w ) + "px" ) } ) } } ) , a . extend ( a . expr [ ":" ] , { data : function ( m , o , b ) { return ! ! a . data ( m , b [ 3 ] ) } , focusable : function ( m ) { return c ( m , ! isNaN ( a . attr ( m , "tabindex" ) ) ) } , tabbable : function ( m ) { var o = a . attr ( m ,
2012-07-04 14:42:50 +00:00
"tabindex" ) , b = isNaN ( o ) ; return ( b || o >= 0 ) && c ( m , ! b ) } } ) , a ( function ( ) { var m = document . body , o = m . appendChild ( o = document . createElement ( "div" ) ) ; a . extend ( o . style , { minHeight : "100px" , height : "auto" , padding : 0 , borderWidth : 0 } ) ; a . support . minHeight = o . offsetHeight === 100 ; a . support . selectstart = "onselectstart" in o ; m . removeChild ( o ) . style . display = "none" } ) , a . extend ( a . ui , { plugin : { add : function ( m , o , b ) { m = a . ui [ m ] . prototype ; for ( var d in b ) { m . plugins [ d ] = m . plugins [ d ] || [ ] ; m . plugins [ d ] . push ( [ o , b [ d ] ] ) } } , call : function ( m , o , b ) { if ( ( o = m . plugins [ o ] ) &&
m . element [ 0 ] . parentNode ) for ( var d = 0 ; d < o . length ; d ++ ) m . options [ o [ d ] [ 0 ] ] && o [ d ] [ 1 ] . apply ( m . element , b ) } } , contains : function ( m , o ) { return document . compareDocumentPosition ? m . compareDocumentPosition ( o ) & 16 : m !== o && m . contains ( o ) } , hasScroll : function ( m , o ) { if ( a ( m ) . css ( "overflow" ) === "hidden" ) return false ; var b = o && o === "left" ? "scrollLeft" : "scrollTop" , d = false ; if ( m [ b ] > 0 ) return true ; m [ b ] = 1 ; d = m [ b ] > 0 ; m [ b ] = 0 ; return d } , isOverAxis : function ( m , o , b ) { return m > o && m < o + b } , isOver : function ( m , o , b , d , e , l ) { return a . ui . isOverAxis ( m , b , e ) &&
a . ui . isOverAxis ( o , d , l ) } } ) ) } ) ( jQuery ) ;
( function ( a , n ) { if ( a . cleanData ) { var f = a . cleanData ; a . cleanData = function ( m ) { for ( var o = 0 , b ; ( b = m [ o ] ) != null ; o ++ ) try { a ( b ) . triggerHandler ( "remove" ) } catch ( d ) { } f ( m ) } } else { var c = a . fn . remove ; a . fn . remove = function ( m , o ) { return this . each ( function ( ) { o || ( ! m || a . filter ( m , [ this ] ) . length ) && a ( "*" , this ) . add ( [ this ] ) . each ( function ( ) { try { a ( this ) . triggerHandler ( "remove" ) } catch ( b ) { } } ) ; return c . call ( a ( this ) , m , o ) } ) } } a . widget = function ( m , o , b ) { var d = m . split ( "." ) [ 0 ] , e ; m = m . split ( "." ) [ 1 ] ; e = d + "-" + m ; b || ( b = o , o = a . Widget ) ; a . expr [ ":" ] [ e ] =
function ( l ) { return ! ! a . data ( l , m ) } ; a [ d ] = a [ d ] || { } ; a [ d ] [ m ] = function ( l , u ) { arguments . length && this . _createWidget ( l , u ) } ; o = new o ; o . options = a . extend ( true , { } , o . options ) ; a [ d ] [ m ] . prototype = a . extend ( true , o , { namespace : d , widgetName : m , widgetEventPrefix : a [ d ] [ m ] . prototype . widgetEventPrefix || m , widgetBaseClass : e } , b ) ; a . widget . bridge ( m , a [ d ] [ m ] ) } ; a . widget . bridge = function ( m , o ) { a . fn [ m ] = function ( b ) { var d = typeof b == "string" , e = Array . prototype . slice . call ( arguments , 1 ) , l = this ; b = ! d && e . length ? a . extend . apply ( null , [ true , b ] . concat ( e ) ) :
2012-07-14 00:14:24 +00:00
b ; if ( d && b . charAt ( 0 ) === "_" ) return l ; d ? this . each ( function ( ) { var u = a . data ( this , m ) , w = u && a . isFunction ( u [ b ] ) ? u [ b ] . apply ( u , e ) : u ; if ( w !== u && w !== n ) { l = w ; return false } } ) : this . each ( function ( ) { var u = a . data ( this , m ) ; u ? u . option ( b || { } ) . _init ( ) : a . data ( this , m , new o ( b , this ) ) } ) ; return l } } ; a . Widget = function ( m , o ) { arguments . length && this . _createWidget ( m , o ) } ; a . Widget . prototype = { widgetName : "widget" , widgetEventPrefix : "" , options : { disabled : false } , _createWidget : function ( m , o ) { a . data ( o , this . widgetName , this ) ; this . element = a ( o ) ; this . options =
2012-06-23 19:40:40 +00:00
a . extend ( true , { } , this . options , this . _getCreateOptions ( ) , m ) ; var b = this ; this . element . bind ( "remove." + this . widgetName , function ( ) { b . destroy ( ) } ) ; this . _create ( ) ; this . _trigger ( "create" ) ; this . _init ( ) } , _getCreateOptions : function ( ) { return a . metadata && a . metadata . get ( this . element [ 0 ] ) [ this . widgetName ] } , _create : function ( ) { } , _init : function ( ) { } , destroy : function ( ) { this . element . unbind ( "." + this . widgetName ) . removeData ( this . widgetName ) ; this . widget ( ) . unbind ( "." + this . widgetName ) . removeAttr ( "aria-disabled" ) . removeClass ( this . widgetBaseClass +
2012-07-04 14:42:50 +00:00
"-disabled ui-state-disabled" ) } , widget : function ( ) { return this . element } , option : function ( m , o ) { var b = m ; if ( arguments . length === 0 ) return a . extend ( { } , this . options ) ; if ( typeof m == "string" ) { if ( o === n ) return this . options [ m ] ; b = { } ; b [ m ] = o } this . _setOptions ( b ) ; return this } , _setOptions : function ( m ) { var o = this ; a . each ( m , function ( b , d ) { o . _setOption ( b , d ) } ) ; return this } , _setOption : function ( m , o ) { this . options [ m ] = o ; m === "disabled" && this . widget ( ) [ o ? "addClass" : "removeClass" ] ( this . widgetBaseClass + "-disabled ui-state-disabled" ) . attr ( "aria-disabled" ,
o ) ; return this } , enable : function ( ) { return this . _setOption ( "disabled" , false ) } , disable : function ( ) { return this . _setOption ( "disabled" , true ) } , _trigger : function ( m , o , b ) { var d , e = this . options [ m ] ; b = b || { } ; o = a . Event ( o ) ; o . type = ( m === this . widgetEventPrefix ? m : this . widgetEventPrefix + m ) . toLowerCase ( ) ; o . target = this . element [ 0 ] ; if ( m = o . originalEvent ) for ( d in m ) d in o || ( o [ d ] = m [ d ] ) ; this . element . trigger ( o , b ) ; return ! ( a . isFunction ( e ) && e . call ( this . element [ 0 ] , o , b ) === false || o . isDefaultPrevented ( ) ) } } } ) ( jQuery ) ;
2012-06-23 19:40:40 +00:00
( function ( a ) { var n = false ; a ( document ) . mouseup ( function ( ) { n = false } ) ; a . widget ( "ui.mouse" , { options : { cancel : ":input,option" , distance : 1 , delay : 0 } , _mouseInit : function ( ) { var f = this ; this . element . bind ( "mousedown." + this . widgetName , function ( c ) { return f . _mouseDown ( c ) } ) . bind ( "click." + this . widgetName , function ( c ) { if ( true === a . data ( c . target , f . widgetName + ".preventClickEvent" ) ) { a . removeData ( c . target , f . widgetName + ".preventClickEvent" ) ; c . stopImmediatePropagation ( ) ; return false } } ) ; this . started = false } , _mouseDestroy : function ( ) { this . element . unbind ( "." +
2012-07-04 14:42:50 +00:00
this . widgetName ) } , _mouseDown : function ( f ) { if ( ! n ) { this . _mouseStarted && this . _mouseUp ( f ) ; this . _mouseDownEvent = f ; var c = this , m = f . which == 1 , o = typeof this . options . cancel == "string" && f . target . nodeName ? a ( f . target ) . closest ( this . options . cancel ) . length : false ; if ( ! m || o || ! this . _mouseCapture ( f ) ) return true ; ( this . mouseDelayMet = ! this . options . delay ) || ( this . _mouseDelayTimer = setTimeout ( function ( ) { c . mouseDelayMet = true } , this . options . delay ) ) ; if ( this . _mouseDistanceMet ( f ) && this . _mouseDelayMet ( f ) ) { this . _mouseStarted = this . _mouseStart ( f ) !==
2012-06-23 19:40:40 +00:00
false ; if ( ! this . _mouseStarted ) { f . preventDefault ( ) ; return true } } true === a . data ( f . target , this . widgetName + ".preventClickEvent" ) && a . removeData ( f . target , this . widgetName + ".preventClickEvent" ) ; this . _mouseMoveDelegate = function ( b ) { return c . _mouseMove ( b ) } ; this . _mouseUpDelegate = function ( b ) { return c . _mouseUp ( b ) } ; a ( document ) . bind ( "mousemove." + this . widgetName , this . _mouseMoveDelegate ) . bind ( "mouseup." + this . widgetName , this . _mouseUpDelegate ) ; f . preventDefault ( ) ; return n = true } } , _mouseMove : function ( f ) { if ( a . browser . msie &&
! ( document . documentMode >= 9 ) && ! f . button ) return this . _mouseUp ( f ) ; if ( this . _mouseStarted ) { this . _mouseDrag ( f ) ; return f . preventDefault ( ) } this . _mouseDistanceMet ( f ) && this . _mouseDelayMet ( f ) && ( this . _mouseStarted = this . _mouseStart ( this . _mouseDownEvent , f ) !== false , this . _mouseStarted ? this . _mouseDrag ( f ) : this . _mouseUp ( f ) ) ; return ! this . _mouseStarted } , _mouseUp : function ( f ) { a ( document ) . unbind ( "mousemove." + this . widgetName , this . _mouseMoveDelegate ) . unbind ( "mouseup." + this . widgetName , this . _mouseUpDelegate ) ; this . _mouseStarted &&
( this . _mouseStarted = false , f . target == this . _mouseDownEvent . target && a . data ( f . target , this . widgetName + ".preventClickEvent" , true ) , this . _mouseStop ( f ) ) ; return false } , _mouseDistanceMet : function ( f ) { return Math . max ( Math . abs ( this . _mouseDownEvent . pageX - f . pageX ) , Math . abs ( this . _mouseDownEvent . pageY - f . pageY ) ) >= this . options . distance } , _mouseDelayMet : function ( ) { return this . mouseDelayMet } , _mouseStart : function ( ) { } , _mouseDrag : function ( ) { } , _mouseStop : function ( ) { } , _mouseCapture : function ( ) { return true } } ) } ) ( jQuery ) ;
( function ( a ) { a . widget ( "ui.draggable" , a . ui . mouse , { widgetEventPrefix : "drag" , options : { addClasses : true , appendTo : "parent" , axis : false , connectToSortable : false , containment : false , cursor : "auto" , cursorAt : false , grid : false , handle : false , helper : "original" , iframeFix : false , opacity : false , refreshPositions : false , revert : false , revertDuration : 500 , scope : "default" , scroll : true , scrollSensitivity : 20 , scrollSpeed : 20 , snap : false , snapMode : "both" , snapTolerance : 20 , stack : false , zIndex : false } , _create : function ( ) { this . options . helper == "original" &&
! /^(?:r|a|f)/ . test ( this . element . css ( "position" ) ) && ( this . element [ 0 ] . style . position = "relative" ) ; this . options . addClasses && this . element . addClass ( "ui-draggable" ) ; this . options . disabled && this . element . addClass ( "ui-draggable-disabled" ) ; this . _mouseInit ( ) } , destroy : function ( ) { if ( this . element . data ( "draggable" ) ) { this . element . removeData ( "draggable" ) . unbind ( ".draggable" ) . removeClass ( "ui-draggable ui-draggable-dragging ui-draggable-disabled" ) ; this . _mouseDestroy ( ) ; return this } } , _mouseCapture : function ( n ) { var f = this . options ;
if ( this . helper || f . disabled || a ( n . target ) . is ( ".ui-resizable-handle" ) ) return false ; this . handle = this . _getHandle ( n ) ; if ( ! this . handle ) return false ; f . iframeFix && a ( f . iframeFix === true ? "iframe" : f . iframeFix ) . each ( function ( ) { a ( '<div class="ui-draggable-iframeFix" style="background: #fff;"></div>' ) . css ( { width : this . offsetWidth + "px" , height : this . offsetHeight + "px" , position : "absolute" , opacity : "0.001" , zIndex : 1E3 } ) . css ( a ( this ) . offset ( ) ) . appendTo ( "body" ) } ) ; return true } , _mouseStart : function ( n ) { var f = this . options ; this . helper =
this . _createHelper ( n ) ; this . _cacheHelperProportions ( ) ; a . ui . ddmanager && ( a . ui . ddmanager . current = this ) ; this . _cacheMargins ( ) ; this . cssPosition = this . helper . css ( "position" ) ; this . scrollParent = this . helper . scrollParent ( ) ; this . offset = this . positionAbs = this . element . offset ( ) ; this . offset = { top : this . offset . top - this . margins . top , left : this . offset . left - this . margins . left } ; a . extend ( this . offset , { click : { left : n . pageX - this . offset . left , top : n . pageY - this . offset . top } , parent : this . _getParentOffset ( ) , relative : this . _getRelativeOffset ( ) } ) ;
this . originalPosition = this . position = this . _generatePosition ( n ) ; this . originalPageX = n . pageX ; this . originalPageY = n . pageY ; f . cursorAt && this . _adjustOffsetFromHelper ( f . cursorAt ) ; f . containment && this . _setContainment ( ) ; if ( this . _trigger ( "start" , n ) === false ) { this . _clear ( ) ; return false } this . _cacheHelperProportions ( ) ; a . ui . ddmanager && ! f . dropBehaviour && a . ui . ddmanager . prepareOffsets ( this , n ) ; this . helper . addClass ( "ui-draggable-dragging" ) ; this . _mouseDrag ( n , true ) ; a . ui . ddmanager && a . ui . ddmanager . dragStart ( this , n ) ; return true } ,
_mouseDrag : function ( n , f ) { this . position = this . _generatePosition ( n ) ; this . positionAbs = this . _convertPositionTo ( "absolute" ) ; if ( ! f ) { var c = this . _uiHash ( ) ; if ( this . _trigger ( "drag" , n , c ) === false ) { this . _mouseUp ( { } ) ; return false } this . position = c . position } if ( ! this . options . axis || this . options . axis != "y" ) this . helper [ 0 ] . style . left = this . position . left + "px" ; if ( ! this . options . axis || this . options . axis != "x" ) this . helper [ 0 ] . style . top = this . position . top + "px" ; a . ui . ddmanager && a . ui . ddmanager . drag ( this , n ) ; return false } , _mouseStop : function ( n ) { var f =
false ; a . ui . ddmanager && ! this . options . dropBehaviour && ( f = a . ui . ddmanager . drop ( this , n ) ) ; this . dropped && ( f = this . dropped , this . dropped = false ) ; if ( ( ! this . element [ 0 ] || ! this . element [ 0 ] . parentNode ) && this . options . helper == "original" ) return false ; if ( this . options . revert == "invalid" && ! f || this . options . revert == "valid" && f || this . options . revert === true || a . isFunction ( this . options . revert ) && this . options . revert . call ( this . element , f ) ) { var c = this ; a ( this . helper ) . animate ( this . originalPosition , parseInt ( this . options . revertDuration , 10 ) ,
function ( ) { c . _trigger ( "stop" , n ) !== false && c . _clear ( ) } ) } else this . _trigger ( "stop" , n ) !== false && this . _clear ( ) ; return false } , _mouseUp : function ( n ) { this . options . iframeFix === true && a ( "div.ui-draggable-iframeFix" ) . each ( function ( ) { this . parentNode . removeChild ( this ) } ) ; a . ui . ddmanager && a . ui . ddmanager . dragStop ( this , n ) ; return a . ui . mouse . prototype . _mouseUp . call ( this , n ) } , cancel : function ( ) { this . helper . is ( ".ui-draggable-dragging" ) ? this . _mouseUp ( { } ) : this . _clear ( ) ; return this } , _getHandle : function ( n ) { var f = ! this . options . handle ||
! a ( this . options . handle , this . element ) . length ? true : false ; a ( this . options . handle , this . element ) . find ( "*" ) . andSelf ( ) . each ( function ( ) { this == n . target && ( f = true ) } ) ; return f } , _createHelper : function ( n ) { var f = this . options ; n = a . isFunction ( f . helper ) ? a ( f . helper . apply ( this . element [ 0 ] , [ n ] ) ) : f . helper == "clone" ? this . element . clone ( ) . removeAttr ( "id" ) : this . element ; n . parents ( "body" ) . length || n . appendTo ( f . appendTo == "parent" ? this . element [ 0 ] . parentNode : f . appendTo ) ; n [ 0 ] != this . element [ 0 ] && ! /(fixed|absolute)/ . test ( n . css ( "position" ) ) &&
n . css ( "position" , "absolute" ) ; return n } , _adjustOffsetFromHelper : function ( n ) { typeof n == "string" && ( n = n . split ( " " ) ) ; a . isArray ( n ) && ( n = { left : + n [ 0 ] , top : + n [ 1 ] || 0 } ) ; "left" in n && ( this . offset . click . left = n . left + this . margins . left ) ; "right" in n && ( this . offset . click . left = this . helperProportions . width - n . right + this . margins . left ) ; "top" in n && ( this . offset . click . top = n . top + this . margins . top ) ; "bottom" in n && ( this . offset . click . top = this . helperProportions . height - n . bottom + this . margins . top ) } , _getParentOffset : function ( ) { this . offsetParent =
this . helper . offsetParent ( ) ; var n = this . offsetParent . offset ( ) ; this . cssPosition == "absolute" && this . scrollParent [ 0 ] != document && a . ui . contains ( this . scrollParent [ 0 ] , this . offsetParent [ 0 ] ) && ( n . left += this . scrollParent . scrollLeft ( ) , n . top += this . scrollParent . scrollTop ( ) ) ; if ( this . offsetParent [ 0 ] == document . body || this . offsetParent [ 0 ] . tagName && this . offsetParent [ 0 ] . tagName . toLowerCase ( ) == "html" && a . browser . msie ) n = { top : 0 , left : 0 } ; return { top : n . top + ( parseInt ( this . offsetParent . css ( "borderTopWidth" ) , 10 ) || 0 ) , left : n . left + ( parseInt ( this . offsetParent . css ( "borderLeftWidth" ) ,
10 ) || 0 ) } } , _getRelativeOffset : function ( ) { if ( this . cssPosition == "relative" ) { var n = this . element . position ( ) ; return { top : n . top - ( parseInt ( this . helper . css ( "top" ) , 10 ) || 0 ) + this . scrollParent . scrollTop ( ) , left : n . left - ( parseInt ( this . helper . css ( "left" ) , 10 ) || 0 ) + this . scrollParent . scrollLeft ( ) } } return { top : 0 , left : 0 } } , _cacheMargins : function ( ) { this . margins = { left : parseInt ( this . element . css ( "marginLeft" ) , 10 ) || 0 , top : parseInt ( this . element . css ( "marginTop" ) , 10 ) || 0 , right : parseInt ( this . element . css ( "marginRight" ) , 10 ) || 0 , bottom : parseInt ( this . element . css ( "marginBottom" ) ,
10 ) || 0 } } , _cacheHelperProportions : function ( ) { this . helperProportions = { width : this . helper . outerWidth ( ) , height : this . helper . outerHeight ( ) } } , _setContainment : function ( ) { var n = this . options ; n . containment == "parent" && ( n . containment = this . helper [ 0 ] . parentNode ) ; if ( n . containment == "document" || n . containment == "window" ) this . containment = [ n . containment == "document" ? 0 : a ( window ) . scrollLeft ( ) - this . offset . relative . left - this . offset . parent . left , n . containment == "document" ? 0 : a ( window ) . scrollTop ( ) - this . offset . relative . top - this . offset . parent . top ,
( n . containment == "document" ? 0 : a ( window ) . scrollLeft ( ) ) + a ( n . containment == "document" ? document : window ) . width ( ) - this . helperProportions . width - this . margins . left , ( n . containment == "document" ? 0 : a ( window ) . scrollTop ( ) ) + ( a ( n . containment == "document" ? document : window ) . height ( ) || document . body . parentNode . scrollHeight ) - this . helperProportions . height - this . margins . top ] ; if ( ! /^(document|window|parent)$/ . test ( n . containment ) && n . containment . constructor != Array ) { n = a ( n . containment ) ; var f = n [ 0 ] ; if ( f ) { n . offset ( ) ; var c = a ( f ) . css ( "overflow" ) !=
"hidden" ; this . containment = [ ( parseInt ( a ( f ) . css ( "borderLeftWidth" ) , 10 ) || 0 ) + ( parseInt ( a ( f ) . css ( "paddingLeft" ) , 10 ) || 0 ) , ( parseInt ( a ( f ) . css ( "borderTopWidth" ) , 10 ) || 0 ) + ( parseInt ( a ( f ) . css ( "paddingTop" ) , 10 ) || 0 ) , ( c ? Math . max ( f . scrollWidth , f . offsetWidth ) : f . offsetWidth ) - ( parseInt ( a ( f ) . css ( "borderLeftWidth" ) , 10 ) || 0 ) - ( parseInt ( a ( f ) . css ( "paddingRight" ) , 10 ) || 0 ) - this . helperProportions . width - this . margins . left - this . margins . right , ( c ? Math . max ( f . scrollHeight , f . offsetHeight ) : f . offsetHeight ) - ( parseInt ( a ( f ) . css ( "borderTopWidth" ) ,
2012-07-04 14:42:50 +00:00
10 ) || 0 ) - ( parseInt ( a ( f ) . css ( "paddingBottom" ) , 10 ) || 0 ) - this . helperProportions . height - this . margins . top - this . margins . bottom ] ; this . relative _container = n } } else n . containment . constructor == Array && ( this . containment = n . containment ) } , _convertPositionTo : function ( n , f ) { f || ( f = this . position ) ; var c = n == "absolute" ? 1 : - 1 , m = this . cssPosition == "absolute" && ( this . scrollParent [ 0 ] == document || ! a . ui . contains ( this . scrollParent [ 0 ] , this . offsetParent [ 0 ] ) ) ? this . offsetParent : this . scrollParent , o = /(html|body)/i . test ( m [ 0 ] . tagName ) ; return { top : f . top +
this . offset . relative . top * c + this . offset . parent . top * c - ( a . browser . safari && a . browser . version < 526 && this . cssPosition == "fixed" ? 0 : ( this . cssPosition == "fixed" ? - this . scrollParent . scrollTop ( ) : o ? 0 : m . scrollTop ( ) ) * c ) , left : f . left + this . offset . relative . left * c + this . offset . parent . left * c - ( a . browser . safari && a . browser . version < 526 && this . cssPosition == "fixed" ? 0 : ( this . cssPosition == "fixed" ? - this . scrollParent . scrollLeft ( ) : o ? 0 : m . scrollLeft ( ) ) * c ) } } , _generatePosition : function ( n ) { var f = this . options , c = this . cssPosition == "absolute" &&
( this . scrollParent [ 0 ] == document || ! a . ui . contains ( this . scrollParent [ 0 ] , this . offsetParent [ 0 ] ) ) ? this . offsetParent : this . scrollParent , m = /(html|body)/i . test ( c [ 0 ] . tagName ) , o = n . pageX , b = n . pageY ; if ( this . originalPosition ) { var d ; if ( this . containment ) { if ( this . relative _container ) { d = this . relative _container . offset ( ) ; d = [ this . containment [ 0 ] + d . left , this . containment [ 1 ] + d . top , this . containment [ 2 ] + d . left , this . containment [ 3 ] + d . top ] } else d = this . containment ; n . pageX - this . offset . click . left < d [ 0 ] && ( o = d [ 0 ] + this . offset . click . left ) ;
n . pageY - this . offset . click . top < d [ 1 ] && ( b = d [ 1 ] + this . offset . click . top ) ; n . pageX - this . offset . click . left > d [ 2 ] && ( o = d [ 2 ] + this . offset . click . left ) ; n . pageY - this . offset . click . top > d [ 3 ] && ( b = d [ 3 ] + this . offset . click . top ) } if ( f . grid ) { b = f . grid [ 1 ] ? this . originalPageY + Math . round ( ( b - this . originalPageY ) / f . grid [ 1 ] ) * f . grid [ 1 ] : this . originalPageY ; b = d ? b - this . offset . click . top < d [ 1 ] || b - this . offset . click . top > d [ 3 ] ? b - this . offset . click . top < d [ 1 ] ? b + f . grid [ 1 ] : b - f . grid [ 1 ] : b : b ; o = f . grid [ 0 ] ? this . originalPageX + Math . round ( ( o - this . originalPageX ) /
f . grid [ 0 ] ) * f . grid [ 0 ] : this . originalPageX ; o = d ? o - this . offset . click . left < d [ 0 ] || o - this . offset . click . left > d [ 2 ] ? o - this . offset . click . left < d [ 0 ] ? o + f . grid [ 0 ] : o - f . grid [ 0 ] : o : o } } return { top : b - this . offset . click . top - this . offset . relative . top - this . offset . parent . top + ( a . browser . safari && a . browser . version < 526 && this . cssPosition == "fixed" ? 0 : this . cssPosition == "fixed" ? - this . scrollParent . scrollTop ( ) : m ? 0 : c . scrollTop ( ) ) , left : o - this . offset . click . left - this . offset . relative . left - this . offset . parent . left + ( a . browser . safari && a . browser . version <
2012-06-23 19:40:40 +00:00
526 && this . cssPosition == "fixed" ? 0 : this . cssPosition == "fixed" ? - this . scrollParent . scrollLeft ( ) : m ? 0 : c . scrollLeft ( ) ) } } , _clear : function ( ) { this . helper . removeClass ( "ui-draggable-dragging" ) ; this . helper [ 0 ] != this . element [ 0 ] && ! this . cancelHelperRemoval && this . helper . remove ( ) ; this . helper = null ; this . cancelHelperRemoval = false } , _trigger : function ( n , f , c ) { c = c || this . _uiHash ( ) ; a . ui . plugin . call ( this , n , [ f , c ] ) ; n == "drag" && ( this . positionAbs = this . _convertPositionTo ( "absolute" ) ) ; return a . Widget . prototype . _trigger . call ( this , n , f ,
2012-07-04 14:42:50 +00:00
c ) } , plugins : { } , _uiHash : function ( ) { return { helper : this . helper , position : this . position , originalPosition : this . originalPosition , offset : this . positionAbs } } } ) ; a . extend ( a . ui . draggable , { version : "1.8.17" } ) ; a . ui . plugin . add ( "draggable" , "connectToSortable" , { start : function ( n , f ) { var c = a ( this ) . data ( "draggable" ) , m = c . options , o = a . extend ( { } , f , { item : c . element } ) ; c . sortables = [ ] ; a ( m . connectToSortable ) . each ( function ( ) { var b = a . data ( this , "sortable" ) ; b && ! b . options . disabled && ( c . sortables . push ( { instance : b , shouldRevert : b . options . revert } ) ,
b . refreshPositions ( ) , b . _trigger ( "activate" , n , o ) ) } ) } , stop : function ( n , f ) { var c = a ( this ) . data ( "draggable" ) , m = a . extend ( { } , f , { item : c . element } ) ; a . each ( c . sortables , function ( ) { this . instance . isOver ? ( this . instance . isOver = 0 , c . cancelHelperRemoval = true , this . instance . cancelHelperRemoval = false , this . shouldRevert && ( this . instance . options . revert = true ) , this . instance . _mouseStop ( n ) , this . instance . options . helper = this . instance . options . _helper , c . options . helper == "original" && this . instance . currentItem . css ( { top : "auto" , left : "auto" } ) ) :
2012-06-23 19:40:40 +00:00
( this . instance . cancelHelperRemoval = false , this . instance . _trigger ( "deactivate" , n , m ) ) } ) } , drag : function ( n , f ) { var c = a ( this ) . data ( "draggable" ) , m = this ; a . each ( c . sortables , function ( ) { this . instance . positionAbs = c . positionAbs ; this . instance . helperProportions = c . helperProportions ; this . instance . offset . click = c . offset . click ; this . instance . _intersectsWith ( this . instance . containerCache ) ? ( this . instance . isOver || ( this . instance . isOver = 1 , this . instance . currentItem = a ( m ) . clone ( ) . removeAttr ( "id" ) . appendTo ( this . instance . element ) . data ( "sortable-item" ,
true ) , this . instance . options . _helper = this . instance . options . helper , this . instance . options . helper = function ( ) { return f . helper [ 0 ] } , n . target = this . instance . currentItem [ 0 ] , this . instance . _mouseCapture ( n , true ) , this . instance . _mouseStart ( n , true , true ) , this . instance . offset . click . top = c . offset . click . top , this . instance . offset . click . left = c . offset . click . left , this . instance . offset . parent . left -= c . offset . parent . left - this . instance . offset . parent . left , this . instance . offset . parent . top -= c . offset . parent . top - this . instance . offset . parent . top ,
c . _trigger ( "toSortable" , n ) , c . dropped = this . instance . element , c . currentItem = c . element , this . instance . fromOutside = c ) , this . instance . currentItem && this . instance . _mouseDrag ( n ) ) : this . instance . isOver && ( this . instance . isOver = 0 , this . instance . cancelHelperRemoval = true , this . instance . options . revert = false , this . instance . _trigger ( "out" , n , this . instance . _uiHash ( this . instance ) ) , this . instance . _mouseStop ( n , true ) , this . instance . options . helper = this . instance . options . _helper , this . instance . currentItem . remove ( ) , this . instance . placeholder &&
this . instance . placeholder . remove ( ) , c . _trigger ( "fromSortable" , n ) , c . dropped = false ) } ) } } ) ; a . ui . plugin . add ( "draggable" , "cursor" , { start : function ( ) { var n = a ( "body" ) , f = a ( this ) . data ( "draggable" ) . options ; n . css ( "cursor" ) && ( f . _cursor = n . css ( "cursor" ) ) ; n . css ( "cursor" , f . cursor ) } , stop : function ( ) { var n = a ( this ) . data ( "draggable" ) . options ; n . _cursor && a ( "body" ) . css ( "cursor" , n . _cursor ) } } ) ; a . ui . plugin . add ( "draggable" , "opacity" , { start : function ( n , f ) { var c = a ( f . helper ) , m = a ( this ) . data ( "draggable" ) . options ; c . css ( "opacity" ) && ( m . _opacity =
c . css ( "opacity" ) ) ; c . css ( "opacity" , m . opacity ) } , stop : function ( n , f ) { var c = a ( this ) . data ( "draggable" ) . options ; c . _opacity && a ( f . helper ) . css ( "opacity" , c . _opacity ) } } ) ; a . ui . plugin . add ( "draggable" , "scroll" , { start : function ( ) { var n = a ( this ) . data ( "draggable" ) ; n . scrollParent [ 0 ] != document && n . scrollParent [ 0 ] . tagName != "HTML" && ( n . overflowOffset = n . scrollParent . offset ( ) ) } , drag : function ( n ) { var f = a ( this ) . data ( "draggable" ) , c = f . options , m = false ; if ( f . scrollParent [ 0 ] != document && f . scrollParent [ 0 ] . tagName != "HTML" ) { if ( ! c . axis ||
c . axis != "x" ) f . overflowOffset . top + f . scrollParent [ 0 ] . offsetHeight - n . pageY < c . scrollSensitivity ? f . scrollParent [ 0 ] . scrollTop = m = f . scrollParent [ 0 ] . scrollTop + c . scrollSpeed : n . pageY - f . overflowOffset . top < c . scrollSensitivity && ( f . scrollParent [ 0 ] . scrollTop = m = f . scrollParent [ 0 ] . scrollTop - c . scrollSpeed ) ; if ( ! c . axis || c . axis != "y" ) f . overflowOffset . left + f . scrollParent [ 0 ] . offsetWidth - n . pageX < c . scrollSensitivity ? f . scrollParent [ 0 ] . scrollLeft = m = f . scrollParent [ 0 ] . scrollLeft + c . scrollSpeed : n . pageX - f . overflowOffset . left < c . scrollSensitivity &&
( f . scrollParent [ 0 ] . scrollLeft = m = f . scrollParent [ 0 ] . scrollLeft - c . scrollSpeed ) } else { if ( ! c . axis || c . axis != "x" ) n . pageY - a ( document ) . scrollTop ( ) < c . scrollSensitivity ? m = a ( document ) . scrollTop ( a ( document ) . scrollTop ( ) - c . scrollSpeed ) : a ( window ) . height ( ) - ( n . pageY - a ( document ) . scrollTop ( ) ) < c . scrollSensitivity && ( m = a ( document ) . scrollTop ( a ( document ) . scrollTop ( ) + c . scrollSpeed ) ) ; if ( ! c . axis || c . axis != "y" ) n . pageX - a ( document ) . scrollLeft ( ) < c . scrollSensitivity ? m = a ( document ) . scrollLeft ( a ( document ) . scrollLeft ( ) - c . scrollSpeed ) :
a ( window ) . width ( ) - ( n . pageX - a ( document ) . scrollLeft ( ) ) < c . scrollSensitivity && ( m = a ( document ) . scrollLeft ( a ( document ) . scrollLeft ( ) + c . scrollSpeed ) ) } m !== false && a . ui . ddmanager && ! c . dropBehaviour && a . ui . ddmanager . prepareOffsets ( f , n ) } } ) ; a . ui . plugin . add ( "draggable" , "snap" , { start : function ( ) { var n = a ( this ) . data ( "draggable" ) , f = n . options ; n . snapElements = [ ] ; a ( f . snap . constructor != String ? f . snap . items || ":data(draggable)" : f . snap ) . each ( function ( ) { var c = a ( this ) , m = c . offset ( ) ; this != n . element [ 0 ] && n . snapElements . push ( { item : this ,
2012-07-14 00:14:24 +00:00
width : c . outerWidth ( ) , height : c . outerHeight ( ) , top : m . top , left : m . left } ) } ) } , drag : function ( n , f ) { for ( var c = a ( this ) . data ( "draggable" ) , m = c . options , o = m . snapTolerance , b = f . offset . left , d = b + c . helperProportions . width , e = f . offset . top , l = e + c . helperProportions . height , u = c . snapElements . length - 1 ; u >= 0 ; u -- ) { var w = c . snapElements [ u ] . left , p = w + c . snapElements [ u ] . width , L = c . snapElements [ u ] . top , T = L + c . snapElements [ u ] . height ; if ( w - o < b && b < p + o && L - o < e && e < T + o || w - o < b && b < p + o && L - o < l && l < T + o || w - o < d && d < p + o && L - o < e && e < T + o || w - o < d && d < p + o && L - o < l &&
2012-07-14 02:04:34 +00:00
l < T + o ) { if ( m . snapMode != "inner" ) { var N = Math . abs ( L - l ) <= o , K = Math . abs ( T - e ) <= o , da = Math . abs ( w - d ) <= o , V = Math . abs ( p - b ) <= o ; N && ( f . position . top = c . _convertPositionTo ( "relative" , { top : L - c . helperProportions . height , left : 0 } ) . top - c . margins . top ) ; K && ( f . position . top = c . _convertPositionTo ( "relative" , { top : T , left : 0 } ) . top - c . margins . top ) ; da && ( f . position . left = c . _convertPositionTo ( "relative" , { top : 0 , left : w - c . helperProportions . width } ) . left - c . margins . left ) ; V && ( f . position . left = c . _convertPositionTo ( "relative" , { top : 0 , left : p } ) . left - c . margins . left ) } var O =
N || K || da || V ; if ( m . snapMode != "outer" ) { N = Math . abs ( L - e ) <= o ; K = Math . abs ( T - l ) <= o ; da = Math . abs ( w - b ) <= o ; V = Math . abs ( p - d ) <= o ; N && ( f . position . top = c . _convertPositionTo ( "relative" , { top : L , left : 0 } ) . top - c . margins . top ) ; K && ( f . position . top = c . _convertPositionTo ( "relative" , { top : T - c . helperProportions . height , left : 0 } ) . top - c . margins . top ) ; da && ( f . position . left = c . _convertPositionTo ( "relative" , { top : 0 , left : w } ) . left - c . margins . left ) ; V && ( f . position . left = c . _convertPositionTo ( "relative" , { top : 0 , left : p - c . helperProportions . width } ) . left -
c . margins . left ) } ! c . snapElements [ u ] . snapping && ( N || K || da || V || O ) && c . options . snap . snap && c . options . snap . snap . call ( c . element , n , a . extend ( c . _uiHash ( ) , { snapItem : c . snapElements [ u ] . item } ) ) ; c . snapElements [ u ] . snapping = N || K || da || V || O } else { c . snapElements [ u ] . snapping && c . options . snap . release && c . options . snap . release . call ( c . element , n , a . extend ( c . _uiHash ( ) , { snapItem : c . snapElements [ u ] . item } ) ) ; c . snapElements [ u ] . snapping = false } } } } ) ; a . ui . plugin . add ( "draggable" , "stack" , { start : function ( ) { var n = a ( this ) . data ( "draggable" ) . options ;
2012-06-23 19:40:40 +00:00
n = a . makeArray ( a ( n . stack ) ) . sort ( function ( c , m ) { return ( parseInt ( a ( c ) . css ( "zIndex" ) , 10 ) || 0 ) - ( parseInt ( a ( m ) . css ( "zIndex" ) , 10 ) || 0 ) } ) ; if ( n . length ) { var f = parseInt ( n [ 0 ] . style . zIndex ) || 0 ; a ( n ) . each ( function ( c ) { this . style . zIndex = f + c } ) ; this [ 0 ] . style . zIndex = f + n . length } } } ) ; a . ui . plugin . add ( "draggable" , "zIndex" , { start : function ( n , f ) { var c = a ( f . helper ) , m = a ( this ) . data ( "draggable" ) . options ; c . css ( "zIndex" ) && ( m . _zIndex = c . css ( "zIndex" ) ) ; c . css ( "zIndex" , m . zIndex ) } , stop : function ( n , f ) { var c = a ( this ) . data ( "draggable" ) . options ;
c . _zIndex && a ( f . helper ) . css ( "zIndex" , c . _zIndex ) } } ) } ) ( jQuery ) ;
2012-07-04 14:42:50 +00:00
( function ( a ) { a . widget ( "ui.slider" , a . ui . mouse , { widgetEventPrefix : "slide" , options : { animate : false , distance : 0 , max : 100 , min : 0 , orientation : "horizontal" , range : false , step : 1 , value : 0 , values : null } , _create : function ( ) { var n = this , f = this . options , c = this . element . find ( ".ui-slider-handle" ) . addClass ( "ui-state-default ui-corner-all" ) , m = f . values && f . values . length || 1 , o = [ ] ; this . _mouseSliding = this . _keySliding = false ; this . _animateOff = true ; this . _handleIndex = null ; this . _detectOrientation ( ) ; this . _mouseInit ( ) ; this . element . addClass ( "ui-slider ui-slider-" +
this . orientation + " ui-widget ui-widget-content ui-corner-all" + ( f . disabled ? " ui-slider-disabled ui-disabled" : "" ) ) ; this . range = a ( [ ] ) ; f . range && ( f . range === true && ( f . values || ( f . values = [ this . _valueMin ( ) , this . _valueMin ( ) ] ) , f . values . length && f . values . length !== 2 && ( f . values = [ f . values [ 0 ] , f . values [ 0 ] ] ) ) , this . range = a ( "<div></div>" ) . appendTo ( this . element ) . addClass ( "ui-slider-range ui-widget-header" + ( f . range === "min" || f . range === "max" ? " ui-slider-range-" + f . range : "" ) ) ) ; for ( var b = c . length ; b < m ; b += 1 ) o . push ( "<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>" ) ;
this . handles = c . add ( a ( o . join ( "" ) ) . appendTo ( n . element ) ) ; this . handle = this . handles . eq ( 0 ) ; this . handles . add ( this . range ) . filter ( "a" ) . click ( function ( d ) { d . preventDefault ( ) } ) . hover ( function ( ) { f . disabled || a ( this ) . addClass ( "ui-state-hover" ) } , function ( ) { a ( this ) . removeClass ( "ui-state-hover" ) } ) . focus ( function ( ) { f . disabled ? a ( this ) . blur ( ) : ( a ( ".ui-slider .ui-state-focus" ) . removeClass ( "ui-state-focus" ) , a ( this ) . addClass ( "ui-state-focus" ) ) } ) . blur ( function ( ) { a ( this ) . removeClass ( "ui-state-focus" ) } ) ; this . handles . each ( function ( d ) { a ( this ) . data ( "index.ui-slider-handle" ,
2012-07-14 00:14:24 +00:00
d ) } ) ; this . handles . keydown ( function ( d ) { var e = true , l = a ( this ) . data ( "index.ui-slider-handle" ) , u , w , p ; if ( ! n . options . disabled ) { switch ( d . keyCode ) { case a . ui . keyCode . HOME : case a . ui . keyCode . END : case a . ui . keyCode . PAGE _UP : case a . ui . keyCode . PAGE _DOWN : case a . ui . keyCode . UP : case a . ui . keyCode . RIGHT : case a . ui . keyCode . DOWN : case a . ui . keyCode . LEFT : e = false ; if ( ! n . _keySliding ) { n . _keySliding = true ; a ( this ) . addClass ( "ui-state-active" ) ; u = n . _start ( d , l ) ; if ( u === false ) return } } u = n . options . step ; n . options . values && n . options . values . length ?
w = p = n . values ( l ) : w = p = n . value ( ) ; switch ( d . keyCode ) { case a . ui . keyCode . HOME : p = n . _valueMin ( ) ; break ; case a . ui . keyCode . END : p = n . _valueMax ( ) ; break ; case a . ui . keyCode . PAGE _UP : p = n . _trimAlignValue ( w + ( n . _valueMax ( ) - n . _valueMin ( ) ) / 5 ) ; break ; case a . ui . keyCode . PAGE _DOWN : p = n . _trimAlignValue ( w - ( n . _valueMax ( ) - n . _valueMin ( ) ) / 5 ) ; break ; case a . ui . keyCode . UP : case a . ui . keyCode . RIGHT : if ( w === n . _valueMax ( ) ) return ; p = n . _trimAlignValue ( w + u ) ; break ; case a . ui . keyCode . DOWN : case a . ui . keyCode . LEFT : if ( w === n . _valueMin ( ) ) return ; p = n . _trimAlignValue ( w -
2012-07-04 14:42:50 +00:00
u ) } n . _slide ( d , l , p ) ; return e } } ) . keyup ( function ( d ) { var e = a ( this ) . data ( "index.ui-slider-handle" ) ; n . _keySliding && ( n . _keySliding = false , n . _stop ( d , e ) , n . _change ( d , e ) , a ( this ) . removeClass ( "ui-state-active" ) ) } ) ; this . _refreshValue ( ) ; this . _animateOff = false } , destroy : function ( ) { this . handles . remove ( ) ; this . range . remove ( ) ; this . element . removeClass ( "ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all" ) . removeData ( "slider" ) . unbind ( ".slider" ) ; this . _mouseDestroy ( ) ;
return this } , _mouseCapture : function ( n ) { var f = this . options , c , m , o , b , d ; if ( f . disabled ) return false ; this . elementSize = { width : this . element . outerWidth ( ) , height : this . element . outerHeight ( ) } ; this . elementOffset = this . element . offset ( ) ; c = this . _normValueFromMouse ( { x : n . pageX , y : n . pageY } ) ; m = this . _valueMax ( ) - this . _valueMin ( ) + 1 ; b = this ; this . handles . each ( function ( e ) { var l = Math . abs ( c - b . values ( e ) ) ; m > l && ( m = l , o = a ( this ) , d = e ) } ) ; f . range === true && this . values ( 1 ) === f . min && ( d += 1 , o = a ( this . handles [ d ] ) ) ; if ( this . _start ( n , d ) === false ) return false ;
this . _mouseSliding = true ; b . _handleIndex = d ; o . addClass ( "ui-state-active" ) . focus ( ) ; f = o . offset ( ) ; this . _clickOffset = ! a ( n . target ) . parents ( ) . andSelf ( ) . is ( ".ui-slider-handle" ) ? { left : 0 , top : 0 } : { left : n . pageX - f . left - o . width ( ) / 2 , top : n . pageY - f . top - o . height ( ) / 2 - ( parseInt ( o . css ( "borderTopWidth" ) , 10 ) || 0 ) - ( parseInt ( o . css ( "borderBottomWidth" ) , 10 ) || 0 ) + ( parseInt ( o . css ( "marginTop" ) , 10 ) || 0 ) } ; this . handles . hasClass ( "ui-state-hover" ) || this . _slide ( n , d , c ) ; return this . _animateOff = true } , _mouseStart : function ( ) { return true } , _mouseDrag : function ( n ) { var f =
2012-06-23 19:40:40 +00:00
this . _normValueFromMouse ( { x : n . pageX , y : n . pageY } ) ; this . _slide ( n , this . _handleIndex , f ) ; return false } , _mouseStop : function ( n ) { this . handles . removeClass ( "ui-state-active" ) ; this . _mouseSliding = false ; this . _stop ( n , this . _handleIndex ) ; this . _change ( n , this . _handleIndex ) ; this . _clickOffset = this . _handleIndex = null ; return this . _animateOff = false } , _detectOrientation : function ( ) { this . orientation = this . options . orientation === "vertical" ? "vertical" : "horizontal" } , _normValueFromMouse : function ( n ) { var f , c ; this . orientation === "horizontal" ?
( f = this . elementSize . width , c = n . x - this . elementOffset . left - ( this . _clickOffset ? this . _clickOffset . left : 0 ) ) : ( f = this . elementSize . height , c = n . y - this . elementOffset . top - ( this . _clickOffset ? this . _clickOffset . top : 0 ) ) ; n = c / f ; n > 1 && ( n = 1 ) ; n < 0 && ( n = 0 ) ; this . orientation === "vertical" && ( n = 1 - n ) ; f = this . _valueMax ( ) - this . _valueMin ( ) ; return this . _trimAlignValue ( this . _valueMin ( ) + n * f ) } , _start : function ( n , f ) { var c = { handle : this . handles [ f ] , value : this . value ( ) } ; this . options . values && this . options . values . length && ( c . value = this . values ( f ) ,
2012-07-04 14:42:50 +00:00
c . values = this . values ( ) ) ; return this . _trigger ( "start" , n , c ) } , _slide : function ( n , f , c ) { var m , o , b ; this . options . values && this . options . values . length ? ( m = this . values ( f ? 0 : 1 ) , this . options . values . length === 2 && this . options . range === true && ( f === 0 && c > m || f === 1 && c < m ) && ( c = m ) , c !== this . values ( f ) && ( o = this . values ( ) , o [ f ] = c , b = this . _trigger ( "slide" , n , { handle : this . handles [ f ] , value : c , values : o } ) , this . values ( f ? 0 : 1 ) , b !== false && this . values ( f , c , true ) ) ) : c !== this . value ( ) && ( b = this . _trigger ( "slide" , n , { handle : this . handles [ f ] , value : c } ) , b !==
2012-06-23 19:40:40 +00:00
false && this . value ( c ) ) } , _stop : function ( n , f ) { var c = { handle : this . handles [ f ] , value : this . value ( ) } ; this . options . values && this . options . values . length && ( c . value = this . values ( f ) , c . values = this . values ( ) ) ; this . _trigger ( "stop" , n , c ) } , _change : function ( n , f ) { if ( ! this . _keySliding && ! this . _mouseSliding ) { var c = { handle : this . handles [ f ] , value : this . value ( ) } ; this . options . values && this . options . values . length && ( c . value = this . values ( f ) , c . values = this . values ( ) ) ; this . _trigger ( "change" , n , c ) } } , value : function ( n ) { if ( arguments . length ) { this . options . value =
2012-07-04 14:42:50 +00:00
this . _trimAlignValue ( n ) ; this . _refreshValue ( ) ; this . _change ( null , 0 ) } else return this . _value ( ) } , values : function ( n , f ) { var c , m , o ; if ( arguments . length > 1 ) { this . options . values [ n ] = this . _trimAlignValue ( f ) ; this . _refreshValue ( ) ; this . _change ( null , n ) } else { if ( ! arguments . length ) return this . _values ( ) ; if ( ! a . isArray ( arguments [ 0 ] ) ) return this . options . values && this . options . values . length ? this . _values ( n ) : this . value ( ) ; c = this . options . values ; m = arguments [ 0 ] ; for ( o = 0 ; o < c . length ; o += 1 ) { c [ o ] = this . _trimAlignValue ( m [ o ] ) ; this . _change ( null ,
o ) } this . _refreshValue ( ) } } , _setOption : function ( n , f ) { var c , m = 0 ; a . isArray ( this . options . values ) && ( m = this . options . values . length ) ; a . Widget . prototype . _setOption . apply ( this , arguments ) ; switch ( n ) { case "disabled" : f ? ( this . handles . filter ( ".ui-state-focus" ) . blur ( ) , this . handles . removeClass ( "ui-state-hover" ) , this . handles . propAttr ( "disabled" , true ) , this . element . addClass ( "ui-disabled" ) ) : ( this . handles . propAttr ( "disabled" , false ) , this . element . removeClass ( "ui-disabled" ) ) ; break ; case "orientation" : this . _detectOrientation ( ) ;
2012-06-23 19:40:40 +00:00
this . element . removeClass ( "ui-slider-horizontal ui-slider-vertical" ) . addClass ( "ui-slider-" + this . orientation ) ; this . _refreshValue ( ) ; break ; case "value" : this . _animateOff = true ; this . _refreshValue ( ) ; this . _change ( null , 0 ) ; this . _animateOff = false ; break ; case "values" : this . _animateOff = true ; this . _refreshValue ( ) ; for ( c = 0 ; c < m ; c += 1 ) this . _change ( null , c ) ; this . _animateOff = false } } , _value : function ( ) { var n = this . options . value ; return n = this . _trimAlignValue ( n ) } , _values : function ( n ) { var f , c ; if ( arguments . length ) { f = this . options . values [ n ] ;
return f = this . _trimAlignValue ( f ) } f = this . options . values . slice ( ) ; for ( c = 0 ; c < f . length ; c += 1 ) f [ c ] = this . _trimAlignValue ( f [ c ] ) ; return f } , _trimAlignValue : function ( n ) { if ( n <= this . _valueMin ( ) ) return this . _valueMin ( ) ; if ( n >= this . _valueMax ( ) ) return this . _valueMax ( ) ; var f = this . options . step > 0 ? this . options . step : 1 , c = ( n - this . _valueMin ( ) ) % f ; n = n - c ; Math . abs ( c ) * 2 >= f && ( n += c > 0 ? f : - f ) ; return parseFloat ( n . toFixed ( 5 ) ) } , _valueMin : function ( ) { return this . options . min } , _valueMax : function ( ) { return this . options . max } , _refreshValue : function ( ) { var n =
2012-07-14 00:14:24 +00:00
this . options . range , f = this . options , c = this , m = this . _animateOff ? false : f . animate , o , b = { } , d , e , l , u ; this . options . values && this . options . values . length ? this . handles . each ( function ( w ) { o = ( c . values ( w ) - c . _valueMin ( ) ) / ( c . _valueMax ( ) - c . _valueMin ( ) ) * 100 ; b [ c . orientation === "horizontal" ? "left" : "bottom" ] = o + "%" ; a ( this ) . stop ( 1 , 1 ) [ m ? "animate" : "css" ] ( b , f . animate ) ; c . options . range === true && ( c . orientation === "horizontal" ? ( w === 0 && c . range . stop ( 1 , 1 ) [ m ? "animate" : "css" ] ( { left : o + "%" } , f . animate ) , w === 1 && c . range [ m ? "animate" : "css" ] ( { width : o -
d + "%" } , { queue : false , duration : f . animate } ) ) : ( w === 0 && c . range . stop ( 1 , 1 ) [ m ? "animate" : "css" ] ( { bottom : o + "%" } , f . animate ) , w === 1 && c . range [ m ? "animate" : "css" ] ( { height : o - d + "%" } , { queue : false , duration : f . animate } ) ) ) ; d = o } ) : ( e = this . value ( ) , l = this . _valueMin ( ) , u = this . _valueMax ( ) , o = u !== l ? ( e - l ) / ( u - l ) * 100 : 0 , b [ c . orientation === "horizontal" ? "left" : "bottom" ] = o + "%" , this . handle . stop ( 1 , 1 ) [ m ? "animate" : "css" ] ( b , f . animate ) , n === "min" && this . orientation === "horizontal" && this . range . stop ( 1 , 1 ) [ m ? "animate" : "css" ] ( { width : o + "%" } , f . animate ) ,
2012-07-14 02:04:34 +00:00
n === "max" && this . orientation === "horizontal" && this . range [ m ? "animate" : "css" ] ( { width : 100 - o + "%" } , { queue : false , duration : f . animate } ) , n === "min" && this . orientation === "vertical" && this . range . stop ( 1 , 1 ) [ m ? "animate" : "css" ] ( { height : o + "%" } , f . animate ) , n === "max" && this . orientation === "vertical" && this . range [ m ? "animate" : "css" ] ( { height : 100 - o + "%" } , { queue : false , duration : f . animate } ) ) } } ) ; a . extend ( a . ui . slider , { version : "1.8.17" } ) } ) ( jQuery ) ; ( function ( a ) { Math . precision = function ( b , d ) { if ( d === undefined ) d = 0 ; return Math . round ( b * Math . pow ( 10 , d ) ) / Math . pow ( 10 , d ) } ; var n = function ( b , d ) { var e = this , l = b . find ( "img:first" ) , u = 0 , w = 100 , p = 100 , L = 0 , T = 100 , N = 100 , K = 0 , da = 0 , V , O , fa = [ ] , sa = function ( S ) { for ( var U = 0 ; U < fa . length ; U ++ ) fa [ U ] . call ( e , e , S ) } , ha = function ( S ) { var U = b . offset ( ) ; V = { l : U . left | 0 , t : U . top | 0 } ; clearTimeout ( O ) ; O = setTimeout ( function ( ) { qa . call ( e , S ) } , 0 ) ; a ( document ) . bind ( "mousemove" , ca ) . bind ( "mouseup" , ea ) ; S . preventDefault ( ) } , ca = function ( S ) { clearTimeout ( O ) ; O = setTimeout ( function ( ) { qa . call ( e ,
S ) } , 0 ) ; S . stopPropagation ( ) ; S . preventDefault ( ) ; return false } , ea = function ( S ) { a ( document ) . unbind ( "mouseup" , ea ) . unbind ( "mousemove" , ca ) ; S . stopPropagation ( ) ; S . preventDefault ( ) ; return false } , qa = function ( S ) { var U = S . pageX - V . l ; S = S . pageY - V . t ; var ra = b . w , la = b . h ; if ( U < 0 ) U = 0 ; else if ( U > ra ) U = ra ; if ( S < 0 ) S = 0 ; else if ( S > la ) S = la ; pa . call ( e , "xy" , { x : U / ra * p + u , y : S / la * N + L } ) } , pa = function ( S , U , ra ) { if ( U === undefined ) { if ( S === undefined || S == null ) S = "xy" ; switch ( S . toLowerCase ( ) ) { case "x" : return K ; case "y" : return da ; default : return { x : K , y : da } } } if ( ! ( ra !=
null && ra == e ) ) { var la = false , ma , Z ; if ( S == null ) S = "xy" ; switch ( S . toLowerCase ( ) ) { case "x" : ma = U && ( U . x && U . x | 0 || U | 0 ) || 0 ; break ; case "y" : Z = U && ( U . y && U . y | 0 || U | 0 ) || 0 ; break ; default : ma = U && U . x && U . x | 0 || 0 ; Z = U && U . y && U . y | 0 || 0 } if ( ma != null ) { if ( ma < u ) ma = u ; else if ( ma > w ) ma = w ; if ( K != ma ) { K = ma ; la = true } } if ( Z != null ) { if ( Z < L ) Z = L ; else if ( Z > T ) Z = T ; if ( da != Z ) { da = Z ; la = true } } la && sa . call ( e , ra || e ) } } , ba = function ( S ) { a . isFunction ( S ) && fa . push ( S ) } ; a . extend ( true , e , { val : pa , range : function ( S , U ) { if ( U === undefined ) { if ( S === undefined || S == null ) S = "all" ; switch ( S . toLowerCase ( ) ) { case "minx" : return u ;
case "maxx" : return w ; case "rangex" : return { minX : u , maxX : w , rangeX : p } ; case "miny" : return L ; case "maxy" : return T ; case "rangey" : return { minY : L , maxY : T , rangeY : N } ; default : return { minX : u , maxX : w , rangeX : p , minY : L , maxY : T , rangeY : N } } } var ra , la , ma , Z ; if ( S == null ) S = "all" ; switch ( S . toLowerCase ( ) ) { case "minx" : ra = U && ( U . minX && U . minX | 0 || U | 0 ) || 0 ; break ; case "maxx" : la = U && ( U . maxX && U . maxX | 0 || U | 0 ) || 0 ; break ; case "rangex" : ra = U && U . minX && U . minX | 0 || 0 ; la = U && U . maxX && U . maxX | 0 || 0 ; break ; case "miny" : ma = U && ( U . minY && U . minY | 0 || U | 0 ) || 0 ; break ; case "maxy" : Z =
U && ( U . maxY && U . maxY | 0 || U | 0 ) || 0 ; break ; case "rangey" : ma = U && U . minY && U . minY | 0 || 0 ; Z = U && U . maxY && U . maxY | 0 || 0 ; break ; default : ra = U && U . minX && U . minX | 0 || 0 ; la = U && U . maxX && U . maxX | 0 || 0 ; ma = U && U . minY && U . minY | 0 || 0 ; Z = U && U . maxY && U . maxY | 0 || 0 } if ( ra != null && u != ra ) { u = ra ; p = w - u } if ( la != null && w != la ) { w = la ; p = w - u } if ( ma != null && L != ma ) { L = ma ; N = T - L } if ( Z != null && T != Z ) { T = Z ; N = T - L } } , bind : ba , unbind : function ( S ) { if ( a . isFunction ( S ) ) for ( var U ; ( U = a . inArray ( S , fa ) ) != - 1 ; ) fa . splice ( U , 1 ) } , destroy : function ( ) { a ( document ) . unbind ( "mouseup" , ea ) . unbind ( "mousemove" ,
ca ) ; b . unbind ( "mousedown" , ha ) ; fa = l = b = null } } ) ; l . src = d . arrow && d . arrow . image ; l . w = d . arrow && d . arrow . width || l . width ( ) ; l . h = d . arrow && d . arrow . height || l . height ( ) ; b . w = d . map && d . map . width || b . width ( ) ; b . h = d . map && d . map . height || b . height ( ) ; b . bind ( "mousedown" , ha ) ; ba . call ( e , function ( ) { var S = 0 , U = 0 , ra = b . w , la = b . h , ma = l . w , Z = l . h ; setTimeout ( function ( ) { if ( p > 0 ) S = K == w ? ra : K / p * ra | 0 ; if ( N > 0 ) U = da == T ? la : da / N * la | 0 ; if ( ma >= ra ) S = ( ra >> 1 ) - ( ma >> 1 ) ; else S -= ma >> 1 ; if ( Z >= la ) U = ( la >> 1 ) - ( Z >> 1 ) ; else U -= Z >> 1 ; l . css ( { left : S + "px" , top : U + "px" } ) } , 0 ) } ) } , f =
function ( b , d , e , l ) { var u = this ; b = b . find ( "td.Text input" ) ; var w = b . eq ( 3 ) , p = b . eq ( 4 ) , L = b . eq ( 5 ) , T = b . length > 7 ? b . eq ( 6 ) : null , N = b . eq ( 0 ) , K = b . eq ( 1 ) , da = b . eq ( 2 ) , V = b . eq ( b . length > 7 ? 7 : 6 ) , O = b . length > 7 ? b . eq ( 8 ) : null , fa = function ( pa ) { if ( ! ( pa . target . value == "" && pa . target != V . get ( 0 ) && ( e != null && pa . target != e . get ( 0 ) || e == null ) ) ) { if ( ! ca ( pa ) ) return pa ; switch ( pa . target ) { case w . get ( 0 ) : switch ( pa . keyCode ) { case 38 : w . val ( ea . call ( u , ( w . val ( ) << 0 ) + 1 , 0 , 255 ) ) ; d . val ( "r" , w . val ( ) , pa . target ) ; return false ; case 40 : w . val ( ea . call ( u , ( w . val ( ) << 0 ) - 1 , 0 ,
2012-07-14 00:14:24 +00:00
255 ) ) ; d . val ( "r" , w . val ( ) , pa . target ) ; return false } break ; case p . get ( 0 ) : switch ( pa . keyCode ) { case 38 : p . val ( ea . call ( u , ( p . val ( ) << 0 ) + 1 , 0 , 255 ) ) ; d . val ( "g" , p . val ( ) , pa . target ) ; return false ; case 40 : p . val ( ea . call ( u , ( p . val ( ) << 0 ) - 1 , 0 , 255 ) ) ; d . val ( "g" , p . val ( ) , pa . target ) ; return false } break ; case L . get ( 0 ) : switch ( pa . keyCode ) { case 38 : L . val ( ea . call ( u , ( L . val ( ) << 0 ) + 1 , 0 , 255 ) ) ; d . val ( "b" , L . val ( ) , pa . target ) ; return false ; case 40 : L . val ( ea . call ( u , ( L . val ( ) << 0 ) - 1 , 0 , 255 ) ) ; d . val ( "b" , L . val ( ) , pa . target ) ; return false } break ; case T && T . get ( 0 ) : switch ( pa . keyCode ) { case 38 : T . val ( ea . call ( u ,
2012-07-14 02:04:34 +00:00
parseFloat ( T . val ( ) ) + 1 , 0 , 100 ) ) ; d . val ( "a" , Math . precision ( T . val ( ) * 255 / 100 , l ) , pa . target ) ; return false ; case 40 : T . val ( ea . call ( u , parseFloat ( T . val ( ) ) - 1 , 0 , 100 ) ) ; d . val ( "a" , Math . precision ( T . val ( ) * 255 / 100 , l ) , pa . target ) ; return false } break ; case N . get ( 0 ) : switch ( pa . keyCode ) { case 38 : N . val ( ea . call ( u , ( N . val ( ) << 0 ) + 1 , 0 , 360 ) ) ; d . val ( "h" , N . val ( ) , pa . target ) ; return false ; case 40 : N . val ( ea . call ( u , ( N . val ( ) << 0 ) - 1 , 0 , 360 ) ) ; d . val ( "h" , N . val ( ) , pa . target ) ; return false } break ; case K . get ( 0 ) : switch ( pa . keyCode ) { case 38 : K . val ( ea . call ( u , ( K . val ( ) <<
0 ) + 1 , 0 , 100 ) ) ; d . val ( "s" , K . val ( ) , pa . target ) ; return false ; case 40 : K . val ( ea . call ( u , ( K . val ( ) << 0 ) - 1 , 0 , 100 ) ) ; d . val ( "s" , K . val ( ) , pa . target ) ; return false } break ; case da . get ( 0 ) : switch ( pa . keyCode ) { case 38 : da . val ( ea . call ( u , ( da . val ( ) << 0 ) + 1 , 0 , 100 ) ) ; d . val ( "v" , da . val ( ) , pa . target ) ; return false ; case 40 : da . val ( ea . call ( u , ( da . val ( ) << 0 ) - 1 , 0 , 100 ) ) ; d . val ( "v" , da . val ( ) , pa . target ) ; return false } } } } , sa = function ( pa ) { if ( ! ( pa . target . value == "" && pa . target != V . get ( 0 ) && ( e != null && pa . target != e . get ( 0 ) || e == null ) ) ) { if ( ! ca ( pa ) ) return pa ; switch ( pa . target ) { case w . get ( 0 ) : w . val ( ea . call ( u ,
w . val ( ) , 0 , 255 ) ) ; d . val ( "r" , w . val ( ) , pa . target ) ; break ; case p . get ( 0 ) : p . val ( ea . call ( u , p . val ( ) , 0 , 255 ) ) ; d . val ( "g" , p . val ( ) , pa . target ) ; break ; case L . get ( 0 ) : L . val ( ea . call ( u , L . val ( ) , 0 , 255 ) ) ; d . val ( "b" , L . val ( ) , pa . target ) ; break ; case T && T . get ( 0 ) : T . val ( ea . call ( u , T . val ( ) , 0 , 100 ) ) ; d . val ( "a" , Math . precision ( T . val ( ) * 255 / 100 , l ) , pa . target ) ; break ; case N . get ( 0 ) : N . val ( ea . call ( u , N . val ( ) , 0 , 360 ) ) ; d . val ( "h" , N . val ( ) , pa . target ) ; break ; case K . get ( 0 ) : K . val ( ea . call ( u , K . val ( ) , 0 , 100 ) ) ; d . val ( "s" , K . val ( ) , pa . target ) ; break ; case da . get ( 0 ) : da . val ( ea . call ( u ,
2012-06-23 19:40:40 +00:00
da . val ( ) , 0 , 100 ) ) ; d . val ( "v" , da . val ( ) , pa . target ) ; break ; case V . get ( 0 ) : V . val ( V . val ( ) . replace ( /[^a-fA-F0-9]/g , "" ) . toLowerCase ( ) . substring ( 0 , 6 ) ) ; e && e . val ( V . val ( ) ) ; d . val ( "hex" , V . val ( ) != "" ? V . val ( ) : null , pa . target ) ; break ; case e && e . get ( 0 ) : e . val ( e . val ( ) . replace ( /[^a-fA-F0-9]/g , "" ) . toLowerCase ( ) . substring ( 0 , 6 ) ) ; V . val ( e . val ( ) ) ; d . val ( "hex" , e . val ( ) != "" ? e . val ( ) : null , pa . target ) ; break ; case O && O . get ( 0 ) : O . val ( O . val ( ) . replace ( /[^a-fA-F0-9]/g , "" ) . toLowerCase ( ) . substring ( 0 , 2 ) ) ; d . val ( "a" , O . val ( ) != null ? parseInt ( O . val ( ) , 16 ) :
2012-07-14 02:04:34 +00:00
null , pa . target ) } } } , ha = function ( pa ) { if ( d . val ( ) != null ) switch ( pa . target ) { case w . get ( 0 ) : w . val ( d . val ( "r" ) ) ; break ; case p . get ( 0 ) : p . val ( d . val ( "g" ) ) ; break ; case L . get ( 0 ) : L . val ( d . val ( "b" ) ) ; break ; case T && T . get ( 0 ) : T . val ( Math . precision ( d . val ( "a" ) * 100 / 255 , l ) ) ; break ; case N . get ( 0 ) : N . val ( d . val ( "h" ) ) ; break ; case K . get ( 0 ) : K . val ( d . val ( "s" ) ) ; break ; case da . get ( 0 ) : da . val ( d . val ( "v" ) ) ; break ; case V . get ( 0 ) : case e && e . get ( 0 ) : V . val ( d . val ( "hex" ) ) ; e && e . val ( d . val ( "hex" ) ) ; break ; case O && O . get ( 0 ) : O . val ( d . val ( "ahex" ) . substring ( 6 ) ) } } , ca =
2012-07-14 00:14:24 +00:00
function ( pa ) { switch ( pa . keyCode ) { case 9 : case 16 : case 29 : case 37 : case 39 : return false ; case "c" . charCodeAt ( ) : case "v" . charCodeAt ( ) : if ( pa . ctrlKey ) return false } return true } , ea = function ( pa , ba , S ) { if ( pa == "" || isNaN ( pa ) ) return ba ; if ( pa > S ) return S ; if ( pa < ba ) return ba ; return pa } , qa = function ( pa , ba ) { var S = pa . val ( "all" ) ; if ( ba != w . get ( 0 ) ) w . val ( S != null ? S . r : "" ) ; if ( ba != p . get ( 0 ) ) p . val ( S != null ? S . g : "" ) ; if ( ba != L . get ( 0 ) ) L . val ( S != null ? S . b : "" ) ; if ( T && ba != T . get ( 0 ) ) T . val ( S != null ? Math . precision ( S . a * 100 / 255 , l ) : "" ) ; if ( ba != N . get ( 0 ) ) N . val ( S !=
2012-07-14 02:04:34 +00:00
null ? S . h : "" ) ; if ( ba != K . get ( 0 ) ) K . val ( S != null ? S . s : "" ) ; if ( ba != da . get ( 0 ) ) da . val ( S != null ? S . v : "" ) ; if ( ba != V . get ( 0 ) && ( e && ba != e . get ( 0 ) || ! e ) ) V . val ( S != null ? S . hex : "" ) ; if ( e && ba != e . get ( 0 ) && ba != V . get ( 0 ) ) e . val ( S != null ? S . hex : "" ) ; if ( O && ba != O . get ( 0 ) ) O . val ( S != null ? S . ahex . substring ( 6 ) : "" ) } ; a . extend ( true , u , { destroy : function ( ) { w . add ( p ) . add ( L ) . add ( T ) . add ( N ) . add ( K ) . add ( da ) . add ( V ) . add ( e ) . add ( O ) . unbind ( "keyup" , sa ) . unbind ( "blur" , ha ) ; w . add ( p ) . add ( L ) . add ( T ) . add ( N ) . add ( K ) . add ( da ) . unbind ( "keydown" , fa ) ; d . unbind ( qa ) ; O = V = da = K = N = T = L =
p = w = null } } ) ; w . add ( p ) . add ( L ) . add ( T ) . add ( N ) . add ( K ) . add ( da ) . add ( V ) . add ( e ) . add ( O ) . bind ( "keyup" , sa ) . bind ( "blur" , ha ) ; w . add ( p ) . add ( L ) . add ( T ) . add ( N ) . add ( K ) . add ( da ) . bind ( "keydown" , fa ) ; d . bind ( qa ) } ; a . jPicker = { List : [ ] , Color : function ( b ) { var d = this , e , l , u , w , p , L , T , N = [ ] , K = function ( V ) { for ( var O = 0 ; O < N . length ; O ++ ) N [ O ] . call ( d , d , V ) } , da = function ( V , O , fa ) { if ( O === undefined ) { if ( V === undefined || V == null || V == "" ) V = "all" ; if ( e == null ) return null ; switch ( V . toLowerCase ( ) ) { case "ahex" : return o . rgbaToHex ( { r : e , g : l , b : u , a : w } ) ; case "hex" : return da ( "ahex" ) . substring ( 0 ,
2012-07-14 00:14:24 +00:00
6 ) ; case "all" : return { r : e , g : l , b : u , a : w , h : p , s : L , v : T , hex : da . call ( d , "hex" ) , ahex : da . call ( d , "ahex" ) } ; default : O = { } ; for ( var sa = 0 ; sa < V . length ; sa ++ ) switch ( V . charAt ( sa ) ) { case "r" : if ( V . length == 1 ) O = e ; else O . r = e ; break ; case "g" : if ( V . length == 1 ) O = l ; else O . g = l ; break ; case "b" : if ( V . length == 1 ) O = u ; else O . b = u ; break ; case "a" : if ( V . length == 1 ) O = w ; else O . a = w ; break ; case "h" : if ( V . length == 1 ) O = p ; else O . h = p ; break ; case "s" : if ( V . length == 1 ) O = L ; else O . s = L ; break ; case "v" : if ( V . length == 1 ) O = T ; else O . v = T } return O == { } ? da . call ( d , "all" ) : O } } if ( ! ( fa !=
2012-07-14 02:04:34 +00:00
null && fa == d ) ) { var ha = false ; if ( V == null ) V = "" ; if ( O == null ) { if ( e != null ) { e = null ; ha = true } if ( l != null ) { l = null ; ha = true } if ( u != null ) { u = null ; ha = true } if ( w != null ) { w = null ; ha = true } if ( p != null ) { p = null ; ha = true } if ( L != null ) { L = null ; ha = true } if ( T != null ) { T = null ; ha = true } ha && K . call ( d , fa || d ) } else switch ( V . toLowerCase ( ) ) { case "ahex" : case "hex" : O = o . hexToRgba ( O && ( O . ahex || O . hex ) || O || "00000000" ) ; da . call ( d , "rgba" , { r : O . r , g : O . g , b : O . b , a : V == "ahex" ? O . a : w != null ? w : 255 } , fa ) ; break ; default : if ( O && ( O . ahex != null || O . hex != null ) ) { da . call ( d , "ahex" ,
2012-06-23 19:40:40 +00:00
O . ahex || O . hex || "00000000" , fa ) ; break } var ca = { } , ea = false , qa = false ; if ( O . r !== undefined && ! V . indexOf ( "r" ) == - 1 ) V += "r" ; if ( O . g !== undefined && ! V . indexOf ( "g" ) == - 1 ) V += "g" ; if ( O . b !== undefined && ! V . indexOf ( "b" ) == - 1 ) V += "b" ; if ( O . a !== undefined && ! V . indexOf ( "a" ) == - 1 ) V += "a" ; if ( O . h !== undefined && ! V . indexOf ( "h" ) == - 1 ) V += "h" ; if ( O . s !== undefined && ! V . indexOf ( "s" ) == - 1 ) V += "s" ; if ( O . v !== undefined && ! V . indexOf ( "v" ) == - 1 ) V += "v" ; for ( sa = 0 ; sa < V . length ; sa ++ ) switch ( V . charAt ( sa ) ) { case "r" : if ( qa ) continue ; ea = true ; ca . r = O && O . r && O . r | 0 || O && O | 0 || 0 ;
2012-07-14 00:14:24 +00:00
if ( ca . r < 0 ) ca . r = 0 ; else if ( ca . r > 255 ) ca . r = 255 ; if ( e != ca . r ) { e = ca . r ; ha = true } break ; case "g" : if ( qa ) continue ; ea = true ; ca . g = O && O . g && O . g | 0 || O && O | 0 || 0 ; if ( ca . g < 0 ) ca . g = 0 ; else if ( ca . g > 255 ) ca . g = 255 ; if ( l != ca . g ) { l = ca . g ; ha = true } break ; case "b" : if ( qa ) continue ; ea = true ; ca . b = O && O . b && O . b | 0 || O && O | 0 || 0 ; if ( ca . b < 0 ) ca . b = 0 ; else if ( ca . b > 255 ) ca . b = 255 ; if ( u != ca . b ) { u = ca . b ; ha = true } break ; case "a" : ca . a = O && O . a != null ? O . a | 0 : O != null ? O | 0 : 255 ; if ( ca . a < 0 ) ca . a = 0 ; else if ( ca . a > 255 ) ca . a = 255 ; if ( w != ca . a ) { w = ca . a ; ha = true } break ; case "h" : if ( ea ) continue ;
2012-07-12 17:01:07 +00:00
qa = true ; ca . h = O && O . h && O . h | 0 || O && O | 0 || 0 ; if ( ca . h < 0 ) ca . h = 0 ; else if ( ca . h > 360 ) ca . h = 360 ; if ( p != ca . h ) { p = ca . h ; ha = true } break ; case "s" : if ( ea ) continue ; qa = true ; ca . s = O && O . s != null ? O . s | 0 : O != null ? O | 0 : 100 ; if ( ca . s < 0 ) ca . s = 0 ; else if ( ca . s > 100 ) ca . s = 100 ; if ( L != ca . s ) { L = ca . s ; ha = true } break ; case "v" : if ( ea ) continue ; qa = true ; ca . v = O && O . v != null ? O . v | 0 : O != null ? O | 0 : 100 ; if ( ca . v < 0 ) ca . v = 0 ; else if ( ca . v > 100 ) ca . v = 100 ; if ( T != ca . v ) { T = ca . v ; ha = true } } if ( ha ) { if ( ea ) { e = e || 0 ; l = l || 0 ; u = u || 0 ; O = o . rgbToHsv ( { r : e , g : l , b : u } ) ; p = O . h ; L = O . s ; T = O . v } else if ( qa ) { p = p ||
2012-07-14 02:04:34 +00:00
0 ; L = L != null ? L : 100 ; T = T != null ? T : 100 ; O = o . hsvToRgb ( { h : p , s : L , v : T } ) ; e = O . r ; l = O . g ; u = O . b } w = w != null ? w : 255 ; K . call ( d , fa || d ) } } } } ; a . extend ( true , d , { val : da , bind : function ( V ) { a . isFunction ( V ) && N . push ( V ) } , unbind : function ( V ) { if ( a . isFunction ( V ) ) for ( var O ; ( O = a . inArray ( V , N ) ) != - 1 ; ) N . splice ( O , 1 ) } , destroy : function ( ) { N = null } } ) ; if ( b ) if ( b . ahex != null ) da ( "ahex" , b ) ; else if ( b . hex != null ) da ( ( b . a != null ? "a" : "" ) + "hex" , b . a != null ? { ahex : b . hex + o . intToHex ( b . a ) } : b ) ; else if ( b . r != null && b . g != null && b . b != null ) da ( "rgb" + ( b . a != null ? "a" : "" ) , b ) ; else if ( b . h !=
2012-06-23 19:40:40 +00:00
null && b . s != null && b . v != null ) da ( "hsv" + ( b . a != null ? "a" : "" ) , b ) } , ColorMethods : { hexToRgba : function ( b ) { b = this . validateHex ( b ) ; if ( b == "" ) return { r : null , g : null , b : null , a : null } ; var d = "00" , e = "00" , l = "00" , u = "255" ; if ( b . length == 6 ) b += "ff" ; if ( b . length > 6 ) { d = b . substring ( 0 , 2 ) ; e = b . substring ( 2 , 4 ) ; l = b . substring ( 4 , 6 ) ; u = b . substring ( 6 , b . length ) } else { if ( b . length > 4 ) { d = b . substring ( 4 , b . length ) ; b = b . substring ( 0 , 4 ) } if ( b . length > 2 ) { e = b . substring ( 2 , b . length ) ; b = b . substring ( 0 , 2 ) } if ( b . length > 0 ) l = b . substring ( 0 , b . length ) } return { r : this . hexToInt ( d ) ,
g : this . hexToInt ( e ) , b : this . hexToInt ( l ) , a : this . hexToInt ( u ) } } , validateHex : function ( b ) { if ( typeof b == "object" ) return "" ; b = b . toLowerCase ( ) . replace ( /[^a-f0-9]/g , "" ) ; if ( b . length > 8 ) b = b . substring ( 0 , 8 ) ; return b } , rgbaToHex : function ( b ) { return this . intToHex ( b . r ) + this . intToHex ( b . g ) + this . intToHex ( b . b ) + this . intToHex ( b . a ) } , intToHex : function ( b ) { b = ( b | 0 ) . toString ( 16 ) ; if ( b . length == 1 ) b = "0" + b ; return b . toLowerCase ( ) } , hexToInt : function ( b ) { return parseInt ( b , 16 ) } , rgbToHsv : function ( b ) { var d = b . r / 255 , e = b . g / 255 ; b = b . b / 255 ; var l = { h : 0 ,
2012-07-14 00:14:24 +00:00
s : 0 , v : 0 } , u = 0 , w = 0 ; if ( d >= e && d >= b ) { w = d ; u = e > b ? b : e } else if ( e >= b && e >= d ) { w = e ; u = d > b ? b : d } else { w = b ; u = e > d ? d : e } l . v = w ; l . s = w ? ( w - u ) / w : 0 ; if ( l . s ) { u = w - u ; l . h = d == w ? ( e - b ) / u : e == w ? 2 + ( b - d ) / u : 4 + ( d - e ) / u ; l . h = parseInt ( l . h * 60 ) ; if ( l . h < 0 ) l . h += 360 } else l . h = 0 ; l . s = l . s * 100 | 0 ; l . v = l . v * 100 | 0 ; return l } , hsvToRgb : function ( b ) { var d = { r : 0 , g : 0 , b : 0 , a : 100 } , e = b . h , l = b . s ; b = b . v ; if ( l == 0 ) d . r = b == 0 ? d . g = d . b = 0 : d . g = d . b = b * 255 / 100 | 0 ; else { if ( e == 360 ) e = 0 ; e /= 60 ; l /= 100 ; b /= 100 ; var u = e | 0 , w = e - u ; e = b * ( 1 - l ) ; var p = b * ( 1 - l * w ) ; l = b * ( 1 - l * ( 1 - w ) ) ; switch ( u ) { case 0 : d . r = b ; d . g =
2012-07-04 14:42:50 +00:00
l ; d . b = e ; break ; case 1 : d . r = p ; d . g = b ; d . b = e ; break ; case 2 : d . r = e ; d . g = b ; d . b = l ; break ; case 3 : d . r = e ; d . g = p ; d . b = b ; break ; case 4 : d . r = l ; d . g = e ; d . b = b ; break ; case 5 : d . r = b ; d . g = e ; d . b = p } d . r = d . r * 255 | 0 ; d . g = d . g * 255 | 0 ; d . b = d . b * 255 | 0 } return d } } } ; var c = a . jPicker . Color , m = a . jPicker . List , o = a . jPicker . ColorMethods ; a . fn . jPicker = function ( b ) { var d = arguments ; return this . each ( function ( ) { var e = this , l = a . extend ( true , { } , a . fn . jPicker . defaults , b ) ; if ( a ( e ) . get ( 0 ) . nodeName . toLowerCase ( ) == "input" ) { a . extend ( true , l , { window : { bindToInput : true , expandable : true ,
input : a ( e ) } } ) ; if ( a ( e ) . val ( ) == "" ) { l . color . active = new c ( { hex : null } ) ; l . color . current = new c ( { hex : null } ) } else if ( o . validateHex ( a ( e ) . val ( ) ) ) { l . color . active = new c ( { hex : a ( e ) . val ( ) , a : l . color . active . val ( "a" ) } ) ; l . color . current = new c ( { hex : a ( e ) . val ( ) , a : l . color . active . val ( "a" ) } ) } } if ( l . window . expandable ) a ( e ) . after ( '<span class="jPicker"><span class="Icon"><span class="Color"> </span><span class="Alpha"> </span><span class="Image" title="Click To Open Color Picker"> </span><span class="Container"> </span></span></span>' ) ;
2012-07-14 02:04:34 +00:00
else l . window . liveUpdate = false ; var u = parseFloat ( navigator . appVersion . split ( "MSIE" ) [ 1 ] ) < 7 && document . body . filters , w = null , p = null , L = null , T = null , N = null , K = null , da = null , V = null , O = null , fa = null , sa = null , ha = null , ca = null , ea = null , qa = null , pa = null , ba = null , S = null , U = null , ra = null , la = null , ma = null , Z = null , Aa = null , Ka = null , Ra = null , Na = null , Sa = null , Xa = function ( M ) { var I = ta . active , Y = I . val ( "hex" ) , Pa , Wa ; l . color . mode = M ; switch ( M ) { case "h" : setTimeout ( function ( ) { $a . call ( e , p , "transparent" ) ; La . call ( e , T , 0 ) ; Ea . call ( e , T , 100 ) ; La . call ( e ,
2012-07-14 00:14:24 +00:00
N , 260 ) ; Ea . call ( e , N , 100 ) ; $a . call ( e , L , "transparent" ) ; La . call ( e , da , 0 ) ; Ea . call ( e , da , 100 ) ; La . call ( e , V , 260 ) ; Ea . call ( e , V , 100 ) ; La . call ( e , O , 260 ) ; Ea . call ( e , O , 100 ) ; La . call ( e , fa , 260 ) ; Ea . call ( e , fa , 100 ) ; La . call ( e , ha , 260 ) ; Ea . call ( e , ha , 100 ) } , 0 ) ; ca . range ( "all" , { minX : 0 , maxX : 100 , minY : 0 , maxY : 100 } ) ; ea . range ( "rangeY" , { minY : 0 , maxY : 360 } ) ; if ( I . val ( "ahex" ) == null ) break ; ca . val ( "xy" , { x : I . val ( "s" ) , y : 100 - I . val ( "v" ) } , ca ) ; ea . val ( "y" , 360 - I . val ( "h" ) , ea ) ; break ; case "s" : setTimeout ( function ( ) { $a . call ( e , p , "transparent" ) ; La . call ( e , T , - 260 ) ;
2012-07-14 02:04:34 +00:00
La . call ( e , N , - 520 ) ; La . call ( e , da , - 260 ) ; La . call ( e , V , - 520 ) ; La . call ( e , ha , 260 ) ; Ea . call ( e , ha , 100 ) } , 0 ) ; ca . range ( "all" , { minX : 0 , maxX : 360 , minY : 0 , maxY : 100 } ) ; ea . range ( "rangeY" , { minY : 0 , maxY : 100 } ) ; if ( I . val ( "ahex" ) == null ) break ; ca . val ( "xy" , { x : I . val ( "h" ) , y : 100 - I . val ( "v" ) } , ca ) ; ea . val ( "y" , 100 - I . val ( "s" ) , ea ) ; break ; case "v" : setTimeout ( function ( ) { $a . call ( e , p , "000000" ) ; La . call ( e , T , - 780 ) ; La . call ( e , N , 260 ) ; $a . call ( e , L , Y ) ; La . call ( e , da , - 520 ) ; La . call ( e , V , 260 ) ; Ea . call ( e , V , 100 ) ; La . call ( e , ha , 260 ) ; Ea . call ( e , ha , 100 ) } , 0 ) ; ca . range ( "all" ,
2012-07-14 00:14:24 +00:00
{ minX : 0 , maxX : 360 , minY : 0 , maxY : 100 } ) ; ea . range ( "rangeY" , { minY : 0 , maxY : 100 } ) ; if ( I . val ( "ahex" ) == null ) break ; ca . val ( "xy" , { x : I . val ( "h" ) , y : 100 - I . val ( "s" ) } , ca ) ; ea . val ( "y" , 100 - I . val ( "v" ) , ea ) ; break ; case "r" : Pa = - 1040 ; Wa = - 780 ; ca . range ( "all" , { minX : 0 , maxX : 255 , minY : 0 , maxY : 255 } ) ; ea . range ( "rangeY" , { minY : 0 , maxY : 255 } ) ; if ( I . val ( "ahex" ) == null ) break ; ca . val ( "xy" , { x : I . val ( "b" ) , y : 255 - I . val ( "g" ) } , ca ) ; ea . val ( "y" , 255 - I . val ( "r" ) , ea ) ; break ; case "g" : Pa = - 1560 ; Wa = - 1820 ; ca . range ( "all" , { minX : 0 , maxX : 255 , minY : 0 , maxY : 255 } ) ; ea . range ( "rangeY" ,
{ minY : 0 , maxY : 255 } ) ; if ( I . val ( "ahex" ) == null ) break ; ca . val ( "xy" , { x : I . val ( "b" ) , y : 255 - I . val ( "r" ) } , ca ) ; ea . val ( "y" , 255 - I . val ( "g" ) , ea ) ; break ; case "b" : Pa = - 2080 ; Wa = - 2860 ; ca . range ( "all" , { minX : 0 , maxX : 255 , minY : 0 , maxY : 255 } ) ; ea . range ( "rangeY" , { minY : 0 , maxY : 255 } ) ; if ( I . val ( "ahex" ) == null ) break ; ca . val ( "xy" , { x : I . val ( "r" ) , y : 255 - I . val ( "g" ) } , ca ) ; ea . val ( "y" , 255 - I . val ( "b" ) , ea ) ; break ; case "a" : setTimeout ( function ( ) { $a . call ( e , p , "transparent" ) ; La . call ( e , T , - 260 ) ; La . call ( e , N , - 520 ) ; La . call ( e , da , 260 ) ; La . call ( e , V , 260 ) ; Ea . call ( e , V , 100 ) ;
La . call ( e , ha , 0 ) ; Ea . call ( e , ha , 100 ) } , 0 ) ; ca . range ( "all" , { minX : 0 , maxX : 360 , minY : 0 , maxY : 100 } ) ; ea . range ( "rangeY" , { minY : 0 , maxY : 255 } ) ; if ( I . val ( "ahex" ) == null ) break ; ca . val ( "xy" , { x : I . val ( "h" ) , y : 100 - I . val ( "v" ) } , ca ) ; ea . val ( "y" , 255 - I . val ( "a" ) , ea ) ; break ; default : throw "Invalid Mode" ; } switch ( M ) { case "s" : case "v" : case "a" : setTimeout ( function ( ) { Ea . call ( e , T , 100 ) ; Ea . call ( e , da , 100 ) ; La . call ( e , O , 260 ) ; Ea . call ( e , O , 100 ) ; La . call ( e , fa , 260 ) ; Ea . call ( e , fa , 100 ) } , 0 ) ; break ; case "r" : case "g" : case "b" : setTimeout ( function ( ) { $a . call ( e , p ,
2012-07-14 02:04:34 +00:00
"transparent" ) ; $a . call ( e , L , "transparent" ) ; Ea . call ( e , da , 100 ) ; Ea . call ( e , T , 100 ) ; La . call ( e , T , Pa ) ; La . call ( e , N , Pa - 260 ) ; La . call ( e , da , Wa - 780 ) ; La . call ( e , V , Wa - 520 ) ; La . call ( e , O , Wa ) ; La . call ( e , fa , Wa - 260 ) ; La . call ( e , ha , 260 ) ; Ea . call ( e , ha , 100 ) } , 0 ) } I . val ( "ahex" ) != null && Oa . call ( e , I ) } , Oa = function ( M , I ) { if ( I == null || I != ea && I != ca ) Ga . call ( e , M , I ) ; setTimeout ( function ( ) { Fb . call ( e , M ) ; Ob . call ( e , M ) ; lb . call ( e , M ) } , 0 ) } , Ia = function ( M , I ) { var Y = ta . active ; if ( ! ( I != ca && Y . val ( ) == null ) ) { var Pa = M . val ( "all" ) ; switch ( l . color . mode ) { case "h" : Y . val ( "sv" ,
{ s : Pa . x , v : 100 - Pa . y } , I ) ; break ; case "s" : case "a" : Y . val ( "hv" , { h : Pa . x , v : 100 - Pa . y } , I ) ; break ; case "v" : Y . val ( "hs" , { h : Pa . x , s : 100 - Pa . y } , I ) ; break ; case "r" : Y . val ( "gb" , { g : 255 - Pa . y , b : Pa . x } , I ) ; break ; case "g" : Y . val ( "rb" , { r : 255 - Pa . y , b : Pa . x } , I ) ; break ; case "b" : Y . val ( "rg" , { r : Pa . x , g : 255 - Pa . y } , I ) } } } , Qa = function ( M , I ) { var Y = ta . active ; if ( ! ( I != ea && Y . val ( ) == null ) ) switch ( l . color . mode ) { case "h" : Y . val ( "h" , { h : 360 - M . val ( "y" ) } , I ) ; break ; case "s" : Y . val ( "s" , { s : 100 - M . val ( "y" ) } , I ) ; break ; case "v" : Y . val ( "v" , { v : 100 - M . val ( "y" ) } , I ) ; break ;
case "r" : Y . val ( "r" , { r : 255 - M . val ( "y" ) } , I ) ; break ; case "g" : Y . val ( "g" , { g : 255 - M . val ( "y" ) } , I ) ; break ; case "b" : Y . val ( "b" , { b : 255 - M . val ( "y" ) } , I ) ; break ; case "a" : Y . val ( "a" , 255 - M . val ( "y" ) , I ) } } , Ga = function ( M , I ) { if ( I != ca ) switch ( l . color . mode ) { case "h" : var Y = M . val ( "sv" ) ; ca . val ( "xy" , { x : Y != null ? Y . s : 100 , y : 100 - ( Y != null ? Y . v : 100 ) } , I ) ; break ; case "s" : case "a" : Y = M . val ( "hv" ) ; ca . val ( "xy" , { x : Y && Y . h || 0 , y : 100 - ( Y != null ? Y . v : 100 ) } , I ) ; break ; case "v" : Y = M . val ( "hs" ) ; ca . val ( "xy" , { x : Y && Y . h || 0 , y : 100 - ( Y != null ? Y . s : 100 ) } , I ) ; break ; case "r" : Y =
M . val ( "bg" ) ; ca . val ( "xy" , { x : Y && Y . b || 0 , y : 255 - ( Y && Y . g || 0 ) } , I ) ; break ; case "g" : Y = M . val ( "br" ) ; ca . val ( "xy" , { x : Y && Y . b || 0 , y : 255 - ( Y && Y . r || 0 ) } , I ) ; break ; case "b" : Y = M . val ( "rg" ) ; ca . val ( "xy" , { x : Y && Y . r || 0 , y : 255 - ( Y && Y . g || 0 ) } , I ) } if ( I != ea ) switch ( l . color . mode ) { case "h" : ea . val ( "y" , 360 - ( M . val ( "h" ) || 0 ) , I ) ; break ; case "s" : Y = M . val ( "s" ) ; ea . val ( "y" , 100 - ( Y != null ? Y : 100 ) , I ) ; break ; case "v" : Y = M . val ( "v" ) ; ea . val ( "y" , 100 - ( Y != null ? Y : 100 ) , I ) ; break ; case "r" : ea . val ( "y" , 255 - ( M . val ( "r" ) || 0 ) , I ) ; break ; case "g" : ea . val ( "y" , 255 - ( M . val ( "g" ) || 0 ) ,
I ) ; break ; case "b" : ea . val ( "y" , 255 - ( M . val ( "b" ) || 0 ) , I ) ; break ; case "a" : Y = M . val ( "a" ) ; ea . val ( "y" , 255 - ( Y != null ? Y : 255 ) , I ) } } , Fb = function ( M ) { try { var I = M . val ( "all" ) ; ra . css ( { backgroundColor : I && "#" + I . hex || "transparent" } ) ; Ea . call ( e , ra , I && Math . precision ( I . a * 100 / 255 , 4 ) || 0 ) } catch ( Y ) { } } , Ob = function ( M ) { switch ( l . color . mode ) { case "h" : $a . call ( e , p , ( new c ( { h : M . val ( "h" ) || 0 , s : 100 , v : 100 } ) ) . val ( "hex" ) ) ; break ; case "s" : case "a" : var I = M . val ( "s" ) ; Ea . call ( e , N , 100 - ( I != null ? I : 100 ) ) ; break ; case "v" : I = M . val ( "v" ) ; Ea . call ( e , T , I != null ? I :
100 ) ; break ; case "r" : Ea . call ( e , N , Math . precision ( ( M . val ( "r" ) || 0 ) / 255 * 100 , 4 ) ) ; break ; case "g" : Ea . call ( e , N , Math . precision ( ( M . val ( "g" ) || 0 ) / 255 * 100 , 4 ) ) ; break ; case "b" : Ea . call ( e , N , Math . precision ( ( M . val ( "b" ) || 0 ) / 255 * 100 ) ) } M = M . val ( "a" ) ; Ea . call ( e , K , Math . precision ( ( 255 - ( M || 0 ) ) * 100 / 255 , 4 ) ) } , lb = function ( M ) { switch ( l . color . mode ) { case "h" : var I = M . val ( "a" ) ; Ea . call ( e , sa , Math . precision ( ( 255 - ( I || 0 ) ) * 100 / 255 , 4 ) ) ; break ; case "s" : I = M . val ( "hva" ) ; var Y = new c ( { h : I && I . h || 0 , s : 100 , v : I != null ? I . v : 100 } ) ; $a . call ( e , L , Y . val ( "hex" ) ) ;
Ea . call ( e , V , 100 - ( I != null ? I . v : 100 ) ) ; Ea . call ( e , sa , Math . precision ( ( 255 - ( I && I . a || 0 ) ) * 100 / 255 , 4 ) ) ; break ; case "v" : I = M . val ( "hsa" ) ; Y = new c ( { h : I && I . h || 0 , s : I != null ? I . s : 100 , v : 100 } ) ; $a . call ( e , L , Y . val ( "hex" ) ) ; Ea . call ( e , sa , Math . precision ( ( 255 - ( I && I . a || 0 ) ) * 100 / 255 , 4 ) ) ; break ; case "r" : case "g" : case "b" : Y = I = 0 ; M = M . val ( "rgba" ) ; if ( l . color . mode == "r" ) { I = M && M . b || 0 ; Y = M && M . g || 0 } else if ( l . color . mode == "g" ) { I = M && M . b || 0 ; Y = M && M . r || 0 } else if ( l . color . mode == "b" ) { I = M && M . r || 0 ; Y = M && M . g || 0 } var Pa = Y > I ? I : Y ; Ea . call ( e , V , I > Y ? Math . precision ( ( I -
Y ) / ( 255 - Y ) * 100 , 4 ) : 0 ) ; Ea . call ( e , O , Y > I ? Math . precision ( ( Y - I ) / ( 255 - I ) * 100 , 4 ) : 0 ) ; Ea . call ( e , fa , Math . precision ( Pa / 255 * 100 , 4 ) ) ; Ea . call ( e , sa , Math . precision ( ( 255 - ( M && M . a || 0 ) ) * 100 / 255 , 4 ) ) ; break ; case "a" : I = M . val ( "a" ) ; $a . call ( e , L , M . val ( "hex" ) || "000000" ) ; Ea . call ( e , sa , I != null ? 0 : 100 ) ; Ea . call ( e , ha , I != null ? 100 : 0 ) } } , $a = function ( M , I ) { M . css ( { backgroundColor : I && I . length == 6 && "#" + I || "transparent" } ) } , Ya = function ( M , I ) { if ( u && ( I . indexOf ( "AlphaBar.png" ) != - 1 || I . indexOf ( "Bars.png" ) != - 1 || I . indexOf ( "Maps.png" ) != - 1 ) ) { M . attr ( "pngSrc" ,
I ) ; M . css ( { backgroundImage : "none" , filter : "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + I + "', sizingMethod='scale')" } ) } else M . css ( { backgroundImage : "url('" + I + "')" } ) } , La = function ( M , I ) { M . css ( { top : I + "px" } ) } , Ea = function ( M , I ) { M . css ( { visibility : I > 0 ? "visible" : "hidden" } ) ; if ( I > 0 && I < 100 ) if ( u ) { var Y = M . attr ( "pngSrc" ) ; Y != null && ( Y . indexOf ( "AlphaBar.png" ) != - 1 || Y . indexOf ( "Bars.png" ) != - 1 || Y . indexOf ( "Maps.png" ) != - 1 ) ? M . css ( { filter : "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + Y + "', sizingMethod='scale') progid:DXImageTransform.Microsoft.Alpha(opacity=" +
I + ")" } ) : M . css ( { opacity : Math . precision ( I / 100 , 4 ) } ) } else M . css ( { opacity : Math . precision ( I / 100 , 4 ) } ) ; else if ( I == 0 || I == 100 ) if ( u ) { Y = M . attr ( "pngSrc" ) ; Y != null && ( Y . indexOf ( "AlphaBar.png" ) != - 1 || Y . indexOf ( "Bars.png" ) != - 1 || Y . indexOf ( "Maps.png" ) != - 1 ) ? M . css ( { filter : "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + Y + "', sizingMethod='scale')" } ) : M . css ( { opacity : "" } ) } else M . css ( { opacity : "" } ) } , nb = function ( ) { ta . active . val ( "ahex" , ta . current . val ( "ahex" ) ) } , Ja = function ( ) { ta . current . val ( "ahex" , ta . active . val ( "ahex" ) ) } ,
Za = function ( M ) { a ( this ) . parents ( "tbody:first" ) . find ( 'input:radio[value!="' + M . target . value + '"]' ) . removeAttr ( "checked" ) ; Xa . call ( e , M . target . value ) } , Ma = function ( ) { nb . call ( e ) } , mb = function ( ) { nb . call ( e ) ; l . window . expandable && Gb . call ( e ) ; a . isFunction ( Cb ) && Cb . call ( e , ta . active , Z ) } , Ab = function ( ) { Ja . call ( e ) ; l . window . expandable && Gb . call ( e ) ; a . isFunction ( Bb ) && Bb . call ( e , ta . active , ma ) } , eb = function ( ) { Lb . call ( e ) } , fb = function ( M ) { var I = M . val ( "hex" ) ; la . css ( { backgroundColor : I && "#" + I || "transparent" } ) ; Ea . call ( e , la , Math . precision ( ( M . val ( "a" ) ||
0 ) * 100 / 255 , 4 ) ) } , Pb = function ( M ) { var I = M . val ( "hex" ) ; M = M . val ( "va" ) ; Ka . css ( { backgroundColor : I && "#" + I || "transparent" } ) ; Ea . call ( e , Ra , Math . precision ( ( 255 - ( M && M . a || 0 ) ) * 100 / 255 , 4 ) ) ; if ( l . window . bindToInput && l . window . updateInputColor ) l . window . input . css ( { backgroundColor : I && "#" + I || "transparent" , color : M == null || M . v > 75 ? "#000000" : "#ffffff" } ) } , xa = function ( M ) { pa = parseInt ( w . css ( "left" ) ) ; ba = parseInt ( w . css ( "top" ) ) ; S = M . pageX ; U = M . pageY ; a ( document ) . bind ( "mousemove" , wb ) . bind ( "mouseup" , rb ) ; M . preventDefault ( ) } , wb = function ( M ) { w . css ( { left : pa -
( S - M . pageX ) + "px" , top : ba - ( U - M . pageY ) + "px" } ) ; l . window . expandable && ! a . support . boxModel && w . prev ( ) . css ( { left : w . css ( "left" ) , top : w . css ( "top" ) } ) ; M . stopPropagation ( ) ; M . preventDefault ( ) ; return false } , rb = function ( M ) { a ( document ) . unbind ( "mousemove" , wb ) . unbind ( "mouseup" , rb ) ; M . stopPropagation ( ) ; M . preventDefault ( ) ; return false } , sb = function ( M ) { M . preventDefault ( ) ; M . stopPropagation ( ) ; ta . active . val ( "ahex" , a ( this ) . attr ( "title" ) || null , M . target ) ; return false } , Bb = a . isFunction ( d [ 1 ] ) && d [ 1 ] || null , kb = a . isFunction ( d [ 2 ] ) && d [ 2 ] ||
2012-07-14 00:14:24 +00:00
null , Cb = a . isFunction ( d [ 3 ] ) && d [ 3 ] || null , Lb = function ( ) { ta . current . val ( "ahex" , ta . active . val ( "ahex" ) ) ; var M = function ( ) { if ( ! ( ! l . window . expandable || a . support . boxModel ) ) { var I = w . find ( "table:first" ) ; w . before ( "<iframe/>" ) ; w . prev ( ) . css ( { width : I . width ( ) , height : w . height ( ) , opacity : 0 , position : "absolute" , left : w . css ( "left" ) , top : w . css ( "top" ) } ) } } ; if ( l . window . expandable ) { a ( document . body ) . children ( "div.jPicker.Container" ) . css ( { zIndex : 10 } ) ; w . css ( { zIndex : 20 } ) } switch ( l . window . effects . type ) { case "fade" : w . fadeIn ( l . window . effects . speed . show ,
M ) ; break ; case "slide" : w . slideDown ( l . window . effects . speed . show , M ) ; break ; default : w . show ( l . window . effects . speed . show , M ) } } , Gb = function ( ) { var M = function ( ) { l . window . expandable && w . css ( { zIndex : 10 } ) ; ! l . window . expandable || a . support . boxModel || w . prev ( ) . remove ( ) } ; switch ( l . window . effects . type ) { case "fade" : w . fadeOut ( l . window . effects . speed . hide , M ) ; break ; case "slide" : w . slideUp ( l . window . effects . speed . hide , M ) ; break ; default : w . hide ( l . window . effects . speed . hide , M ) } } , Rb = function ( ) { var M = l . window , I = M . expandable ? a ( e ) . next ( ) . find ( ".Container:first" ) :
2012-07-14 02:04:34 +00:00
null ; w = M . expandable ? a ( "<div/>" ) : a ( e ) ; w . addClass ( "jPicker Container" ) ; M . expandable && w . hide ( ) ; w . get ( 0 ) . onselectstart = function ( Mb ) { if ( Mb . target . nodeName . toLowerCase ( ) !== "input" ) return false } ; var Y = ta . active . val ( "all" ) ; if ( M . alphaPrecision < 0 ) M . alphaPrecision = 0 ; else if ( M . alphaPrecision > 2 ) M . alphaPrecision = 2 ; var Pa = '<table class="jPicker" cellpadding="0" cellspacing="0"><tbody>' + ( M . expandable ? '<tr><td class="Move" colspan="5"> </td></tr>' : "" ) + '<tr><td rowspan="9"><h2 class="Title">' + ( M . title || aa . text . title ) +
2012-06-23 19:40:40 +00:00
'</h2><div class="Map"><span class="Map1"> </span><span class="Map2"> </span><span class="Map3"> </span><img src="' + na . clientPath + na . colorMap . arrow . file + '" class="Arrow"/></div></td><td rowspan="9"><div class="Bar"><span class="Map1"> </span><span class="Map2"> </span><span class="Map3"> </span><span class="Map4"> </span><span class="Map5"> </span><span class="Map6"> </span><img src="' + na . clientPath + na . colorBar . arrow . file + '" class="Arrow"/></div></td><td colspan="2" class="Preview"><div class="prev_div">' +
2012-07-04 14:42:50 +00:00
aa . text . newColor + '<div class="color_preview"><span class="Active" title="' + aa . tooltips . colors . newColor + '"> </span><span class="Current" title="' + aa . tooltips . colors . currentColor + '"> </span></div></div>' + aa . text . currentColor + '</td><td rowspan="9" class="Button"><input type="button" class="Ok" value="' + aa . text . ok + '" title="' + aa . tooltips . buttons . ok + '"/><input type="button" class="Cancel" value="' + aa . text . cancel + '" title="' + aa . tooltips . buttons . cancel + '"/><div class="Grid"> </div></td></tr><tr class="Hue"><td class="Radio"><label title="' +
2012-07-14 02:04:34 +00:00
aa . tooltips . hue . radio + '"><input type="radio" value="h"' + ( l . color . mode == "h" ? ' checked="checked"' : "" ) + '/>H:</label></td><td class="Text"><input type="text" maxlength="3" value="' + ( Y != null ? Y . h : "" ) + '" title="' + aa . tooltips . hue . textbox + '"/> \u00ba</td></tr><tr class="Saturation"><td class="Radio"><label title="' + aa . tooltips . saturation . radio + '"><input type="radio" value="s"' + ( l . color . mode == "s" ? ' checked="checked"' : "" ) + '/>S:</label></td><td class="Text"><input type="text" maxlength="3" value="' + ( Y !=
null ? Y . s : "" ) + '" title="' + aa . tooltips . saturation . textbox + '"/> %</td></tr><tr class="Value"><td class="Radio"><label title="' + aa . tooltips . value . radio + '"><input type="radio" value="v"' + ( l . color . mode == "v" ? ' checked="checked"' : "" ) + '/>V:</label></td><td class="Text"><input type="text" maxlength="3" value="' + ( Y != null ? Y . v : "" ) + '" title="' + aa . tooltips . value . textbox + '"/> %<br/><br/></td></tr><tr class="Red"><td class="Radio"><label title="' + aa . tooltips . red . radio + '"><input type="radio" value="r"' + ( l . color . mode ==
"r" ? ' checked="checked"' : "" ) + '/>R:</label></td><td class="Text"><input type="text" maxlength="3" value="' + ( Y != null ? Y . r : "" ) + '" title="' + aa . tooltips . red . textbox + '"/></td></tr><tr class="Green"><td class="Radio"><label title="' + aa . tooltips . green . radio + '"><input type="radio" value="g"' + ( l . color . mode == "g" ? ' checked="checked"' : "" ) + '/>G:</label></td><td class="Text"><input type="text" maxlength="3" value="' + ( Y != null ? Y . g : "" ) + '" title="' + aa . tooltips . green . textbox + '"/></td></tr><tr class="Blue"><td class="Radio"><label title="' +
aa . tooltips . blue . radio + '"><input type="radio" value="b"' + ( l . color . mode == "b" ? ' checked="checked"' : "" ) + '/>B:</label></td><td class="Text"><input type="text" maxlength="3" value="' + ( Y != null ? Y . b : "" ) + '" title="' + aa . tooltips . blue . textbox + '"/></td></tr><tr class="Alpha"><td class="Radio">' + ( M . alphaSupport ? '<label title="' + aa . tooltips . alpha . radio + '"><input type="radio" value="a"' + ( l . color . mode == "a" ? ' checked="checked"' : "" ) + "/>A:</label>" : " " ) + '</td><td class="Text">' + ( M . alphaSupport ? '<input type="text" maxlength="' +
( 3 + M . alphaPrecision ) + '" value="' + ( Y != null ? Math . precision ( Y . a * 100 / 255 , M . alphaPrecision ) : "" ) + '" title="' + aa . tooltips . alpha . textbox + '"/> %' : " " ) + '</td></tr><tr class="Hex"><td colspan="2" class="Text"><label title="' + aa . tooltips . hex . textbox + '">#:<input type="text" maxlength="6" class="Hex" value="' + ( Y != null ? Y . hex : "" ) + '"/></label>' + ( M . alphaSupport ? '<input type="text" maxlength="2" class="AHex" value="' + ( Y != null ? Y . ahex . substring ( 6 ) : "" ) + '" title="' + aa . tooltips . hex . alpha + '"/></td>' : " " ) + "</tr></tbody></table>" ;
2012-07-14 00:14:24 +00:00
if ( M . expandable ) { w . html ( Pa ) ; a ( document . body ) . children ( "div.jPicker.Container" ) . length == 0 ? a ( document . body ) . prepend ( w ) : a ( document . body ) . children ( "div.jPicker.Container:last" ) . after ( w ) ; w . mousedown ( function ( ) { a ( document . body ) . children ( "div.jPicker.Container" ) . css ( { zIndex : 10 } ) ; w . css ( { zIndex : 20 } ) } ) ; w . css ( { left : M . position . x == "left" ? I . offset ( ) . left - 530 - ( M . position . y == "center" ? 25 : 0 ) + "px" : M . position . x == "center" ? I . offset ( ) . left - 260 + "px" : M . position . x == "right" ? I . offset ( ) . left - 10 + ( M . position . y == "center" ? 25 : 0 ) +
"px" : M . position . x == "screenCenter" ? ( a ( document ) . width ( ) >> 1 ) - 260 + "px" : I . offset ( ) . left + parseInt ( M . position . x ) + "px" , position : "absolute" , top : M . position . y == "top" ? I . offset ( ) . top - 312 + "px" : M . position . y == "center" ? I . offset ( ) . top - 156 + "px" : M . position . y == "bottom" ? I . offset ( ) . top + 25 + "px" : I . offset ( ) . top + parseInt ( M . position . y ) + "px" } ) } else { w = a ( e ) ; w . html ( Pa ) } Pa = w . find ( "tbody:first" ) ; p = Pa . find ( "div.Map:first" ) ; L = Pa . find ( "div.Bar:first" ) ; var Wa = p . find ( "span" ) , db = L . find ( "span" ) ; T = Wa . filter ( ".Map1:first" ) ; N = Wa . filter ( ".Map2:first" ) ;
2012-07-14 02:04:34 +00:00
K = Wa . filter ( ".Map3:first" ) ; da = db . filter ( ".Map1:first" ) ; V = db . filter ( ".Map2:first" ) ; O = db . filter ( ".Map3:first" ) ; fa = db . filter ( ".Map4:first" ) ; sa = db . filter ( ".Map5:first" ) ; ha = db . filter ( ".Map6:first" ) ; ca = new n ( p , { map : { width : na . colorMap . width , height : na . colorMap . height } , arrow : { image : na . clientPath + na . colorMap . arrow . file , width : na . colorMap . arrow . width , height : na . colorMap . arrow . height } } ) ; ca . bind ( Ia ) ; ea = new n ( L , { map : { width : na . colorBar . width , height : na . colorBar . height } , arrow : { image : na . clientPath + na . colorBar . arrow . file ,
width : na . colorBar . arrow . width , height : na . colorBar . arrow . height } } ) ; ea . bind ( Qa ) ; qa = new f ( Pa , ta . active , M . expandable && M . bindToInput ? M . input : null , M . alphaPrecision ) ; Wa = Y != null ? Y . hex : null ; var tb = Pa . find ( ".Preview" ) ; db = Pa . find ( ".Button" ) ; ra = tb . find ( ".Active:first" ) . css ( { backgroundColor : Wa && "#" + Wa || "transparent" } ) ; la = tb . find ( ".Current:first" ) . css ( { backgroundColor : Wa && "#" + Wa || "transparent" } ) . bind ( "click" , Ma ) ; Ea . call ( e , la , Math . precision ( ta . current . val ( "a" ) * 100 ) / 255 , 4 ) ; ma = db . find ( ".Ok:first" ) . bind ( "click" , Ab ) ;
Z = db . find ( ".Cancel:first" ) . bind ( "click" , mb ) ; Aa = db . find ( ".Grid:first" ) ; setTimeout ( function ( ) { Ya . call ( e , T , na . clientPath + "Maps.png" ) ; Ya . call ( e , N , na . clientPath + "Maps.png" ) ; Ya . call ( e , K , na . clientPath + "map-opacity.png" ) ; Ya . call ( e , da , na . clientPath + "Bars.png" ) ; Ya . call ( e , V , na . clientPath + "Bars.png" ) ; Ya . call ( e , O , na . clientPath + "Bars.png" ) ; Ya . call ( e , fa , na . clientPath + "Bars.png" ) ; Ya . call ( e , sa , na . clientPath + "bar-opacity.png" ) ; Ya . call ( e , ha , na . clientPath + "AlphaBar.png" ) ; Ya . call ( e , tb . find ( "div:last" ) , na . clientPath + "preview-opacity.png" ) } ,
0 ) ; Pa . find ( "td.Radio input" ) . bind ( "click" , Za ) ; if ( ta . quickList && ta . quickList . length > 0 ) { db = "" ; for ( i = 0 ; i < ta . quickList . length ; i ++ ) { if ( ( typeof ta . quickList [ i ] ) . toString ( ) . toLowerCase ( ) == "string" ) ta . quickList [ i ] = new c ( { hex : ta . quickList [ i ] } ) ; var ub = ta . quickList [ i ] . val ( "a" ) , zb = ta . quickList [ i ] . val ( "ahex" ) ; if ( ! M . alphaSupport && zb ) zb = zb . substring ( 0 , 6 ) + "ff" ; var pb = ta . quickList [ i ] . val ( "hex" ) ; db += '<span class="QuickColor"' + ( zb && ' title="#' + zb + '"' || "" ) + ' style="background-color:' + ( pb && "#" + pb || "" ) + ";" + ( pb ? "" : "background-image:url(" +
na . clientPath + "NoColor.png)" ) + ( M . alphaSupport && ub && ub < 255 ? ";opacity:" + Math . precision ( ub / 255 , 4 ) + ";filter:Alpha(opacity=" + Math . precision ( ub / 2.55 , 4 ) + ")" : "" ) + '"> </span>' } Ya . call ( e , Aa , na . clientPath + "bar-opacity.png" ) ; Aa . html ( db ) ; Aa . find ( ".QuickColor" ) . click ( sb ) } Xa . call ( e , l . color . mode ) ; ta . active . bind ( Oa ) ; a . isFunction ( kb ) && ta . active . bind ( kb ) ; ta . current . bind ( fb ) ; if ( M . expandable ) { e . icon = I . parents ( ".Icon:first" ) ; Ka = e . icon . find ( ".Color:first" ) . css ( { backgroundColor : Wa && "#" + Wa || "transparent" } ) ; Ra = e . icon . find ( ".Alpha:first" ) ;
Ya . call ( e , Ra , na . clientPath + "bar-opacity.png" ) ; Ea . call ( e , Ra , Math . precision ( ( 255 - ( Y != null ? Y . a : 0 ) ) * 100 / 255 , 4 ) ) ; Na = e . icon . find ( ".Image:first" ) . css ( { backgroundImage : "url('" + na . clientPath + na . picker . file + "')" } ) . bind ( "click" , eb ) ; if ( M . bindToInput && M . updateInputColor ) M . input . css ( { backgroundColor : Wa && "#" + Wa || "transparent" , color : Y == null || Y . v > 75 ? "#000000" : "#ffffff" } ) ; Sa = Pa . find ( ".Move:first" ) . bind ( "mousedown" , xa ) ; ta . active . bind ( Pb ) } else Lb . call ( e ) } , na = l . images , aa = l . localization , ta = { active : ( typeof l . color . active ) . toString ( ) . toLowerCase ( ) ==
2012-06-23 19:40:40 +00:00
"string" ? new c ( { ahex : ! l . window . alphaSupport && l . color . active ? l . color . active . substring ( 0 , 6 ) + "ff" : l . color . active } ) : new c ( { ahex : ! l . window . alphaSupport && l . color . active . val ( "ahex" ) ? l . color . active . val ( "ahex" ) . substring ( 0 , 6 ) + "ff" : l . color . active . val ( "ahex" ) } ) , current : ( typeof l . color . active ) . toString ( ) . toLowerCase ( ) == "string" ? new c ( { ahex : ! l . window . alphaSupport && l . color . active ? l . color . active . substring ( 0 , 6 ) + "ff" : l . color . active } ) : new c ( { ahex : ! l . window . alphaSupport && l . color . active . val ( "ahex" ) ? l . color . active . val ( "ahex" ) . substring ( 0 ,
2012-07-14 02:04:34 +00:00
6 ) + "ff" : l . color . active . val ( "ahex" ) } ) , quickList : l . color . quickList } ; a . extend ( true , e , { commitCallback : Bb , liveCallback : kb , cancelCallback : Cb , color : ta , show : Lb , hide : Gb , destroy : function ( ) { w . find ( "td.Radio input" ) . unbind ( "click" , Za ) ; la . unbind ( "click" , Ma ) ; Z . unbind ( "click" , mb ) ; ma . unbind ( "click" , Ab ) ; if ( l . window . expandable ) { Na . unbind ( "click" , eb ) ; Sa . unbind ( "mousedown" , xa ) ; e . icon = null } w . find ( ".QuickColor" ) . unbind ( "click" , sb ) ; ha = sa = fa = O = V = da = K = N = T = L = p = null ; ca . destroy ( ) ; ca = null ; ea . destroy ( ) ; ea = null ; qa . destroy ( ) ; kb =
Cb = Bb = Aa = Z = ma = la = ra = qa = null ; w . html ( "" ) ; for ( i = 0 ; i < m . length ; i ++ ) m [ i ] == e && m . splice ( i , 1 ) } } ) ; m . push ( e ) ; setTimeout ( function ( ) { Rb . call ( e ) } , 0 ) } ) } ; a . fn . jPicker . defaults = { window : { title : null , effects : { type : "slide" , speed : { show : "slow" , hide : "fast" } } , position : { x : "screenCenter" , y : "top" } , expandable : false , liveUpdate : true , alphaSupport : false , alphaPrecision : 0 , updateInputColor : true } , color : { mode : "h" , active : new c ( { ahex : "#ffcc00ff" } ) , quickList : [ new c ( { h : 360 , s : 33 , v : 100 } ) , new c ( { h : 360 , s : 66 , v : 100 } ) , new c ( { h : 360 , s : 100 , v : 100 } ) ,
2012-06-23 19:40:40 +00:00
new c ( { h : 360 , s : 100 , v : 75 } ) , new c ( { h : 360 , s : 100 , v : 50 } ) , new c ( { h : 180 , s : 0 , v : 100 } ) , new c ( { h : 30 , s : 33 , v : 100 } ) , new c ( { h : 30 , s : 66 , v : 100 } ) , new c ( { h : 30 , s : 100 , v : 100 } ) , new c ( { h : 30 , s : 100 , v : 75 } ) , new c ( { h : 30 , s : 100 , v : 50 } ) , new c ( { h : 180 , s : 0 , v : 90 } ) , new c ( { h : 60 , s : 33 , v : 100 } ) , new c ( { h : 60 , s : 66 , v : 100 } ) , new c ( { h : 60 , s : 100 , v : 100 } ) , new c ( { h : 60 , s : 100 , v : 75 } ) , new c ( { h : 60 , s : 100 , v : 50 } ) , new c ( { h : 180 , s : 0 , v : 80 } ) , new c ( { h : 90 , s : 33 , v : 100 } ) , new c ( { h : 90 , s : 66 , v : 100 } ) , new c ( { h : 90 , s : 100 , v : 100 } ) , new c ( { h : 90 , s : 100 , v : 75 } ) , new c ( { h : 90 , s : 100 , v : 50 } ) ,
new c ( { h : 180 , s : 0 , v : 70 } ) , new c ( { h : 120 , s : 33 , v : 100 } ) , new c ( { h : 120 , s : 66 , v : 100 } ) , new c ( { h : 120 , s : 100 , v : 100 } ) , new c ( { h : 120 , s : 100 , v : 75 } ) , new c ( { h : 120 , s : 100 , v : 50 } ) , new c ( { h : 180 , s : 0 , v : 60 } ) , new c ( { h : 150 , s : 33 , v : 100 } ) , new c ( { h : 150 , s : 66 , v : 100 } ) , new c ( { h : 150 , s : 100 , v : 100 } ) , new c ( { h : 150 , s : 100 , v : 75 } ) , new c ( { h : 150 , s : 100 , v : 50 } ) , new c ( { h : 180 , s : 0 , v : 50 } ) , new c ( { h : 180 , s : 33 , v : 100 } ) , new c ( { h : 180 , s : 66 , v : 100 } ) , new c ( { h : 180 , s : 100 , v : 100 } ) , new c ( { h : 180 , s : 100 , v : 75 } ) , new c ( { h : 180 , s : 100 , v : 50 } ) , new c ( { h : 180 , s : 0 , v : 40 } ) , new c ( { h : 210 ,
s : 33 , v : 100 } ) , new c ( { h : 210 , s : 66 , v : 100 } ) , new c ( { h : 210 , s : 100 , v : 100 } ) , new c ( { h : 210 , s : 100 , v : 75 } ) , new c ( { h : 210 , s : 100 , v : 50 } ) , new c ( { h : 180 , s : 0 , v : 30 } ) , new c ( { h : 240 , s : 33 , v : 100 } ) , new c ( { h : 240 , s : 66 , v : 100 } ) , new c ( { h : 240 , s : 100 , v : 100 } ) , new c ( { h : 240 , s : 100 , v : 75 } ) , new c ( { h : 240 , s : 100 , v : 50 } ) , new c ( { h : 180 , s : 0 , v : 20 } ) , new c ( { h : 270 , s : 33 , v : 100 } ) , new c ( { h : 270 , s : 66 , v : 100 } ) , new c ( { h : 270 , s : 100 , v : 100 } ) , new c ( { h : 270 , s : 100 , v : 75 } ) , new c ( { h : 270 , s : 100 , v : 50 } ) , new c ( { h : 180 , s : 0 , v : 10 } ) , new c ( { h : 300 , s : 33 , v : 100 } ) , new c ( { h : 300 , s : 66 , v : 100 } ) ,
new c ( { h : 300 , s : 100 , v : 100 } ) , new c ( { h : 300 , s : 100 , v : 75 } ) , new c ( { h : 300 , s : 100 , v : 50 } ) , new c ( { h : 180 , s : 0 , v : 0 } ) , new c ( { h : 330 , s : 33 , v : 100 } ) , new c ( { h : 330 , s : 66 , v : 100 } ) , new c ( { h : 330 , s : 100 , v : 100 } ) , new c ( { h : 330 , s : 100 , v : 75 } ) , new c ( { h : 330 , s : 100 , v : 50 } ) , new c ] } , images : { clientPath : "/jPicker/images/" , colorMap : { width : 256 , height : 256 , arrow : { file : "mappoint.gif" , width : 15 , height : 15 } } , colorBar : { width : 20 , height : 256 , arrow : { file : "rangearrows.gif" , width : 20 , height : 7 } } , picker : { file : "picker.gif" , width : 25 , height : 24 } } , localization : { text : { title : "Drag Markers To Pick A Color" ,
newColor : "new" , currentColor : "current" , ok : "OK" , cancel : "Cancel" } , tooltips : { colors : { newColor : "New Color - Press “OK” To Commit" , currentColor : "Click To Revert To Original Color" } , buttons : { ok : "Commit To This Color Selection" , cancel : "Cancel And Revert To Original Color" } , hue : { radio : "Set To “Hue” Color Mode" , textbox : "Enter A “Hue” Value (0-360°)" } , saturation : { radio : "Set To “Saturation” Color Mode" , textbox : "Enter A “Saturation” Value (0-100%)" } ,
value : { radio : "Set To “Value” Color Mode" , textbox : "Enter A “Value” Value (0-100%)" } , red : { radio : "Set To “Red” Color Mode" , textbox : "Enter A “Red” Value (0-255)" } , green : { radio : "Set To “Green” Color Mode" , textbox : "Enter A “Green” Value (0-255)" } , blue : { radio : "Set To “Blue” Color Mode" , textbox : "Enter A “Blue” Value (0-255)" } , alpha : { radio : "Set To “Alpha” Color Mode" , textbox : "Enter A “Alpha” Value (0-100)" } ,
2012-07-04 14:42:50 +00:00
hex : { textbox : "Enter A “Hex” Color Value (#000000-#ffffff)" , alpha : "Enter A “Alpha” Value (#00-#ff)" } } } } } ) ( jQuery , "1.1.6" ) ; ( function ( a ) { function n ( m ) { var o = m || window . event , b = [ ] . slice . call ( arguments , 1 ) , d = 0 , e = 0 , l = 0 ; m = a . event . fix ( o ) ; m . type = "mousewheel" ; if ( o . wheelDelta ) d = o . wheelDelta / 120 ; if ( o . detail ) d = - o . detail / 3 ; l = d ; if ( o . axis !== undefined && o . axis === o . HORIZONTAL _AXIS ) { l = 0 ; e = - 1 * d } if ( o . wheelDeltaY !== undefined ) l = o . wheelDeltaY / 120 ; if ( o . wheelDeltaX !== undefined ) e = - 1 * o . wheelDeltaX / 120 ; b . unshift ( m , d , e , l ) ; return ( a . event . dispatch || a . event . handle ) . apply ( this , b ) } var f = [ "DOMMouseScroll" , "mousewheel" ] ; if ( a . event . fixHooks ) for ( var c = f . length ; c ; ) a . event . fixHooks [ f [ -- c ] ] =
a . event . mouseHooks ; a . event . special . mousewheel = { setup : function ( ) { if ( this . addEventListener ) for ( var m = f . length ; m ; ) this . addEventListener ( f [ -- m ] , n , false ) ; else this . onmousewheel = n } , teardown : function ( ) { if ( this . removeEventListener ) for ( var m = f . length ; m ; ) this . removeEventListener ( f [ -- m ] , n , false ) ; else this . onmousewheel = null } } ; a . fn . extend ( { mousewheel : function ( m ) { return m ? this . bind ( "mousewheel" , m ) : this . trigger ( "mousewheel" ) } , unmousewheel : function ( m ) { return this . unbind ( "mousewheel" , m ) } } ) } ) ( jQuery ) ;