2013-12-01 20:57:07 -05:00
/ * !
* jQuery JavaScript Library v1 . 8.1
* http : //jquery.com/
*
* Includes Sizzle . js
* http : //sizzlejs.com/
*
* Copyright 2012 jQuery Foundation and other contributors
* Released under the MIT license
* http : //jquery.org/license
*
* Date : Thu Aug 30 2012 17 : 17 : 22 GMT - 0400 ( Eastern Daylight Time )
* /
2014-01-28 22:46:58 -05:00
function BestInPlaceEditor ( e ) { this . element = e , this . initOptions ( ) , this . bindForm ( ) , this . initNil ( ) , jQuery ( this . activator ) . bind ( "click" , { editor : this } , this . clickHandler ) } function openAnalyze ( ) { analyzeOpen = ! 0 , findOpen && closeFind ( ) , organizeOpen && closeOrganize ( ) , $ ( "#sideOptionFind" ) . css ( "z-index" , "8" ) , $ ( "#sideOptionAnalyze, #closeAnalyze" ) . css ( "z-index" , "10" ) , $ ( "#sideOptionOrganize" ) . css ( "z-index" , "8" ) , $ ( "#sideOptionAnalyze" ) . animate ( { width : "100px" , height : "76px" } , 100 ) , $ ( "#closeAnalyze" ) . css ( "display" , "block" ) , $ ( "#sideOptionAnalyze" ) . css ( "cursor" , "default" ) ; var e = Object . keys ( Mconsole . graph . nodes ) . length , t = 0 ; Mconsole . graph . eachNode ( function ( e ) { e . eachAdjacency ( function ( ) { t ++ } ) } ) , t /= 2 , $ ( ".analysis" ) . html ( "<p>" + e + " topics</p><p>" + t + " synapses</p>" ) } function closeAnalyze ( ) { analyzeOpen = ! 1 , $ ( "#closeAnalyze" ) . css ( "display" , "none" ) , $ ( "#sideOptionAnalyze" ) . css ( "cursor" , "pointer" ) , $ ( "#sideOptionAnalyze" ) . animate ( { width : "64px" , height : "32px" } , 100 ) } function switchVisible ( e , t ) { categoryVisible [ e ] == 1 ? hideCategory ( e , t ) : categoryVisible [ e ] == 0 && showCategory ( e , t ) } function hideCategory ( e , t ) { t == null && ( t = 500 ) , Mconsole . graph . eachNode ( function ( t ) { t . getData ( "metacode" ) == e && ( t . setData ( "alpha" , . 4 , "end" ) , t . eachAdjacency ( function ( e ) { e . setData ( "alpha" , . 4 , "end" ) } ) ) } ) , Mconsole . fx . animate ( { modes : [ "node-property:alpha" , "edge-property:alpha" ] , duration : t } ) } function showCategory ( e , t ) { t == null && ( t = 500 ) , Mconsole . graph . eachNode ( function ( t ) { t . getData ( "metacode" ) == e && ( t . setData ( "alpha" , 1 , "end" ) , t . eachAdjacency ( function ( e ) { e . setData ( "alpha" , 1 , "end" ) } ) ) } ) , Mconsole . fx . animate ( { modes : [ "node-property:alpha" , "edge-property:alpha" ] , duration : t } ) } function hideAll ( e ) { e == null && ( e = 500 ) , Mconsole . graph . eachNode ( function ( e ) { ! e . getData ( "greenCircle" ) && ! e . getData ( "whiteCircle" ) && ( e . setData ( "alpha" , . 4 , "end" ) , e . eachAdjacency ( function ( e ) { e . setData ( "alpha" , . 4 , "end" ) } ) ) } ) , Mconsole . fx . animate ( { modes : [ "node-property:alpha" , "edge-property:alpha" ] , duration : e } ) } function showAll ( e ) { e == null && ( e = 500 ) , Mconsole . graph . eachNode ( function ( e ) { e . setData ( "alpha" , 1 , "end" ) , e . eachAdjacency ( function ( e ) { e . setData ( "alpha" , 1 , "end" ) } ) } ) , Mconsole . fx . animate ( { modes : [ "node-property:alpha" , "edge-property:alpha" ] , duration : e } ) } function onCanvasSearch ( e , t , n ) { e = name . toLowerCase ( ) , Mconsole . graph . eachNode ( function ( r ) { nodeName = r . name . toLowerCase ( ) , name != null ? nodeName . indexOf ( e ) !== - 1 && e != "" ? r . setData ( "whiteCircle" , ! 0 ) : r . setData ( "whiteCircle" , ! 1 ) : t != null ? r . getData ( "inmaps" ) . indexOf ( parseInt ( t ) ) !== - 1 ? r . setData ( "whiteCircle" , ! 0 ) : r . setData ( "whiteCircle" , ! 1 ) : n != null && ( r . getData ( "userid" ) . toString ( ) == n ? r . setData ( "whiteCircle" , ! 0 ) : r . setData ( "whiteCircle" , ! 1 ) ) , Mconsole . plot ( ) } ) } function clearCanvas ( ) { Mconsole . graph . eachNode ( function ( e ) { Mconsole . graph . removeNode ( e . id ) , Mconsole . labels . disposeLabel ( e . id ) , delete Mconsole . labels . labels [ "" + e . id ] } ) , Mconsole . plot ( ) } function clearCanvasExceptRoot ( ) { var e = new Array ; Mconsole . graph . eachNode ( function ( t ) { e . push ( t . id ) } ) ; var t = Mconsole . graph . nodes [ Mconsole . root ] ; e . forEach ( function ( e , n ) { e != t . id && ( Mconsole . graph . removeNode ( e ) , Mconsole . labels . hideLabel ( e ) , $ ( "#topic_" + e + "_label" ) . hide ( ) ) } ) , fetchRelatives ( t ) } function clearFoundData ( ) { Mconsole . graph . eachNode ( function ( e ) { e . getData ( "greenCircle" ) === ! 0 && ( Mconsole . graph . removeNode ( e . id ) , Mconsole . labels . hideLabel ( e . id ) , $ ( "#topic_" + e . id + "_label" ) . hide ( ) ) } ) , Mconsole . plot ( ) } function openFind ( ) { findOpen = ! 0 , analyzeOpen && closeAnalyze ( ) , organizeOpen && closeOrganize ( ) , $ ( "#sideOptionFind, #closeFind" ) . css ( "z-index" , "10" ) , $ ( "#sideOptionAnalyze" ) . css ( "z-index" , "9" ) , $ ( "#sideOptionOrganize" ) . css ( "z-index" , "8" ) , firstVal = $ ( '#sideOptionFind option[value="name"]' ) . attr ( "selected" ) , secondVal = $ ( '#sideOptionFind option[value="metacode"]' ) . attr ( "selected" ) , thirdVal = $ ( '#sideOptionFind option[value="map (by name)"]' ) . attr ( "selected" ) , fourthVal = $ ( '#sideOptionFind option[value="mapper (by name)"]' ) . attr ( "selected" ) , firstVal === "selected" || thirdVal === "selected" || fourthVal === "selected" ? $ ( "#sideOptionFind" ) . animate ( { width : "305px" , height : "76px" } , 100 , function ( ) { $ ( "#topic_by_name_input" ) . focus ( ) } ) : secondVal === "selected" ? $ ( "#sideOptionFind" ) . animate ( { width : "380px" , height : "463px" } , 100 , function ( ) { } ) : th
( e ) , add _direction _form ( e ) , add _name _form ( e ) } function add _name _form ( e ) { var t = '<span class="gray">Click to add description.</span>' ; $ ( "#edit_synapse" ) . append ( '<div id="edit_synapse_name"></div>' ) , $ ( "#edit_synapse_name" ) . attr ( "class" , "best_in_place best_in_place_desc" ) , $ ( "#edit_synapse_name" ) . attr ( "data-object" , "synapse" ) , $ ( "#edit_synapse_name" ) . attr ( "data-attribute" , "desc" ) , $ ( "#edit_synapse_name" ) . attr ( "data-type" , "input" ) , $ ( "#edit_synapse_name" ) . attr ( "data-nil" , t ) , $ ( "#edit_synapse_name" ) . attr ( "data-url" , "/synapses/" + e . getData ( "id" ) ) , $ ( "#edit_synapse_name" ) . html ( e . getData ( "desc" ) ) , $ ( "#edit_synapse_name" ) . html ( ) . trim ( ) == "" && $ ( "#edit_synapse_name" ) . html ( t ) , $ ( "#edit_synapse_name" ) . bind ( "ajax:success" , function ( ) { var n = $ ( this ) . html ( ) ; n == t ? e . setData ( "desc" , "" ) : e . setData ( "desc" , n ) , selectEdge ( e ) , Mconsole . plot ( ) } ) } function add _perms _form ( e ) { $ ( "#edit_synapse" ) . append ( '<div class="mapPerm"></div>' ) , $ ( "#edit_synapse .mapPerm" ) . html ( mk _permission ( e ) ) , userid == e . getData ( "userid" ) && ( $ ( "#edit_synapse" ) . append ( '<div class="permActivator" />' ) , $ ( "#edit_synapse .permActivator" ) . append ( '<div class="editSettings" />' ) , $ ( "#edit_synapse .editSettings" ) . append ( "<span>Permissions:</span>" ) , $ ( "#edit_synapse .editSettings" ) . append ( '<span class="click-to-edit" />' ) , $ ( "#edit_synapse .click-to-edit" ) . attr ( "title" , "Click to Edit" ) , $ ( "#edit_synapse .click-to-edit" ) . append ( best _in _place _perms ( e ) ) , $ ( "#edit_synapse .editSettings" ) . append ( '<div class="clearfloat" />' ) , $ ( "#edit_synapse" ) . find ( ".best_in_place_permission" ) . bind ( "ajax:success" , function ( ) { var e = $ ( this ) . html ( ) ; switch ( e ) { case "commons" : $ ( "#edit_synapse .mapPerm" ) . html ( "co" ) ; break ; case "public" : $ ( "#edit_synapse .mapPerm" ) . html ( "pu" ) ; break ; case "private" : $ ( "#edit_synapse .mapPerm" ) . html ( "pr" ) } } ) , $ ( "#edit_synapse .permActivator" ) . bind ( "mouseover" , function ( ) { clearTimeout ( MetamapsModel . edgePermTimer2 ) , that = this , MetamapsModel . edgePermTimer1 = setTimeout ( function ( ) { MetamapsModel . edgePermSliding || ( MetamapsModel . edgePermSliding = ! 0 , $ ( that ) . animate ( { width : "203px" , height : "37px" } , 300 , function ( ) { MetamapsModel . edgePermSliding = ! 1 } ) ) } , 300 ) } ) , $ ( "#edit_synapse .permActivator" ) . bind ( "mouseout" , function ( ) { clearTimeout ( MetamapsModel . edgePermTimer1 ) , that = this , MetamapsModel . edgePermTimer2 = setTimeout ( function ( ) { MetamapsModel . edgePermSliding || ( MetamapsModel . edgePermSliding = ! 0 , $ ( that ) . animate ( { height : "16px" , width : "16px" } , 300 , function ( ) { MetamapsModel . edgePermSliding = ! 1 } ) ) } , 800 ) } ) ) } function add _direction _form ( e ) { $ ( "#edit_synapse" ) . append ( '<input type="checkbox" id="edit_synapse_left">' ) , $ ( "#edit_synapse" ) . append ( '<label class="left"><</label>' ) , $ ( "#edit_synapse" ) . append ( '<input type="checkbox" id="edit_synapse_right">' ) , $ ( "#edit_synapse" ) . append ( '<label class="right">></label>' ) ; if ( e . nodeFrom . pos . x < e . nodeTo . pos . x || e . nodeFrom . pos . x == e . nodeTo . pos . x && e . nodeFrom . pos . y < e . nodeTo . pos . y ) var t = e . nodeTo , n = e . nodeFrom ; else var t = e . nodeFrom , n = e . nodeTo ; var r = e . getData ( "category" ) ; if ( r == "from-to" ) { var i = e . getData ( "direction" ) ; i [ 0 ] == t . id ? $ ( "#edit_synapse_left" ) . prop ( "checked" , ! 0 ) : $ ( "#edit_synapse_right" ) . prop ( "checked" , ! 0 ) } else r == "both" && ( $ ( "#edit_synapse_left" ) . prop ( "checked" , ! 0 ) , $ ( "#edit_synapse_right" ) . prop ( "checked" , ! 0 ) ) ; $ ( "#edit_synapse_left, #edit_synapse_right" ) . click ( function ( ) { var r = $ ( "#edit_synapse_left" ) . is ( ":checked" ) , i = $ ( "#edit_synapse_right" ) . is ( ":checked" ) , s = e . getData ( "direction" ) , o = "none" ; r && i ? o = "both" : ! r && i ? ( o = "from-to" , s = [ n . id , t . id ] ) : r && ! i && ( o = "from-to" , s = [ t . id , n . id ] ) , $ . ajax ( { type : "PUT" , url : "/synapses/" + e . getData ( "id" ) , data : { synapse : { category : o } , node1 _id : { node1 : s [ 0 ] } , node2 _id : { node2 : s [ 1 ] } } , success : function ( t ) { updateEdgeDisplay ( e , s , o ) } } ) } ) } function updateEdgeDisplay ( e , t , n ) { e . setData ( "category" , n ) , e . setData ( "direction" , t ) , Mconsole . plot ( ) } function best _in _place _perms ( e ) { var t = ' < span class = "best_in_place best_in_place_permission" id = "best_in_place_topic_$_id_$_permission" data - url = "/synapses/$_id_$" data - object = "synapse" data - collection = $ _permission _choices _$
, a . insertBefore ( n , a . firstChild ) , r = i . createElement ( "div" ) , n . appendChild ( r ) , r . innerHTML = "<table><tr><td></td><td>t</td></tr></table>" , s = r . getElementsByTagName ( "td" ) , s [ 0 ] . style . cssText = "padding:0;margin:0;border:0;display:none" , c = s [ 0 ] . offsetHeight === 0 , s [ 0 ] . style . display = "" , s [ 1 ] . style . display = "none" , t . reliableHiddenOffsets = c && s [ 0 ] . offsetHeight === 0 , r . innerHTML = "" , r . style . cssText = "box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;" , t . boxSizing = r . offsetWidth === 4 , t . doesNotIncludeMarginInBodyOffset = a . offsetTop !== 1 , e . getComputedStyle && ( t . pixelPosition = ( e . getComputedStyle ( r , null ) || { } ) . top !== "1%" , t . boxSizingReliable = ( e . getComputedStyle ( r , null ) || { width : "4px" } ) . width === "4px" , o = i . createElement ( "div" ) , o . style . cssText = r . style . cssText = u , o . style . marginRight = o . style . width = "0" , r . style . width = "1px" , r . appendChild ( o ) , t . reliableMarginRight = ! parseFloat ( ( e . getComputedStyle ( o , null ) || { } ) . marginRight ) ) , typeof r . style . zoom != "undefined" && ( r . innerHTML = "" , r . style . cssText = u + "width:1px;padding:1px;display:inline;zoom:1" , t . inlineBlockNeedsLayout = r . offsetWidth === 3 , r . style . display = "block" , r . style . overflow = "visible" , r . innerHTML = "<div></div>" , r . firstChild . style . width = "5px" , t . shrinkWrapBlocks = r . offsetWidth !== 3 , n . style . zoom = 1 ) , a . removeChild ( n ) , n = r = s = o = null } ) , a . removeChild ( p ) , n = r = s = o = u = a = p = null , t } ( ) ; var D = /(?:\{[\s\S]*\}|\[[\s\S]*\])$/ , P = /([A-Z])/g ; v . extend ( { cache : { } , deletedIds : [ ] , uuid : 0 , expando : "jQuery" + ( v . fn . jquery + Math . random ( ) ) . replace ( /\D/g , "" ) , noData : { embed : ! 0 , object : "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" , applet : ! 0 } , hasData : function ( e ) { return e = e . nodeType ? v . cache [ e [ v . expando ] ] : e [ v . expando ] , ! ! e && ! B ( e ) } , data : function ( e , n , r , i ) { if ( ! v . acceptData ( e ) ) return ; var s , o , u = v . expando , a = typeof n == "string" , f = e . nodeType , l = f ? v . cache : e , c = f ? e [ u ] : e [ u ] && u ; if ( ( ! c || ! l [ c ] || ! i && ! l [ c ] . data ) && a && r === t ) return ; c || ( f ? e [ u ] = c = v . deletedIds . pop ( ) || ++ v . uuid : c = u ) , l [ c ] || ( l [ c ] = { } , f || ( l [ c ] . toJSON = v . noop ) ) ; if ( typeof n == "object" || typeof n == "function" ) i ? l [ c ] = v . extend ( l [ c ] , n ) : l [ c ] . data = v . extend ( l [ c ] . data , n ) ; return s = l [ c ] , i || ( s . data || ( s . data = { } ) , s = s . data ) , r !== t && ( s [ v . camelCase ( n ) ] = r ) , a ? ( o = s [ n ] , o == null && ( o = s [ v . camelCase ( n ) ] ) ) : o = s , o } , removeData : function ( e , t , n ) { if ( ! v . acceptData ( e ) ) return ; var r , i , s , o = e . nodeType , u = o ? v . cache : e , a = o ? e [ v . expando ] : v . expando ; if ( ! u [ a ] ) return ; if ( t ) { r = n ? u [ a ] : u [ a ] . data ; if ( r ) { v . isArray ( t ) || ( t in r ? t = [ t ] : ( t = v . camelCase ( t ) , t in r ? t = [ t ] : t = t . split ( " " ) ) ) ; for ( i = 0 , s = t . length ; i < s ; i ++ ) delete r [ t [ i ] ] ; if ( ! ( n ? B : v . isEmptyObject ) ( r ) ) return } } if ( ! n ) { delete u [ a ] . data ; if ( ! B ( u [ a ] ) ) return } o ? v . cleanData ( [ e ] , ! 0 ) : v . support . deleteExpando || u != u . window ? delete u [ a ] : u [ a ] = null } , _data : function ( e , t , n ) { return v . data ( e , t , n , ! 0 ) } , acceptData : function ( e ) { var t = e . nodeName && v . noData [ e . nodeName . toLowerCase ( ) ] ; return ! t || t !== ! 0 && e . getAttribute ( "classid" ) === t } } ) , v . fn . extend ( { data : function ( e , n ) { var r , i , s , o , u , a = this [ 0 ] , f = 0 , l = null ; if ( e === t ) { if ( this . length ) { l = v . data ( a ) ; if ( a . nodeType === 1 && ! v . _data ( a , "parsedAttrs" ) ) { s = a . attributes ; for ( u = s . length ; f < u ; f ++ ) o = s [ f ] . name , o . indexOf ( "data-" ) === 0 && ( o = v . camelCase ( o . substring ( 5 ) ) , H ( a , o , l [ o ] ) ) ; v . _data ( a , "parsedAttrs" , ! 0 ) } } return l } return typeof e == "object" ? this . each ( function ( ) { v . data ( this , e ) } ) : ( r = e . split ( "." , 2 ) , r [ 1 ] = r [ 1 ] ? "." + r [ 1 ] : "" , i = r [ 1 ] + "!" , v . access ( this , function ( n ) { if ( n === t ) return l = this . triggerHandler ( "getData" + i , [ r [ 0 ] ] ) , l === t && a && ( l = v . data ( a , e ) , l = H ( a , e , l ) ) , l === t && r [ 1 ] ? this . data ( r [ 0 ] ) : l ; r [ 1 ] = n , this . each ( function ( ) { var t = v ( this ) ; t . triggerHandler ( "setData" + i , r ) , v . data ( this , e , n ) , t . triggerHandler ( "changeData" + i , r ) } ) } , null , n , arguments . length > 1 , null , ! 1 ) ) } , removeData : function ( e ) { return this . each ( function ( ) { v . removeData ( this , e ) } ) } } ) , v . extend ( { queue : function ( e , t , n ) { var r ; if ( e ) return t = ( t || "fx" ) + "queue" , r = v . _data ( e , t ) , n && ( ! r || v . isArray ( n ) ? r = v . _data ( e , t , v . makeArray ( n ) ) : r . push ( n ) ) , r || [ ] } , dequeue : function ( e , t ) { t = t || "fx" ; var n = v . queue ( e , t ) , r = n . length , i = n . shift ( ) , s = v . _queueHooks ( e , t ) , o = function ( ) { v . dequeue ( e , t ) } ; i === "inprogress" && ( i = n . shift ( ) , r -- ) , i && ( t === "fx" && n . unshift ( "inprogress" ) , delete s . stop , i . call ( e , o , s ) ) , ! r && s && s . empty . fire ( ) } , _queueHooks : function ( e , t ) { var n = t + "queueHooks" ; re
filter : { ID : i ? function ( e ) { return e = e . replace ( z , "" ) , function ( t ) { return t . getAttribute ( "id" ) === e } } : function ( e ) { return e = e . replace ( z , "" ) , function ( t ) { var n = typeof t . getAttributeNode !== p && t . getAttributeNode ( "id" ) ; return n && n . value === e } } , TAG : function ( e ) { return e === "*" ? function ( ) { return ! 0 } : ( e = e . replace ( z , "" ) . toLowerCase ( ) , function ( t ) { return t . nodeName && t . nodeName . toLowerCase ( ) === e } ) } , CLASS : function ( e ) { var t = x [ d ] [ e ] ; return t || ( t = x ( e , new RegExp ( "(^|" + C + ")" + e + "(" + C + "|$)" ) ) ) , function ( e ) { return t . test ( e . className || typeof e . getAttribute !== p && e . getAttribute ( "class" ) || "" ) } } , ATTR : function ( e , t , n ) { return t ? function ( r ) { var i = Y . attr ( r , e ) , s = i + "" ; if ( i == null ) return t === "!=" ; switch ( t ) { case "=" : return s === n ; case "!=" : return s !== n ; case "^=" : return n && s . indexOf ( n ) === 0 ; case "*=" : return n && s . indexOf ( n ) > - 1 ; case "$=" : return n && s . substr ( s . length - n . length ) === n ; case "~=" : return ( " " + s + " " ) . indexOf ( n ) > - 1 ; case "|=" : return s === n || s . substr ( 0 , n . length + 1 ) === n + "-" } } : function ( t ) { return Y . attr ( t , e ) != null } } , CHILD : function ( e , t , n , r ) { if ( e === "nth" ) { var i = y ++ ; return function ( e ) { var t , s , o = 0 , u = e ; if ( n === 1 && r === 0 ) return ! 0 ; t = e . parentNode ; if ( t && ( t [ d ] !== i || ! e . sizset ) ) { for ( u = t . firstChild ; u ; u = u . nextSibling ) if ( u . nodeType === 1 ) { u . sizset = ++ o ; if ( u === e ) break } t [ d ] = i } return s = e . sizset - r , n === 0 ? s === 0 : s % n === 0 && s / n >= 0 } } return function ( t ) { var n = t ; switch ( e ) { case "only" : case "first" : while ( n = n . previousSibling ) if ( n . nodeType === 1 ) return ! 1 ; if ( e === "first" ) return ! 0 ; n = t ; case "last" : while ( n = n . nextSibling ) if ( n . nodeType === 1 ) return ! 1 ; return ! 0 } } } , PSEUDO : function ( e , t , n , r ) { var i , o = s . pseudos [ e ] || s . pseudos [ e . toLowerCase ( ) ] ; return o || Y . error ( "unsupported pseudo: " + e ) , o [ d ] ? o ( t , n , r ) : o . length > 1 ? ( i = [ e , e , "" , t ] , function ( e ) { return o ( e , 0 , i ) } ) : o } } , pseudos : { not : E ( function ( e , t , n ) { var r = f ( e . replace ( D , "$1" ) , t , n ) ; return function ( e ) { return ! r ( e ) } } ) , enabled : function ( e ) { return e . disabled === ! 1 } , disabled : function ( e ) { return e . disabled === ! 0 } , checked : function ( e ) { var t = e . nodeName . toLowerCase ( ) ; return t === "input" && ! ! e . checked || t === "option" && ! ! e . selected } , selected : function ( e ) { return e . parentNode && e . parentNode . selectedIndex , e . selected === ! 0 } , parent : function ( e ) { return ! s . pseudos . empty ( e ) } , empty : function ( e ) { var t ; e = e . firstChild ; while ( e ) { if ( e . nodeName > "@" || ( t = e . nodeType ) === 3 || t === 4 ) return ! 1 ; e = e . nextSibling } return ! 0 } , contains : E ( function ( e ) { return function ( t ) { return ( t . textContent || t . innerText || o ( t ) ) . indexOf ( e ) > - 1 } } ) , has : E ( function ( e ) { return function ( t ) { return Y ( e , t ) . length > 0 } } ) , header : function ( e ) { return R . test ( e . nodeName ) } , text : function ( e ) { var t , n ; return e . nodeName . toLowerCase ( ) === "input" && ( t = e . type ) === "text" && ( ( n = e . getAttribute ( "type" ) ) == null || n . toLowerCase ( ) === t ) } , radio : Z ( "radio" ) , checkbox : Z ( "checkbox" ) , file : Z ( "file" ) , password : Z ( "password" ) , image : Z ( "image" ) , submit : et ( "submit" ) , reset : et ( "reset" ) , button : function ( e ) { var t = e . nodeName . toLowerCase ( ) ; return t === "input" && e . type === "button" || t === "button" } , input : function ( e ) { return U . test ( e . nodeName ) } , focus : function ( e ) { var t = e . ownerDocument ; return e === t . activeElement && ( ! t . hasFocus || t . hasFocus ( ) ) && ( ! ! e . type || ! ! e . href ) } , active : function ( e ) { return e === e . ownerDocument . activeElement } } , setFilters : { first : function ( e , t , n ) { return n ? e . slice ( 1 ) : [ e [ 0 ] ] } , last : function ( e , t , n ) { var r = e . pop ( ) ; return n ? e : [ r ] } , even : function ( e , t , n ) { var r = [ ] , i = n ? 1 : 0 , s = e . length ; for ( ; i < s ; i += 2 ) r . push ( e [ i ] ) ; return r } , odd : function ( e , t , n ) { var r = [ ] , i = n ? 0 : 1 , s = e . length ; for ( ; i < s ; i += 2 ) r . push ( e [ i ] ) ; return r } , lt : function ( e , t , n ) { return n ? e . slice ( + t ) : e . slice ( 0 , + t ) } , gt : function ( e , t , n ) { return n ? e . slice ( 0 , + t + 1 ) : e . slice ( + t + 1 ) } , eq : function ( e , t , n ) { var r = e . splice ( + t , 1 ) ; return n ? e : r } } } , l = g . compareDocumentPosition ? function ( e , t ) { return e === t ? ( c = ! 0 , 0 ) : ( ! e . compareDocumentPosition || ! t . compareDocumentPosition ? e . compareDocumentPosition : e . compareDocumentPosition ( t ) & 4 ) ? - 1 : 1 } : function ( e , t ) { if ( e === t ) return c = ! 0 , 0 ; if ( e . sourceIndex && t . sourceIndex ) return e . sourceIndex - t . sourceIndex ; var n , r , i = [ ] , s = [ ] , o = e . parentNode , u = t . parentNode , a = o ; if ( o === u ) return tt ( e , t ) ; if ( ! o ) return - 1 ; if ( ! u ) return 1 ; while ( a ) i . unshift ( a ) , a = a . parentNode ; a = u ; while ( a ) s . unshift ( a ) , a = a . parentNode ; n = i . length , r = s . length ; for ( var f = 0 ; f < n && f < r ; f ++ ) if ( i [ f ] !== s [ f ] ) return tt ( i [ f ] , s [ f ] ) ; return f === n ? tt ( e , s [ f ] , - 1 ) : tt ( i [ f ] , t , 1 ) } , [ 0 , 0 ] . s
[ this . easing ] ( e , this . options . duration * e , 0 , 1 , this . options . duration ) : this . pos = t = e , this . now = ( this . end - this . start ) * t + this . start , this . options . step && this . options . step . call ( this . elem , this . now , this ) , n && n . set ? n . set ( this ) : Yn . propHooks . _default . set ( this ) , this } } , Yn . prototype . init . prototype = Yn . prototype , Yn . propHooks = { _default : { get : function ( e ) { var t ; return e . elem [ e . prop ] == null || ! ! e . elem . style && e . elem . style [ e . prop ] != null ? ( t = v . css ( e . elem , e . prop , ! 1 , "" ) , ! t || t === "auto" ? 0 : t ) : e . elem [ e . prop ] } , set : function ( e ) { v . fx . step [ e . prop ] ? v . fx . step [ e . prop ] ( e ) : e . elem . style && ( e . elem . style [ v . cssProps [ e . prop ] ] != null || v . cssHooks [ e . prop ] ) ? v . style ( e . elem , e . prop , e . now + e . unit ) : e . elem [ e . prop ] = e . now } } } , Yn . propHooks . scrollTop = Yn . propHooks . scrollLeft = { set : function ( e ) { e . elem . nodeType && e . elem . parentNode && ( e . elem [ e . prop ] = e . now ) } } , v . each ( [ "toggle" , "show" , "hide" ] , function ( e , t ) { var n = v . fn [ t ] ; v . fn [ t ] = function ( r , i , s ) { return r == null || typeof r == "boolean" || ! e && v . isFunction ( r ) && v . isFunction ( i ) ? n . apply ( this , arguments ) : this . animate ( Zn ( t , ! 0 ) , r , i , s ) } } ) , v . fn . extend ( { fadeTo : function ( e , t , n , r ) { return this . filter ( Gt ) . css ( "opacity" , 0 ) . show ( ) . end ( ) . animate ( { opacity : t } , e , n , r ) } , animate : function ( e , t , n , r ) { var i = v . isEmptyObject ( e ) , s = v . speed ( t , n , r ) , o = function ( ) { var t = Kn ( this , v . extend ( { } , e ) , s ) ; i && t . stop ( ! 0 ) } ; return i || s . queue === ! 1 ? this . each ( o ) : this . queue ( s . queue , o ) } , stop : function ( e , n , r ) { var i = function ( e ) { var t = e . stop ; delete e . stop , t ( r ) } ; return typeof e != "string" && ( r = n , n = e , e = t ) , n && e !== ! 1 && this . queue ( e || "fx" , [ ] ) , this . each ( function ( ) { var t = ! 0 , n = e != null && e + "queueHooks" , s = v . timers , o = v . _data ( this ) ; if ( n ) o [ n ] && o [ n ] . stop && i ( o [ n ] ) ; else for ( n in o ) o [ n ] && o [ n ] . stop && Wn . test ( n ) && i ( o [ n ] ) ; for ( n = s . length ; n -- ; ) s [ n ] . elem === this && ( e == null || s [ n ] . queue === e ) && ( s [ n ] . anim . stop ( r ) , t = ! 1 , s . splice ( n , 1 ) ) ; ( t || ! r ) && v . dequeue ( this , e ) } ) } } ) , v . each ( { slideDown : Zn ( "show" ) , slideUp : Zn ( "hide" ) , slideToggle : Zn ( "toggle" ) , fadeIn : { opacity : "show" } , fadeOut : { opacity : "hide" } , fadeToggle : { opacity : "toggle" } } , function ( e , t ) { v . fn [ e ] = function ( e , n , r ) { return this . animate ( t , e , n , r ) } } ) , v . speed = function ( e , t , n ) { var r = e && typeof e == "object" ? v . extend ( { } , e ) : { complete : n || ! n && t || v . isFunction ( e ) && e , duration : e , easing : n && t || t && ! v . isFunction ( t ) && t } ; r . duration = v . fx . off ? 0 : typeof r . duration == "number" ? r . duration : r . duration in v . fx . speeds ? v . fx . speeds [ r . duration ] : v . fx . speeds . _default ; if ( r . queue == null || r . queue === ! 0 ) r . queue = "fx" ; return r . old = r . complete , r . complete = function ( ) { v . isFunction ( r . old ) && r . old . call ( this ) , r . queue && v . dequeue ( this , r . queue ) } , r } , v . easing = { linear : function ( e ) { return e } , swing : function ( e ) { return . 5 - Math . cos ( e * Math . PI ) / 2 } } , v . timers = [ ] , v . fx = Yn . prototype . init , v . fx . tick = function ( ) { var e , t = v . timers , n = 0 ; for ( ; n < t . length ; n ++ ) e = t [ n ] , ! e ( ) && t [ n ] === e && t . splice ( n -- , 1 ) ; t . length || v . fx . stop ( ) } , v . fx . timer = function ( e ) { e ( ) && v . timers . push ( e ) && ! Rn && ( Rn = setInterval ( v . fx . tick , v . fx . interval ) ) } , v . fx . interval = 13 , v . fx . stop = function ( ) { clearInterval ( Rn ) , Rn = null } , v . fx . speeds = { slow : 600 , fast : 200 , _default : 400 } , v . fx . step = { } , v . expr && v . expr . filters && ( v . expr . filters . animated = function ( e ) { return v . grep ( v . timers , function ( t ) { return e === t . elem } ) . length } ) ; var er = /^(?:body|html)$/i ; v . fn . offset = function ( e ) { if ( arguments . length ) return e === t ? this : this . each ( function ( t ) { v . offset . setOffset ( this , e , t ) } ) ; var n , r , i , s , o , u , a , f , l , c , h = this [ 0 ] , p = h && h . ownerDocument ; if ( ! p ) return ; return ( i = p . body ) === h ? v . offset . bodyOffset ( h ) : ( r = p . documentElement , v . contains ( r , h ) ? ( n = h . getBoundingClientRect ( ) , s = tr ( p ) , o = r . clientTop || i . clientTop || 0 , u = r . clientLeft || i . clientLeft || 0 , a = s . pageYOffset || r . scrollTop , f = s . pageXOffset || r . scrollLeft , l = n . top + a - o , c = n . left + f - u , { top : l , left : c } ) : { top : 0 , left : 0 } ) } , v . offset = { bodyOffset : function ( e ) { var t = e . offsetTop , n = e . offsetLeft ; return v . support . doesNotIncludeMarginInBodyOffset && ( t += parseFloat ( v . css ( e , "marginTop" ) ) || 0 , n += parseFloat ( v . css ( e , "marginLeft" ) ) || 0 ) , { top : t , left : n } } , setOffset : function ( e , t , n ) { var r = v . css ( e , "position" ) ; r === "static" && ( e . style . position = "relative" ) ; var i = v ( e ) , s = i . offset ( ) , o = v . css ( e , "top" ) , u = v . css ( e , "left" ) , a = ( r === "absolute" || r === "fixed" ) && v . inArray ( "auto" , [ o , u ] ) > - 1 , f = { } , l = { } , c , h ; a ? ( l = i . position ( ) , c = l . top , h = l . left ) : ( c = parseFloat ( o ) || 0 , h = parseFloat ( u ) || 0 ) , v . isFunction ( t ) && ( t = t . call ( e , n , s ) ) , t . top != nul
[ 2 ] [ 0 ] ) && isFinite ( e [ 2 ] [ 1 ] ) } function V ( e , t , n ) { if ( ! X ( t ) ) return ; e . m _ = t ; if ( n ) { var r = t [ 0 ] [ 0 ] * t [ 1 ] [ 1 ] - t [ 0 ] [ 1 ] * t [ 1 ] [ 0 ] ; e . lineScale _ = s ( i ( r ) ) } } function $ ( e ) { this . type _ = e , this . x0 _ = 0 , this . y0 _ = 0 , this . r0 _ = 0 , this . x1 _ = 0 , this . y1 _ = 0 , this . r1 _ = 0 , this . colors _ = [ ] } function J ( e , t ) { Q ( e ) ; switch ( t ) { case "repeat" : case null : case "" : this . repetition _ = "repeat" ; break ; case "repeat-x" : case "repeat-y" : case "no-repeat" : this . repetition _ = t ; break ; default : K ( "SYNTAX_ERR" ) } this . src _ = e . src , this . width _ = e . width , this . height _ = e . height } function K ( e ) { throw new G ( e ) } function Q ( e ) { ( ! e || e . nodeType != 1 || e . tagName != "IMG" ) && K ( "TYPE_MISMATCH_ERR" ) , e . readyState != "complete" && K ( "INVALID_STATE_ERR" ) } function G ( e ) { this . code = this [ e ] , this . message = e + ": DOM Exception " + this . code } var e = Math , t = e . round , n = e . sin , r = e . cos , i = e . abs , s = e . sqrt , o = 10 , u = o / 2 , a = + navigator . userAgent . match ( /MSIE ([\d.]+)?/ ) [ 1 ] , l = Array . prototype . slice ; d ( document ) ; var v = { init : function ( e ) { var t = e || document ; t . createElement ( "canvas" ) , t . attachEvent ( "onreadystatechange" , c ( this . init _ , this , t ) ) } , init _ : function ( e ) { var t = e . getElementsByTagName ( "canvas" ) ; for ( var n = 0 ; n < t . length ; n ++ ) this . initElement ( t [ n ] ) } , initElement : function ( e ) { if ( ! e . getContext ) { e . getContext = f , d ( e . ownerDocument ) , e . innerHTML = "" , e . attachEvent ( "onpropertychange" , m ) , e . attachEvent ( "onresize" , g ) ; var t = e . attributes ; t . width && t . width . specified ? e . style . width = t . width . nodeValue + "px" : e . width = e . clientWidth , t . height && t . height . specified ? e . style . height = t . height . nodeValue + "px" : e . height = e . clientHeight } return e } } ; v . init ( ) ; var y = [ ] ; for ( var b = 0 ; b < 16 ; b ++ ) for ( var w = 0 ; w < 16 ; w ++ ) y [ b * 16 + w ] = b . toString ( 16 ) + w . toString ( 16 ) ; var T = { aliceblue : "#F0F8FF" , antiquewhite : "#FAEBD7" , aquamarine : "#7FFFD4" , azure : "#F0FFFF" , beige : "#F5F5DC" , bisque : "#FFE4C4" , black : "#000000" , blanchedalmond : "#FFEBCD" , blueviolet : "#8A2BE2" , brown : "#A52A2A" , burlywood : "#DEB887" , cadetblue : "#5F9EA0" , chartreuse : "#7FFF00" , chocolate : "#D2691E" , coral : "#FF7F50" , cornflowerblue : "#6495ED" , cornsilk : "#FFF8DC" , crimson : "#DC143C" , cyan : "#00FFFF" , darkblue : "#00008B" , darkcyan : "#008B8B" , darkgoldenrod : "#B8860B" , darkgray : "#A9A9A9" , darkgreen : "#006400" , darkgrey : "#A9A9A9" , darkkhaki : "#BDB76B" , darkmagenta : "#8B008B" , darkolivegreen : "#556B2F" , darkorange : "#FF8C00" , darkorchid : "#9932CC" , darkred : "#8B0000" , darksalmon : "#E9967A" , darkseagreen : "#8FBC8F" , darkslateblue : "#483D8B" , darkslategray : "#2F4F4F" , darkslategrey : "#2F4F4F" , darkturquoise : "#00CED1" , darkviolet : "#9400D3" , deeppink : "#FF1493" , deepskyblue : "#00BFFF" , dimgray : "#696969" , dimgrey : "#696969" , dodgerblue : "#1E90FF" , firebrick : "#B22222" , floralwhite : "#FFFAF0" , forestgreen : "#228B22" , gainsboro : "#DCDCDC" , ghostwhite : "#F8F8FF" , gold : "#FFD700" , goldenrod : "#DAA520" , grey : "#808080" , greenyellow : "#ADFF2F" , honeydew : "#F0FFF0" , hotpink : "#FF69B4" , indianred : "#CD5C5C" , indigo : "#4B0082" , ivory : "#FFFFF0" , khaki : "#F0E68C" , lavender : "#E6E6FA" , lavenderblush : "#FFF0F5" , lawngreen : "#7CFC00" , lemonchiffon : "#FFFACD" , lightblue : "#ADD8E6" , lightcoral : "#F08080" , lightcyan : "#E0FFFF" , lightgoldenrodyellow : "#FAFAD2" , lightgreen : "#90EE90" , lightgrey : "#D3D3D3" , lightpink : "#FFB6C1" , lightsalmon : "#FFA07A" , lightseagreen : "#20B2AA" , lightskyblue : "#87CEFA" , lightslategray : "#778899" , lightslategrey : "#778899" , lightsteelblue : "#B0C4DE" , lightyellow : "#FFFFE0" , limegreen : "#32CD32" , linen : "#FAF0E6" , magenta : "#FF00FF" , mediumaquamarine : "#66CDAA" , mediumblue : "#0000CD" , mediumorchid : "#BA55D3" , mediumpurple : "#9370DB" , mediumseagreen : "#3CB371" , mediumslateblue : "#7B68EE" , mediumspringgreen : "#00FA9A" , mediumturquoise : "#48D1CC" , mediumvioletred : "#C71585" , midnightblue : "#191970" , mintcream : "#F5FFFA" , mistyrose : "#FFE4E1" , moccasin : "#FFE4B5" , navajowhite : "#FFDEAD" , oldlace : "#FDF5E6" , olivedrab : "#6B8E23" , orange : "#FFA500" , orangered : "#FF4500" , orchid : "#DA70D6" , palegoldenrod : "#EEE8AA" , palegreen : "#98FB98" , paleturquoise : "#AFEEEE" , palevioletred : "#DB7093" , papayawhip : "#FFEFD5" , peachpuff : "#FFDAB9" , peru : "#CD853F" , pink : "#FFC0CB" , plum : "#DDA0DD" , powderblue : "#B0E0E6" , rosybrown : "#BC8F8F" , royalblue : "#4169E1" , saddlebrown : "#8B4513" , salmon : "#FA8072" , sandybrown : "#F4A460" , seagreen : "#2E8B57" , seashell : "#FFF5EE" , sienna : "#A0522D" , skyblue : "#87CEEB" , slateblue : "#6A5ACD" , slategray : "#708090" , slategrey : "#708090" , snow : "#FFFAFA" , springgreen : "#00FF7F" , steelblue : " # 4682 B4
: ! 0 , injectInto : "id" , width : ! 1 , height : ! 1 , useCanvas : ! 1 , withLabels : ! 0 , background : ! 1 } , i . Tree = { $extend : ! 0 , orientation : "left" , subtreeOffset : 8 , siblingOffset : 5 , indent : 10 , multitree : ! 1 , align : "center" } , i . Node = { $extend : ! 1 , overridable : ! 1 , type : "circle" , color : "#ccb" , alpha : 1 , dim : 3 , height : 20 , width : 90 , autoHeight : ! 1 , autoWidth : ! 1 , lineWidth : 1 , transform : ! 0 , align : "center" , angularWidth : 1 , span : 1 , CanvasStyles : { } } , i . Edge = { $extend : ! 1 , overridable : ! 1 , type : "line" , color : "#ccb" , lineWidth : 1 , dim : 15 , alpha : 1 , epsilon : 7 , CanvasStyles : { } } , i . Fx = { $extend : ! 0 , fps : 40 , duration : 2500 , transition : $jit . Trans . Quart . easeInOut , clearCanvas : ! 0 } , i . Label = { $extend : ! 1 , overridable : ! 1 , type : "HTML" , style : " " , size : 10 , family : "sans-serif" , textAlign : "center" , textBaseline : "alphabetic" , color : "#fff" } , i . Tips = { $extend : ! 1 , enable : ! 1 , type : "auto" , offsetX : 20 , offsetY : 20 , force : ! 1 , onShow : e . empty , onHide : e . empty } , i . NodeStyles = { $extend : ! 1 , enable : ! 1 , type : "auto" , stylesHover : ! 1 , stylesClick : ! 1 } , i . Events = { $extend : ! 1 , enable : ! 1 , enableForEdges : ! 1 , type : "auto" , onClick : e . empty , onRightClick : e . empty , onMouseMove : e . empty , onMouseEnter : e . empty , onMouseLeave : e . empty , onDragStart : e . empty , onDragMove : e . empty , onDragCancel : e . empty , onDragEnd : e . empty , onTouchStart : e . empty , onTouchMove : e . empty , onTouchEnd : e . empty , onMouseWheel : e . empty } , i . Navigation = { $extend : ! 1 , enable : ! 1 , type : "auto" , panning : ! 1 , zooming : ! 1 } , i . Controller = { $extend : ! 0 , onBeforeCompute : e . empty , onAfterCompute : e . empty , onCreateLabel : e . empty , onPlaceLabel : e . empty , onComplete : e . empty , onBeforePlotLine : e . empty , onAfterPlotLine : e . empty , onBeforePlotNode : e . empty , onAfterPlotNode : e . empty , request : ! 1 } ; var s = { initialize : function ( e , t ) { this . viz = t , this . canvas = t . canvas , this . config = t . config [ e ] , this . nodeTypes = t . fx . nodeTypes ; var n = this . config . type ; this . dom = n == "auto" ? t . config . Label . type != "Native" : n != "Native" , this . labelContainer = this . dom && t . labels . getLabelContainer ( ) , this . isEnabled ( ) && this . initializePost ( ) } , initializePost : e . empty , setAsProperty : e . lambda ( ! 1 ) , isEnabled : function ( ) { return this . config . enable } , isLabel : function ( t , n ) { t = e . event . get ( t , n ) ; var r = this . labelContainer , i = t . target || t . srcElement ; return i && i . parentNode == r ? i : ! 1 } } , o = { onMouseUp : e . empty , onMouseDown : e . empty , onMouseMove : e . empty , onMouseOver : e . empty , onMouseOut : e . empty , onMouseWheel : e . empty , onTouchStart : e . empty , onTouchMove : e . empty , onTouchEnd : e . empty , onTouchCancel : e . empty } , u = new t ( { initialize : function ( e ) { this . viz = e , this . canvas = e . canvas , this . node = ! 1 , this . edge = ! 1 , this . registeredObjects = [ ] , this . attachEvents ( ) } , attachEvents : function ( ) { var t = this . canvas . getElement ( ) , n = this ; t . oncontextmenu = e . lambda ( ! 1 ) , e . addEvents ( t , { mouseup : function ( t , r ) { var i = e . event . get ( t , r ) ; n . handleEvent ( "MouseUp" , t , r , n . makeEventObject ( t , r ) , e . event . isRightClick ( i ) ) } , mousedown : function ( t , r ) { var i = e . event . get ( t , r ) ; n . handleEvent ( "MouseDown" , t , r , n . makeEventObject ( t , r ) , e . event . isRightClick ( i ) ) } , mousemove : function ( e , t ) { n . handleEvent ( "MouseMove" , e , t , n . makeEventObject ( e , t ) ) } , mouseover : function ( e , t ) { n . handleEvent ( "MouseOver" , e , t , n . makeEventObject ( e , t ) ) } , mouseout : function ( e , t ) { n . handleEvent ( "MouseOut" , e , t , n . makeEventObject ( e , t ) ) } , touchstart : function ( e , t ) { n . handleEvent ( "TouchStart" , e , t , n . makeEventObject ( e , t ) ) } , touchmove : function ( e , t ) { n . handleEvent ( "TouchMove" , e , t , n . makeEventObject ( e , t ) ) } , touchend : function ( e , t ) { n . handleEvent ( "TouchEnd" , e , t , n . makeEventObject ( e , t ) ) } } ) ; var r = function ( t , r ) { var i = e . event . get ( t , r ) , s = e . event . getWheel ( i ) ; n . handleEvent ( "MouseWheel" , t , r , s ) } ; ! document . getBoxObjectFor && window . mozInnerScreenX == null ? e . addEvent ( t , "mousewheel" , r ) : t . addEventListener ( "DOMMouseScroll" , r , ! 1 ) } , register : function ( e ) { this . registeredObjects . push ( e ) } , handleEvent : function ( ) { var e = Array . prototype . slice . call ( arguments ) , t = e . shift ( ) ; for ( var n = 0 , r = this . registeredObjects , i = r . length ; n < i ; n ++ ) r [ n ] [ "on" + t ] . apply ( r [ n ] , e ) } , makeEventObject : function ( t , n ) { var r = this , i = this . viz . graph , s = this . viz . fx , o = s . nodeTypes , u = s . edgeTypes ; return { pos : ! 1 , node : ! 1 , edge : ! 1 , contains : ! 1 , getNodeCalled : ! 1 , getEdgeCalled : ! 1 , getPos : function ( ) { var i = r . viz . canvas , s = i . getSize ( ) , o = i . getPos ( ) , u = i . translateOffsetX , a = i . translateOffsetY , f = i . scaleOffsetX , l = i . scaleOffsetY , c = e . event . getPos ( t , n ) ; return this . pos = { x : ( c . x - o . x - s . width / 2 - u ) * 1 / f , y : ( c . y - o . y - s . height /
r ? ":" + e . splat ( r [ "edge-property" ] ) . join ( ":" ) : "" ) , r && "label-property" in r && c . push ( "label-property:" + e . splat ( r [ "label-property" ] ) . join ( ":" ) ) , i . reposition ( ) , i . graph . eachNode ( function ( e ) { e . id != o && e . pos . getp ( ) . equals ( l . KER ) && ( e . pos . set ( e . endPos ) , e . startPos . set ( e . endPos ) ) } ) , i . fx . animate ( e . merge ( s , { modes : [ "polar" ] . concat ( c ) , onComplete : function ( ) { i . graph . eachNode ( function ( e ) { e . ignore && i . graph . removeNode ( e . id ) } ) , i . graph . eachNode ( function ( e ) { e . eachAdjacency ( function ( e ) { e . ignore && i . graph . removeAdjacence ( e . nodeFrom . id , e . nodeTo . id ) } ) } ) , s . onComplete ( ) } } ) ) ; break ; default : } } , contract : function ( t , n ) { var r = this . viz ; if ( t . collapsed || ! t . anySubnode ( e . lambda ( ! 0 ) ) ) return ; n = e . merge ( this . options , r . config , n || { } , { modes : [ "node-property:alpha:span" , "linear" ] } ) , t . collapsed = ! 0 , function i ( e ) { e . eachSubnode ( function ( e ) { e . ignore = ! 0 , e . setData ( "alpha" , 0 , n . type == "animate" ? "end" : "current" ) , i ( e ) } ) } ( t ) , n . type == "animate" ? ( r . compute ( "end" ) , r . rotated && r . rotate ( r . rotated , "none" , { property : "end" } ) , function s ( e ) { e . eachSubnode ( function ( e ) { e . setPos ( t . getPos ( "end" ) , "end" ) , s ( e ) } ) } ( t ) , r . fx . animate ( n ) ) : n . type == "replot" && r . refresh ( ) } , expand : function ( t , n ) { if ( ! ( "collapsed" in t ) ) return ; var r = this . viz ; n = e . merge ( this . options , r . config , n || { } , { modes : [ "node-property:alpha:span" , "linear" ] } ) , delete t . collapsed , function i ( e ) { e . eachSubnode ( function ( e ) { delete e . ignore , e . setData ( "alpha" , 1 , n . type == "animate" ? "end" : "current" ) , i ( e ) } ) } ( t ) , n . type == "animate" ? ( r . compute ( "end" ) , r . rotated && r . rotate ( r . rotated , "none" , { property : "end" } ) , r . fx . animate ( n ) ) : n . type == "replot" && r . refresh ( ) } , preprocessSum : function ( e ) { var t = this . viz ; e . eachNode ( function ( e ) { if ( ! t . graph . hasNode ( e . id ) ) { t . graph . addNode ( e ) ; var n = t . graph . getNode ( e . id ) ; n . setData ( "alpha" , 0 ) , n . setData ( "alpha" , 0 , "start" ) , n . setData ( "alpha" , 1 , "end" ) } } ) ; var n = ! 1 ; return e . eachNode ( function ( e ) { e . eachAdjacency ( function ( e ) { var r = t . graph . getNode ( e . nodeFrom . id ) , i = t . graph . getNode ( e . nodeTo . id ) ; if ( ! r . adjacentTo ( i ) ) { var e = t . graph . addAdjacence ( r , i , e . data ) ; r . startAlpha == r . endAlpha && i . startAlpha == i . endAlpha && ( n = ! 0 , e . setData ( "alpha" , 0 ) , e . setData ( "alpha" , 0 , "start" ) , e . setData ( "alpha" , 1 , "end" ) ) } } ) } ) , n } } ; var m = { none : { render : e . empty , contains : e . lambda ( ! 1 ) } , circle : { render : function ( e , t , n , r ) { var i = r . getCtx ( ) ; i . beginPath ( ) , i . arc ( t . x , t . y , n , 0 , Math . PI * 2 , ! 0 ) , i . closePath ( ) , i [ e ] ( ) } , contains : function ( e , t , n ) { var r = e . x - t . x , i = e . y - t . y , s = r * r + i * i ; return s <= n * n } } , ellipse : { render : function ( e , t , n , r , i ) { var s = i . getCtx ( ) ; r /= 2 , n /= 2 , s . save ( ) , s . scale ( n / r , r / n ) , s . beginPath ( ) , s . arc ( t . x * ( r / n ) , t . y * ( n / r ) , r , 0 , Math . PI * 2 , ! 0 ) , s . closePath ( ) , s [ e ] ( ) , s . restore ( ) } , contains : function ( e , t , n , r ) { n /= 2 , r /= 2 ; var i = ( n + r ) / 2 , s = e . x - t . x , o = e . y - t . y , u = s * s + o * o ; return u <= i * i } } , square : { render : function ( e , t , n , r ) { r . getCtx ( ) [ e + "Rect" ] ( t . x - n , t . y - n , 2 * n , 2 * n ) } , contains : function ( e , t , n ) { return Math . abs ( t . x - e . x ) <= n && Math . abs ( t . y - e . y ) <= n } } , rectangle : { render : function ( e , t , n , r , i ) { i . getCtx ( ) [ e + "Rect" ] ( t . x - n / 2 , t . y - r / 2 , n , r ) } , contains : function ( e , t , n , r ) { return Math . abs ( t . x - e . x ) <= n / 2 && Math . abs ( t . y - e . y ) <= r / 2 } } , triangle : { render : function ( e , t , n , r ) { var i = r . getCtx ( ) , s = t . x , o = t . y - n , u = s - n , a = t . y + n , f = s + n , l = a ; i . beginPath ( ) , i . moveTo ( s , o ) , i . lineTo ( u , a ) , i . lineTo ( f , l ) , i . closePath ( ) , i [ e ] ( ) } , contains : function ( e , t , n ) { return m . circle . contains ( e , t , n ) } } , star : { render : function ( e , t , n , r ) { var i = r . getCtx ( ) , s = Math . PI / 5 ; i . save ( ) , i . translate ( t . x , t . y ) , i . beginPath ( ) , i . moveTo ( n , 0 ) ; for ( var o = 0 ; o < 9 ; o ++ ) i . rotate ( s ) , o % 2 == 0 ? i . lineTo ( n / . 525731 * . 200811 , 0 ) : i . lineTo ( n , 0 ) ; i . closePath ( ) , i [ e ] ( ) , i . restore ( ) } , contains : function ( e , t , n ) { return m . circle . contains ( e , t , n ) } } } , g = { line : { render : function ( e , t , n ) { var r = n . getCtx ( ) ; r . beginPath ( ) , r . moveTo ( e . x , e . y ) , r . lineTo ( t . x , t . y ) , r . stroke ( ) } , contains : function ( e , t , n , r ) { var i = Math . min , s = Math . max , o = i ( e . x , t . x ) , u = s ( e . x , t . x ) , a = i ( e . y , t . y ) , f = s ( e . y , t . y ) ; if ( n . x >= o && n . x <= u && n . y >= a && n . y <= f ) { if ( Math . abs ( t . x - e . x ) <= r ) return ! 0 ; var l = ( t . y - e . y ) / ( t . x - e . x ) * ( n . x - e . x ) + e . y ; return Math . abs ( l - n . y ) <= r } return ! 1 } } , arrow : { render : function ( e , t , n , r , i ) { var s = i . getCtx ( ) ; if ( r ) { var o = e ; e = t , t = o } var u = new h ( t . x - e . x , t . y - e . y ) ; u . $scale ( n / u . norm ( ) ) ; var a = new h ( t . x - u . x , t . y - u . y ) , f = new h ( - u . y / 2 , u . x / 2 ) , l = a . add ( f ) , c = a . $add ( f . $scale ( - 1 ) ) ; s . beginPath ( ) , s . moveTo ( e . x , e . y ) , s . lineTo ( t . x , t . y ) , s . stroke ( ) , s . beginPath ( ) , s . moveTo (
, $jit . ST . Plot . NodeTypes = new t ( { none : { render : e . empty , contains : e . lambda ( ! 1 ) } , circle : { render : function ( e , t ) { var n = e . getData ( "dim" ) , r = this . getAlignedPos ( e . pos . getc ( ! 0 ) , n , n ) , i = n / 2 ; this . nodeHelper . circle . render ( "fill" , { x : r . x + i , y : r . y + i } , i , t ) } , contains : function ( e , t ) { var n = e . getData ( "dim" ) , r = this . getAlignedPos ( e . pos . getc ( ! 0 ) , n , n ) , i = n / 2 ; this . nodeHelper . circle . contains ( { x : r . x + i , y : r . y + i } , i ) } } , square : { render : function ( e , t ) { var n = e . getData ( "dim" ) , r = n / 2 , i = this . getAlignedPos ( e . pos . getc ( ! 0 ) , n , n ) ; this . nodeHelper . square . render ( "fill" , { x : i . x + r , y : i . y + r } , r , t ) } , contains : function ( e , t ) { var n = e . getData ( "dim" ) , r = this . getAlignedPos ( e . pos . getc ( ! 0 ) , n , n ) , i = n / 2 ; this . nodeHelper . square . contains ( { x : r . x + i , y : r . y + i } , i ) } } , ellipse : { render : function ( e , t ) { var n = e . getData ( "width" ) , r = e . getData ( "height" ) , i = this . getAlignedPos ( e . pos . getc ( ! 0 ) , n , r ) ; this . nodeHelper . ellipse . render ( "fill" , { x : i . x + n / 2 , y : i . y + r / 2 } , n , r , t ) } , contains : function ( e , t ) { var n = e . getData ( "width" ) , r = e . getData ( "height" ) , i = this . getAlignedPos ( e . pos . getc ( ! 0 ) , n , r ) ; this . nodeHelper . ellipse . contains ( { x : i . x + n / 2 , y : i . y + r / 2 } , n , r , canvas ) } } , rectangle : { render : function ( e , t ) { var n = e . getData ( "width" ) , r = e . getData ( "height" ) , i = this . getAlignedPos ( e . pos . getc ( ! 0 ) , n , r ) ; this . nodeHelper . rectangle . render ( "fill" , { x : i . x + n / 2 , y : i . y + r / 2 } , n , r , t ) } , contains : function ( e , t ) { var n = e . getData ( "width" ) , r = e . getData ( "height" ) , i = this . getAlignedPos ( e . pos . getc ( ! 0 ) , n , r ) ; this . nodeHelper . rectangle . contains ( { x : i . x + n / 2 , y : i . y + r / 2 } , n , r , canvas ) } } } ) , $jit . ST . Plot . EdgeTypes = new t ( { none : e . empty , line : { render : function ( e , t ) { var n = this . getOrientation ( e ) , r = e . nodeFrom , i = e . nodeTo , s = r . _depth < i . _depth , o = this . viz . geom . getEdge ( s ? r : i , "begin" , n ) , u = this . viz . geom . getEdge ( s ? i : r , "end" , n ) ; this . edgeHelper . line . render ( o , u , t ) } , contains : function ( e , t ) { var n = this . getOrientation ( e ) , r = e . nodeFrom , i = e . nodeTo , s = r . _depth < i . _depth , o = this . viz . geom . getEdge ( s ? r : i , "begin" , n ) , u = this . viz . geom . getEdge ( s ? i : r , "end" , n ) ; return this . edgeHelper . line . contains ( o , u , t , this . edge . epsilon ) } } , arrow : { render : function ( e , t ) { var n = this . getOrientation ( e ) , r = e . nodeFrom , i = e . nodeTo , s = e . getData ( "dim" ) , o = this . viz . geom . getEdge ( r , "begin" , n ) , u = this . viz . geom . getEdge ( i , "end" , n ) , a = e . data . $direction , f = a && a . length > 1 && a [ 0 ] != r . id ; this . edgeHelper . arrow . render ( o , u , s , f , t ) } , contains : function ( e , t ) { var n = this . getOrientation ( e ) , r = e . nodeFrom , i = e . nodeTo , s = r . _depth < i . _depth , o = this . viz . geom . getEdge ( s ? r : i , "begin" , n ) , u = this . viz . geom . getEdge ( s ? i : r , "end" , n ) ; return this . edgeHelper . arrow . contains ( o , u , t , this . edge . epsilon ) } } , "quadratic:begin" : { render : function ( e , t ) { var n = this . getOrientation ( e ) , r = e . nodeFrom , i = e . nodeTo , s = r . _depth < i . _depth , o = this . viz . geom . getEdge ( s ? r : i , "begin" , n ) , u = this . viz . geom . getEdge ( s ? i : r , "end" , n ) , a = e . getData ( "dim" ) , f = t . getCtx ( ) ; f . beginPath ( ) , f . moveTo ( o . x , o . y ) ; switch ( n ) { case "left" : f . quadraticCurveTo ( o . x + a , o . y , u . x , u . y ) ; break ; case "right" : f . quadraticCurveTo ( o . x - a , o . y , u . x , u . y ) ; break ; case "top" : f . quadraticCurveTo ( o . x , o . y + a , u . x , u . y ) ; break ; case "bottom" : f . quadraticCurveTo ( o . x , o . y - a , u . x , u . y ) } f . stroke ( ) } } , "quadratic:end" : { render : function ( e , t ) { var n = this . getOrientation ( e ) , r = e . nodeFrom , i = e . nodeTo , s = r . _depth < i . _depth , o = this . viz . geom . getEdge ( s ? r : i , "begin" , n ) , u = this . viz . geom . getEdge ( s ? i : r , "end" , n ) , a = e . getData ( "dim" ) , f = t . getCtx ( ) ; f . beginPath ( ) , f . moveTo ( o . x , o . y ) ; switch ( n ) { case "left" : f . quadraticCurveTo ( u . x - a , u . y , u . x , u . y ) ; break ; case "right" : f . quadraticCurveTo ( u . x + a , u . y , u . x , u . y ) ; break ; case "top" : f . quadraticCurveTo ( u . x , u . y - a , u . x , u . y ) ; break ; case "bottom" : f . quadraticCurveTo ( u . x , u . y + a , u . x , u . y ) } f . stroke ( ) } } , bezier : { render : function ( e , t ) { var n = this . getOrientation ( e ) , r = e . nodeFrom , i = e . nodeTo , s = r . _depth < i . _depth , o = this . viz . geom . getEdge ( s ? r : i , "begin" , n ) , u = this . viz . geom . getEdge ( s ? i : r , "end" , n ) , a = e . getData ( "dim" ) , f = t . getCtx ( ) ; f . beginPath ( ) , f . moveTo ( o . x , o . y ) ; switch ( n ) { case "left" : f . bezierCurveTo ( o . x + a , o . y , u . x - a , u . y , u . x , u . y ) ; break ; case "right" : f . bezierCurveTo ( o . x - a , o . y , u . x + a , u . y , u . x , u . y ) ; break ; case "top" : f . bezierCurveTo ( o . x , o . y + a , u . x , u . y - a , u . x , u . y ) ; break ; case "bottom" : f . bezierCurveTo ( o . x , o . y - a , u . x , u . y + a , u . x , u . y ) } f . stroke ( ) } } } ) , $jit . ST . Plot . NodeTypes . implement ( { "areachart-stacked" : { render : function ( t , n ) { var r = t . pos . getc ( ! 0 ) , i = t . getData ( "width" ) , s = t . getData ( "height" ) , o = this . getAlignedP
: function ( e , t ) { var n = e . nodeFrom . pos . getc ( ) , r = e . nodeTo . pos . getc ( ) , i = Math . max ( n . norm ( ) , r . norm ( ) ) ; this . edgeHelper . hyperline . render ( n . $scale ( 1 / i ) , r . $scale ( 1 / i ) , i , t ) } , contains : e . lambda ( ! 1 ) } } ) } ( $jit . Sunburst ) , $jit . Sunburst . Plot . NodeTypes . implement ( { "piechart-stacked" : { render : function ( t , n ) { var r = t . pos . getp ( ! 0 ) , i = t . getData ( "dimArray" ) , s = t . getData ( "valueArray" ) , o = t . getData ( "colorArray" ) , u = o . length , a = t . getData ( "stringArray" ) , f = t . getData ( "span" ) / 2 , c = t . pos . theta , h = c - f , p = c + f , d = new l , v = n . getCtx ( ) , m = { } , g = t . getData ( "gradient" ) , y = t . getData ( "border" ) , b = t . getData ( "config" ) , w = b . showLabels , E = b . resizeLabels , S = b . Label , x = b . sliceOffset * Math . cos ( ( h + p ) / 2 ) , T = b . sliceOffset * Math . sin ( ( h + p ) / 2 ) ; if ( o && i && a ) { for ( var N = 0 , C = i . length , k = 0 , L = 0 ; N < C ; N ++ ) { var A = i [ N ] , O = o [ N % u ] ; if ( A <= 0 ) continue ; v . fillStyle = v . strokeStyle = O ; if ( g && A ) { var M = v . createRadialGradient ( x , T , k + b . sliceOffset , x , T , k + A + b . sliceOffset ) , _ = e . hexToRgb ( O ) , D = e . map ( _ , function ( e ) { return e * . 8 >> 0 } ) , P = e . rgbToHex ( D ) ; M . addColorStop ( 0 , O ) , M . addColorStop ( . 5 , O ) , M . addColorStop ( 1 , P ) , v . fillStyle = M } d . rho = k + b . sliceOffset , d . theta = h ; var H = d . getc ( ! 0 ) ; d . theta = p ; var B = d . getc ( ! 0 ) ; d . rho += A ; var j = d . getc ( ! 0 ) ; d . theta = h ; var F = d . getc ( ! 0 ) ; v . beginPath ( ) , v . arc ( x , T , k + . 01 , h , p , ! 1 ) , v . arc ( x , T , k + A + . 01 , p , h , ! 0 ) , v . fill ( ) , y && y . name == a [ N ] && ( m . acum = k , m . dimValue = i [ N ] , m . begin = h , m . end = p ) , k += A || 0 , L += s [ N ] || 0 } if ( y ) { v . save ( ) , v . globalCompositeOperation = "source-over" , v . lineWidth = 2 , v . strokeStyle = y . color ; var I = h < p ? 1 : - 1 ; v . beginPath ( ) , v . arc ( x , T , m . acum + . 01 + 1 , m . begin , m . end , ! 1 ) , v . arc ( x , T , m . acum + m . dimValue + . 01 - 1 , m . end , m . begin , ! 0 ) , v . closePath ( ) , v . stroke ( ) , v . restore ( ) } if ( w && S . type == "Native" ) { v . save ( ) , v . fillStyle = v . strokeStyle = S . color ; var q = E ? t . getData ( "normalizedDim" ) : 1 , R = S . size * q >> 0 ; R = R < + E ? + E : R , v . font = S . style + " " + R + "px " + S . family , v . textBaseline = "middle" , v . textAlign = "center" , d . rho = k + b . labelOffset + b . sliceOffset , d . theta = t . pos . theta ; var U = d . getc ( ! 0 ) ; v . fillText ( t . name , U . x , U . y ) , v . restore ( ) } } } , contains : function ( e , t ) { if ( this . nodeTypes . none . anglecontains . call ( this , e , t ) ) { var n = Math . sqrt ( t . x * t . x + t . y * t . y ) , r = this . config . levelDistance , i = e . _depth , s = e . getData ( "config" ) ; if ( n <= r * i + s . sliceOffset ) { var o = e . getData ( "dimArray" ) ; for ( var u = 0 , a = o . length , f = s . sliceOffset ; u < a ; u ++ ) { var l = o [ u ] ; if ( n >= f && n <= f + l ) return { name : e . getData ( "stringArray" ) [ u ] , color : e . getData ( "colorArray" ) [ u ] , value : e . getData ( "valueArray" ) [ u ] , label : e . name } ; f += l } } return ! 1 } return ! 1 } } } ) , $jit . PieChart = new t ( { sb : null , colors : [ "#416D9C" , "#70A35E" , "#EBB056" , "#C74243" , "#83548B" , "#909291" , "#557EAA" ] , selected : { } , busy : ! 1 , initialize : function ( t ) { this . controller = this . config = e . merge ( i ( "Canvas" , "PieChart" , "Label" ) , { Label : { type : "Native" } } , t ) , this . initializeViz ( ) } , initializeViz : function ( ) { var e = this . config , t = this , n = e . type . split ( ":" ) [ 0 ] , r = new $jit . Sunburst ( { injectInto : e . injectInto , useCanvas : e . useCanvas , withLabels : e . Label . type != "Native" , Label : { type : e . Label . type } , Node : { overridable : ! 0 , type : "piechart-" + n , width : 1 , height : 1 } , Edge : { type : "none" } , Tips : { enable : e . Tips . enable , type : "Native" , force : ! 0 , onShow : function ( t , n , r ) { var i = r ; e . Tips . onShow ( t , i , n ) } } , Events : { enable : ! 0 , type : "Native" , onClick : function ( t , n , r ) { if ( ! e . Events . enable ) return ; var i = n . getContains ( ) ; e . Events . onClick ( i , n , r ) } , onMouseMove : function ( n , r , i ) { if ( ! e . hoveredColor ) return ; if ( n ) { var s = r . getContains ( ) ; t . select ( n . id , s . name , s . index ) } else t . select ( ! 1 , ! 1 , ! 1 ) } } , onCreateLabel : function ( t , n ) { var r = e . Label ; if ( e . showLabels ) { var i = t . style ; i . fontSize = r . size + "px" , i . fontFamily = r . family , i . color = r . color , i . textAlign = "center" , t . innerHTML = n . name } } , onPlaceLabel : function ( n , r ) { if ( ! e . showLabels ) return ; var i = r . pos . getp ( ! 0 ) , s = r . getData ( "dimArray" ) , o = r . getData ( "span" ) / 2 , u = r . pos . theta , a = u - o , f = u + o , c = new l , h = e . showLabels , p = e . resizeLabels , d = e . Label ; if ( s ) { for ( var v = 0 , m = s . length , g = 0 ; v < m ; v ++ ) g += s [ v ] ; var y = p ? r . getData ( "normalizedDim" ) : 1 , b = d . size * y >> 0 ; b = b < + p ? + p : b , n . style . fontSize = b + "px" , c . rho = g + e . labelOffset + e . sliceOffset , c . theta = ( a + f ) / 2 ; var i = c . getc ( ! 0 ) , w = t . canvas . getSize ( ) , E = { x : Math . round ( i . x + w . width / 2 ) , y : Math . round ( i . y + w . height / 2 ) } ; n . style . left = E . x + "px" , n . style . top = E . y + "px" } } } ) , i = r . canvas . getSize ( ) , s = Math . min ; r . config . levelDistance = s ( i . width , i . height ) / 2 - e . offset - e . sliceOffset , this . sb = r , this . canvas = this . sb . canvas , this . canvas . getCt
: function ( e , t ) { if ( this . viz . clickedNode && ! e . isDescendantOf ( this . viz . clickedNode . id ) || e . ignore ) return ! 1 ; var n = e . pos . getc ( ! 0 ) , r = e . getData ( "width" ) , i = this . viz . leaf ( e ) , s = i ? e . getData ( "height" ) : this . config . titleHeight ; return this . nodeHelper . rectangle . contains ( { x : n . x + r / 2 , y : n . y + s / 2 } , t , r , s ) } } } ) , E . Plot . EdgeTypes = new t ( { none : e . empty } ) , E . SliceAndDice = new t ( { Implements : [ y , a , E . Base , b . TM . SliceAndDice ] } ) , E . Squarified = new t ( { Implements : [ y , a , E . Base , b . TM . Squarified ] } ) , E . Strip = new t ( { Implements : [ y , a , E . Base , b . TM . Strip ] } ) , $jit . RGraph = new t ( { Implements : [ y , a , b . Radial ] , initialize : function ( t ) { var n = $jit . RGraph , r = { interpolation : "linear" , levelDistance : 100 } ; this . controller = this . config = e . merge ( i ( "Canvas" , "Node" , "Edge" , "Fx" , "Controller" , "Tips" , "NodeStyles" , "Events" , "Navigation" , "Label" ) , r , t ) ; var s = this . config ; s . useCanvas ? ( this . canvas = s . useCanvas , this . config . labelContainer = this . canvas . id + "-label" ) : ( s . background && ( s . background = e . merge ( { type : "Circles" } , s . background ) ) , this . canvas = new f ( this , s ) , this . config . labelContainer = ( typeof s . injectInto == "string" ? s . injectInto : s . injectInto . id ) + "-label" ) , this . graphOptions = { complex : ! 1 , Node : { selected : ! 1 , exist : ! 0 , drawn : ! 0 } } , this . graph = new d ( this . graphOptions , this . config . Node , this . config . Edge ) , this . labels = new n . Label [ s . Label . type ] ( this ) , this . fx = new n . Plot ( this , n ) , this . op = new n . Op ( this ) , this . json = null , this . root = null , this . busy = ! 1 , this . parent = ! 1 , this . initializeExtras ( ) } , createLevelDistanceFunc : function ( ) { var e = this . config . levelDistance ; return function ( t ) { return ( t . _depth + 1 ) * e } } , refresh : function ( ) { this . compute ( ) , this . plot ( ) } , reposition : function ( ) { this . compute ( "end" ) } , plot : function ( ) { this . fx . plot ( ) } , getNodeAndParentAngle : function ( e ) { var t = ! 1 , n = this . graph . getNode ( e ) , r = n . getParents ( ) , i = r . length > 0 ? r [ 0 ] : ! 1 ; if ( i ) { var s = i . pos . getc ( ) , o = n . pos . getc ( ) , u = s . add ( o . scale ( - 1 ) ) ; t = Math . atan2 ( u . y , u . x ) , t < 0 && ( t += 2 * Math . PI ) } return { parent : i , theta : t } } , tagChildren : function ( e , t ) { if ( e . angleSpan ) { var n = [ ] ; e . eachAdjacency ( function ( e ) { n . push ( e . nodeTo ) } , "ignore" ) ; var r = n . length ; for ( var i = 0 ; i < r && t != n [ i ] . id ; i ++ ) ; for ( var s = ( i + 1 ) % r , o = 0 ; t != n [ s ] . id ; s = ( s + 1 ) % r ) n [ s ] . dist = o ++ } } , onClick : function ( t , n ) { if ( this . root != t && ! this . busy ) { this . busy = ! 0 , this . root = t , that = this , this . controller . onBeforeCompute ( this . graph . getNode ( t ) ) ; var r = this . getNodeAndParentAngle ( t ) ; this . tagChildren ( r . parent , t ) , this . parent = r . parent , this . compute ( "end" ) ; var i = r . theta - r . parent . endPos . theta ; this . graph . eachNode ( function ( e ) { e . endPos . set ( e . endPos . getp ( ) . add ( c ( i , 0 ) ) ) } ) ; var s = this . config . interpolation ; n = e . merge ( { onComplete : e . empty } , n || { } ) , this . fx . animate ( e . merge ( { hideLabels : ! 0 , modes : [ s ] } , n , { onComplete : function ( ) { that . busy = ! 1 , n . onComplete ( ) } } ) ) } } } ) , $jit . RGraph . $extend = ! 0 , function ( n ) { n . Op = new t ( { Implements : d . Op } ) , n . Plot = new t ( { Implements : d . Plot } ) , n . Label = { } , n . Label . Native = new t ( { Implements : d . Label . Native } ) , n . Label . SVG = new t ( { Implements : d . Label . SVG , initialize : function ( e ) { this . viz = e } , placeLabel : function ( e , t , n ) { var r = t . pos . getc ( ! 0 ) , i = this . viz . canvas , s = i . translateOffsetX , o = i . translateOffsetY , u = i . scaleOffsetX , a = i . scaleOffsetY , f = i . getSize ( ) , l = { x : Math . round ( r . x * u + s + f . width / 2 ) , y : Math . round ( r . y * a + o + f . height / 2 ) } ; e . setAttribute ( "x" , l . x ) , e . setAttribute ( "y" , l . y ) , n . onPlaceLabel ( e , t ) } } ) , n . Label . HTML = new t ( { Implements : d . Label . HTML , initialize : function ( e ) { this . viz = e } , placeLabel : function ( e , t , n ) { var r = t . pos . getc ( ! 0 ) , i = this . viz . canvas , s = i . translateOffsetX , o = i . translateOffsetY , u = i . scaleOffsetX , a = i . scaleOffsetY , f = i . getSize ( ) , l = { x : Math . round ( r . x * u + s + f . width / 2 ) , y : Math . round ( r . y * a + o + f . height / 2 ) } , c = e . style ; c . left = l . x + "px" , c . top = l . y + "px" , c . display = this . fitsInCanvas ( l , i ) ? "" : "none" , n . onPlaceLabel ( e , t ) } } ) , n . Plot . NodeTypes = new t ( { none : { render : e . empty , contains : e . lambda ( ! 1 ) } , circle : { render : function ( e , t ) { var n = e . pos . getc ( ! 0 ) , r = e . getData ( "dim" ) ; this . nodeHelper . circle . render ( "fill" , n , r , t ) } , contains : function ( e , t ) { var n = e . pos . getc ( ! 0 ) , r = e . getData ( "dim" ) ; return this . nodeHelper . circle . contains ( n , t , r ) } } , ellipse : { render : function ( e , t ) { var n = e . pos . getc ( ! 0 ) , r = e . getData ( "width" ) , i = e . getData ( "height" ) ; this . nodeHelper . ellipse . render ( "fill" , n , r , i , t ) } , contains : function ( e , t ) { var n = e . pos . getc ( ! 0 ) , r = e . getData ( "width" ) , i = e . getData ( "height" ) ; return this . nodeHelper . e
. pressed = ! 0 , ! MetamapsModel . boxStartCoordinates && e . shiftKey && ( MetamapsModel . boxStartCoordinates = n . getPos ( ) ) , MetamapsModel . didPan = ! 1 , this . pos = n . getPos ( ) ; var r = this . canvas , i = r . translateOffsetX , s = r . translateOffsetY , o = r . scaleOffsetX , u = r . scaleOffsetY ; this . pos . x *= o , this . pos . x += i , this . pos . y *= u , this . pos . y += s } , onMouseMove : function ( e , t , n ) { if ( ! this . config . panning ) return ; if ( ! this . pressed ) return ; if ( this . config . panning == "avoid nodes" && n . getNode ( ) ) return ; if ( ! MetamapsModel . boxStartCoordinates && e . shiftKey ) { Mconsole . busy = ! 0 , MetamapsModel . boxStartCoordinates = n . getPos ( ) ; return } if ( MetamapsModel . boxStartCoordinates && e . shiftKey ) { Mconsole . busy = ! 0 , drawSelectBox ( n , e ) ; return } if ( e . target . id != "infovis-canvas" ) { this . pressed = ! 1 ; return } MetamapsModel . didPan = ! 0 ; var r = this . pos , i = n . getPos ( ) , s = this . canvas , o = s . translateOffsetX , u = s . translateOffsetY , a = s . scaleOffsetX , f = s . scaleOffsetY ; i . x *= a , i . y *= f , i . x += o , i . y += u ; var l = i . x - r . x , c = i . y - r . y ; this . pos = i , this . canvas . translate ( l * 1 / a , c * 1 / f ) } , onMouseUp : function ( e , t , n , r ) { if ( ! this . config . panning ) return ; this . pressed = ! 1 } } ) ; var f ; ( function ( ) { function i ( t , n ) { var i = document . createElement ( t ) ; for ( var s in n ) typeof n [ s ] == "object" ? e . extend ( i [ s ] , n [ s ] ) : i [ s ] = n [ s ] ; return t == "canvas" && ! r && G _vmlCanvasManager && ( i = G _vmlCanvasManager . initElement ( document . body . appendChild ( i ) ) ) , i } var n = typeof HTMLCanvasElement , r = n == "object" || n == "function" ; $jit . Canvas = f = new t ( { canvases : [ ] , pos : ! 1 , element : ! 1 , labelContainer : ! 1 , translateOffsetX : 0 , translateOffsetY : 0 , scaleOffsetX : 1 , scaleOffsetY : 1 , initialize : function ( t , n ) { this . viz = t , this . opt = n ; var r = e . type ( n . injectInto ) == "string" ? n . injectInto : n . injectInto . id , s = r + "-label" , o = e ( r ) , u = n . width || o . offsetWidth , a = n . height || o . offsetHeight ; this . id = r ; var l = { injectInto : r , width : u , height : a } ; this . element = i ( "div" , { id : r + "-canvaswidget" , style : { position : "relative" , width : u + "px" , height : a + "px" } } ) , this . labelContainer = this . createLabelContainer ( n . Label . type , s , l ) , this . canvases . push ( new f . Base ( { config : e . extend ( { idSuffix : "-canvas" } , l ) , plot : function ( e ) { t . fx . plot ( ) } , resize : function ( ) { t . refresh ( ) } } ) ) ; var c = n . background ; if ( c ) { var h = new f . Background [ c . type ] ( t , e . extend ( c , l ) ) ; this . canvases . push ( new f . Base ( h ) ) } var p = this . canvases . length ; while ( p -- ) this . element . appendChild ( this . canvases [ p ] . canvas ) , p > 0 && this . canvases [ p ] . plot ( ) ; this . element . appendChild ( this . labelContainer ) , o . appendChild ( this . element ) ; var d = null , v = this ; e . addEvent ( window , "scroll" , function ( ) { clearTimeout ( d ) , d = setTimeout ( function ( ) { v . getPos ( ! 0 ) } , 500 ) } ) } , getCtx : function ( e ) { return this . canvases [ e || 0 ] . getCtx ( ) } , getConfig : function ( ) { return this . opt } , getElement : function ( ) { return this . element } , getSize : function ( e ) { return this . canvases [ e || 0 ] . getSize ( ) } , resize : function ( e , t ) { this . getPos ( ! 0 ) , this . translateOffsetX = this . translateOffsetY = 0 , this . scaleOffsetX = this . scaleOffsetY = 1 ; for ( var n = 0 , r = this . canvases . length ; n < r ; n ++ ) this . canvases [ n ] . resize ( e , t ) ; var i = this . element . style ; i . width = e + "px" , i . height = t + "px" , this . labelContainer && ( this . labelContainer . style . width = e + "px" ) } , translate : function ( e , t , n ) { this . translateOffsetX += e * this . scaleOffsetX , this . translateOffsetY += t * this . scaleOffsetY ; for ( var r = 0 , i = this . canvases . length ; r < i ; r ++ ) this . canvases [ r ] . translate ( e , t , n ) } , scale : function ( e , t , n ) { var r = this . scaleOffsetX * e , i = this . scaleOffsetY * t , s = this . translateOffsetX * ( e - 1 ) / r , o = this . translateOffsetY * ( t - 1 ) / i ; this . scaleOffsetX = r , this . scaleOffsetY = i ; for ( var u = 0 , a = this . canvases . length ; u < a ; u ++ ) this . canvases [ u ] . scale ( e , t , ! 0 ) ; this . translate ( s , o , ! 1 ) } , getPos : function ( t ) { return t || ! this . pos ? this . pos = e . getPos ( this . getElement ( ) ) : this . pos } , clear : function ( e ) { this . canvases [ e || 0 ] . clear ( ) } , path : function ( e , t ) { var n = this . canvases [ 0 ] . getCtx ( ) ; n . beginPath ( ) , t ( n ) , n [ e ] ( ) , n . closePath ( ) } , createLabelContainer : function ( e , t , n ) { var r = "http://www.w3.org/2000/svg" ; if ( e == "HTML" || e == "Native" ) return i ( "div" , { id : t , style : { overflow : "visible" , position : "absolute" , top : 0 , left : 0 , width : n . width + "px" , height : 0 } } ) ; if ( e == "SVG" ) { var s = document . createElementNS ( r , "svg:svg" ) ; s . setAttribute ( "width" , n . width ) , s . setAttribute ( "height" , n . height ) ; var o = s . style ; o . position = "absolute" , o . left = o . top = "0px" ; var u = document . createElementNS ( r , "svg:g" ) ; return u . setAttribute ( "width" , n . width ) , u . setAttribut
t . getLabelData ( "textBaseline" ) , r . fillStyle = "rgba(255, 255, 255, 0.7)" ; var s = 5 , o = 16 + s , u = o / 2 , a = r . measureText ( t . name ) . width + 2 * s - 2 * u , f = i . x - a / 2 - s + u / 2 , l = i . y + t . getData ( "height" ) ; r . fillRect ( f , l , a , o ) , r . beginPath ( ) , r . arc ( f , l + u , u , . 5 * Math . PI , 1.5 * Math . PI , ! 1 ) , r . closePath ( ) , r . fill ( ) , r . beginPath ( ) , r . arc ( f + a , l + u , u , 1.5 * Math . PI , . 5 * Math . PI , ! 1 ) , r . closePath ( ) , r . fill ( ) , r . fillStyle = r . strokeStyle = t . getLabelData ( "color" ) , this . renderLabel ( e , t , n ) } , renderLabel : function ( e , t , n ) { var r = e . getCtx ( ) , i = t . pos . getc ( ! 0 ) ; r . fillText ( t . name , i . x , i . y + t . getData ( "height" ) ) } , hideLabel : e . empty , hideLabels : e . empty } ) , d . Label . DOM = new t ( { labelsHidden : ! 1 , labelContainer : ! 1 , labels : { } , getLabelContainer : function ( ) { return this . labelContainer ? this . labelContainer : this . labelContainer = document . getElementById ( this . viz . config . labelContainer ) } , getLabel : function ( e ) { return e in this . labels && this . labels [ e ] != null ? this . labels [ e ] : this . labels [ e ] = document . getElementById ( e ) } , hideLabels : function ( e ) { var t = this . getLabelContainer ( ) ; e ? t . style . display = "none" : t . style . display = "" , this . labelsHidden = e } , clearLabels : function ( e ) { for ( var t in this . labels ) if ( e || ! this . viz . graph . hasNode ( t ) ) this . disposeLabel ( t ) , delete this . labels [ t ] } , disposeLabel : function ( e ) { var t = this . getLabel ( e ) ; t && t . parentNode && t . parentNode . removeChild ( t ) } , hideLabel : function ( t , n ) { t = e . splat ( t ) ; var r = n ? "" : "none" , i , s = this ; e . each ( t , function ( e ) { var t = s . getLabel ( e . id ) ; t && ( t . style . display = r ) } ) } , fitsInCanvas : function ( e , t ) { var n = t . getSize ( ) ; return e . x >= n . width || e . x < 0 || e . y >= n . height || e . y < 0 ? ! 1 : ! 0 } } ) , d . Label . HTML = new t ( { Implements : d . Label . DOM , plotLabel : function ( e , t , n ) { var r = t . id , i = this . getLabel ( r ) ; if ( ! i && ! ( i = document . getElementById ( r ) ) ) { i = document . createElement ( "div" ) ; var s = this . getLabelContainer ( ) ; i . id = r , i . className = "node" , i . style . position = "absolute" , n . onCreateLabel ( i , t ) , s . appendChild ( i ) , this . labels [ t . id ] = i } this . placeLabel ( i , t , n ) } } ) , d . Label . SVG = new t ( { Implements : d . Label . DOM , plotLabel : function ( e , t , n ) { var r = t . id , i = this . getLabel ( r ) ; if ( ! i && ! ( i = document . getElementById ( r ) ) ) { var s = "http://www.w3.org/2000/svg" ; i = document . createElementNS ( s , "svg:text" ) ; var o = document . createElementNS ( s , "svg:tspan" ) ; i . appendChild ( o ) ; var u = this . getLabelContainer ( ) ; i . setAttribute ( "id" , r ) , i . setAttribute ( "class" , "node" ) , u . appendChild ( i ) , n . onCreateLabel ( i , t ) , this . labels [ t . id ] = i } this . placeLabel ( i , t , n ) } } ) , d . Geom = new t ( { initialize : function ( e ) { this . viz = e , this . config = e . config , this . node = e . config . Node , this . edge = e . config . Edge } , translate : function ( t , n ) { n = e . splat ( n ) , this . viz . graph . eachNode ( function ( r ) { e . each ( n , function ( e ) { r . getPos ( e ) . $add ( t ) } ) } ) } , setRightLevelToShow : function ( t , n , r ) { var i = this . getRightLevelToShow ( t , n ) , s = this . viz . labels , o = e . merge ( { execShow : ! 0 , execHide : ! 0 , onHide : e . empty , onShow : e . empty } , r || { } ) ; t . eachLevel ( 0 , this . config . levelsToShow , function ( e ) { var n = e . _depth - t . _depth ; n > i ? ( o . onHide ( e ) , o . execHide && ( e . drawn = ! 1 , e . exist = ! 1 , s . hideLabel ( e , ! 1 ) ) ) : ( o . onShow ( e ) , o . execShow && ( e . exist = ! 0 ) ) } ) , t . drawn = ! 0 } , getRightLevelToShow : function ( e , t ) { var n = this . config , r = n . levelsToShow , i = n . constrained ; if ( ! i ) return r ; while ( ! this . treeFitsInCanvas ( e , t , r ) && r > 1 ) r -- ; return r } } ) ; var y = { construct : function ( t ) { var n = e . type ( t ) == "array" , r = new d ( this . graphOptions , this . config . Node , this . config . Edge , this . config . Label ) ; return n ? function ( t , n ) { var r = function ( e ) { for ( var r = 0 , i = n . length ; r < i ; r ++ ) if ( n [ r ] . id == e ) return n [ r ] ; var s = { id : e , name : e } ; return t . addNode ( s ) } ; for ( var i = 0 , s = n . length ; i < s ; i ++ ) { t . addNode ( n [ i ] ) ; var o = n [ i ] . adjacencies ; if ( o ) for ( var u = 0 , a = o . length ; u < a ; u ++ ) { var f = o [ u ] , l = { } ; typeof o [ u ] != "string" && ( l = e . merge ( f . data , { } ) , f = f . nodeTo ) , t . addAdjacence ( n [ i ] , r ( f ) , l ) } } } ( r , t ) : function ( e , t ) { e . addNode ( t ) ; if ( t . children ) for ( var n = 0 , r = t . children ; n < r . length ; n ++ ) e . addAdjacence ( t , r [ n ] ) , arguments . callee ( e , r [ n ] ) } ( r , t ) , r } , loadJSON : function ( t , n ) { this . json = t , this . labels && this . labels . clearLabels && this . labels . clearLabels ( ! 0 ) , this . graph = this . construct ( t ) , e . type ( t ) != "array" ? this . root = t . id : this . root = t [ n ? n : 0 ] . id } , toJSON : function ( e ) { e = e || "tree" ; if ( e == "tree" ) { var t = { } , n = this . graph . getNode ( this . root ) , t = function i ( e ) { var t = { } ; t . id = e . id , t . name = e . name , t . data = e . data ; var n = [ ] ; return e . eachSubnode ( function ( e ) { n . push ( i ( e ) ) } ) , t . children = n , t } ( n ) ; return t } var t = [ ] , r = ! ! t
v ( e ) + "};" } function y ( e ) { return '_.b(_.rp("' + p ( e . n ) + '",c,p,"' + ( e . indent || "" ) + '"));' } function b ( e , t ) { return "_.b(_.t(_." + t + '("' + p ( e ) + '",c,p,0)));' } function w ( e , t ) { return "_.b(_.v(_." + t + '("' + p ( e ) + '",c,p,0)));' } function E ( e ) { return "_.b(" + e + ");" } var t = /\S/ , n = /\"/g , r = /\n/g , i = /\r/g , s = /\\/g , o = { "#" : 1 , "^" : 2 , "/" : 3 , "!" : 4 , ">" : 5 , "<" : 6 , "=" : 7 , _v : 8 , "{" : 9 , "&" : 10 } ; e . scan = function ( n , r ) { function S ( ) { v . length > 0 && ( m . push ( new String ( v ) ) , v = "" ) } function x ( ) { var e = ! 0 ; for ( var n = b ; n < m . length ; n ++ ) { e = m [ n ] . tag && o [ m [ n ] . tag ] < o . _v || ! m [ n ] . tag && m [ n ] . match ( t ) === null ; if ( ! e ) return ! 1 } return e } function T ( e , t ) { S ( ) ; if ( e && x ( ) ) for ( var n = b , r ; n < m . length ; n ++ ) m [ n ] . tag || ( ( r = m [ n + 1 ] ) && r . tag == ">" && ( r . indent = m [ n ] . toString ( ) ) , m . splice ( n , 1 ) ) ; else t || m . push ( { tag : "\n" } ) ; g = ! 1 , b = m . length } function N ( e , t ) { var n = "=" + E , r = e . indexOf ( n , t ) , i = a ( e . substring ( e . indexOf ( "=" , t ) + 1 , r ) ) . split ( " " ) ; return w = i [ 0 ] , E = i [ 1 ] , r + n . length - 1 } var i = n . length , s = 0 , l = 1 , c = 2 , h = s , p = null , d = null , v = "" , m = [ ] , g = ! 1 , y = 0 , b = 0 , w = "{{" , E = "}}" ; r && ( r = r . split ( " " ) , w = r [ 0 ] , E = r [ 1 ] ) ; for ( y = 0 ; y < i ; y ++ ) h == s ? f ( w , n , y ) ? ( -- y , S ( ) , h = l ) : n . charAt ( y ) == "\n" ? T ( g ) : v += n . charAt ( y ) : h == l ? ( y += w . length - 1 , d = o [ n . charAt ( y + 1 ) ] , p = d ? n . charAt ( y + 1 ) : "_v" , p == "=" ? ( y = N ( n , y ) , h = s ) : ( d && y ++ , h = c ) , g = y ) : f ( E , n , y ) ? ( m . push ( { tag : p , n : a ( v ) , otag : w , ctag : E , i : p == "/" ? g - E . length : y + w . length } ) , v = "" , y += E . length - 1 , h = s , p == "{" && ( E == "}}" ? y ++ : u ( m [ m . length - 1 ] ) ) ) : v += n . charAt ( y ) ; return T ( g , ! 0 ) , m } , e . generate = function ( t , n , r ) { var i = 'var _=this;_.b(i=i||"");' + v ( t ) + "return _.fl();" ; return r . asString ? "function(c,p,i){" + i + ";}" : new e . Template ( new Function ( "c" , "p" , "i" , i ) , n , e , r ) } , e . parse = function ( e , t , n ) { return n = n || { } , l ( e , "" , [ ] , n . sectionTags || [ ] ) } , e . cache = { } , e . compile = function ( e , t ) { t = t || { } ; var n = e + "||" + ! ! t . asString , r = this . cache [ n ] ; return r ? r : ( r = this . generate ( this . parse ( this . scan ( e , t . delimiters ) , e , t ) , e , t ) , this . cache [ n ] = r ) } } ( typeof exports != "undefined" ? exports : Hogan ) , function ( ) { } . call ( this ) , function ( ) { } . call ( this ) , function ( ) { window . app . addTopicToMap = function ( e ) { var t , n ; return Mconsole . graph . addNode ( e ) , n = Mconsole . graph . getNode ( e . id ) , n . setData ( "dim" , 1 , "start" ) , n . setData ( "dim" , 25 , "end" ) , t = new $jit . Complex , t . x = n . data . $xloc , t . y = n . data . $yloc , n . setPos ( t , "start" ) , n . setPos ( t , "current" ) , n . setPos ( t , "end" ) , Mconsole . fx . plotNode ( n , Mconsole . canvas ) , Mconsole . labels . plotLabel ( Mconsole . canvas , n , Mconsole . config ) } , window . app . updateTopicOnMap = function ( e ) { var t , n ; return n = Mconsole . graph . getNode ( e . id ) , n . data = e . data , n . name = e . name , $ ( "#topic_" + e . id + "_label" ) . find ( ".label" ) . html ( e . name ) , MetamapsModel . showcardInUse === e . id && populateShowCard ( n ) , t = new $jit . Complex , t . x = n . data . $xloc , t . y = n . data . $yloc , n . setPos ( t , "start" ) , n . setPos ( t , "current" ) , n . setPos ( t , "end" ) , Mconsole . fx . animate ( { modes : [ "linear" , "node-property:dim" , "edge-property:lineWidth" ] , transition : $jit . Trans . Quad . easeInOut , duration : 500 } ) } , window . app . addSynapseToMap = function ( e ) { var t , n , r ; return t = Mconsole . graph . getNode ( e . data . $direction [ 0 ] ) , n = Mconsole . graph . getNode ( e . data . $direction [ 1 ] ) , Mconsole . graph . addAdjacence ( t , n , { } ) , r = Mconsole . graph . getAdjacence ( t . id , n . id ) , r . setDataset ( "start" , { lineWidth : . 4 } ) , r . setDataset ( "end" , { lineWidth : 2 } ) , r . data = e . data , Mconsole . fx . plotLine ( r , Mconsole . canvas ) , Mconsole . fx . animate ( { modes : [ "linear" , "node-property:dim" , "edge-property:lineWidth" ] , transition : $jit . Trans . Quad . easeInOut , duration : 500 } ) } , window . app . updateSynapseOnMap = function ( e ) { var t , n , r , i , s ; n = Mconsole . graph . getAdjacence ( e . data . $direction [ 0 ] , e . data . $direction [ 1 ] ) , i = n . data . $showDesc , s = e . data ; for ( t in s ) r = s [ t ] , n . data [ t ] = r ; return n . data . $showDesc = i , MetamapsModel . edgecardInUse === e . data . $id && editEdge ( n , ! 1 ) , Mconsole . plot ( ) } } . call ( this ) , function ( ) { } . call ( this ) , function ( ) { window . app . realtime = { connect : function ( ) { } } } . call ( this ) , function ( e , t ) { function n ( t , n ) { var i = t . nodeName . toLowerCase ( ) ; if ( "area" === i ) { var s = t . parentNode , o = s . name , u ; return ! t . href || ! o || s . nodeName . toLowerCase ( ) !== "map" ? ! 1 : ( u = e ( "img[usemap=#" + o + "]" ) [ 0 ] , ! ! u && r ( u ) ) } return ( /input|select|textarea|button|object/ . test ( i ) ? ! t . disabled : "a" == i ? t . href || n : n ) && r ( t ) } function r ( t ) { return ! e ( t ) . parents ( ) . andSelf ( ) . filter ( function ( ) { return e . curCSS ( this , "visibility" ) === "hidden" || e . expr . filters . hidden ( this ) } ) . length } e . ui = e . ui || { } ; if ( e . ui . version ) return ; e . extend ( e . ui , { version
) . scrollTop ( ) ) < i . scrollSensitivity && ( s = e ( document ) . scrollTop ( e ( document ) . scrollTop ( ) + i . scrollSpeed ) ) ; if ( ! i . axis || i . axis != "y" ) t . pageX - e ( document ) . scrollLeft ( ) < i . scrollSensitivity ? s = e ( document ) . scrollLeft ( e ( document ) . scrollLeft ( ) - i . scrollSpeed ) : e ( window ) . width ( ) - ( t . pageX - e ( document ) . scrollLeft ( ) ) < i . scrollSensitivity && ( s = e ( document ) . scrollLeft ( e ( document ) . scrollLeft ( ) + i . scrollSpeed ) ) } s !== ! 1 && e . ui . ddmanager && ! i . dropBehaviour && e . ui . ddmanager . prepareOffsets ( r , t ) } } ) , e . ui . plugin . add ( "draggable" , "snap" , { start : function ( t , n ) { var r = e ( this ) . data ( "draggable" ) , i = r . options ; r . snapElements = [ ] , e ( i . snap . constructor != String ? i . snap . items || ":data(draggable)" : i . snap ) . each ( function ( ) { var t = e ( this ) , n = t . offset ( ) ; this != r . element [ 0 ] && r . snapElements . push ( { item : this , width : t . outerWidth ( ) , height : t . outerHeight ( ) , top : n . top , left : n . left } ) } ) } , drag : function ( t , n ) { var r = e ( this ) . data ( "draggable" ) , i = r . options , s = i . snapTolerance , o = n . offset . left , u = o + r . helperProportions . width , f = n . offset . top , l = f + r . helperProportions . height ; for ( var c = r . snapElements . length - 1 ; c >= 0 ; c -- ) { var h = r . snapElements [ c ] . left , p = h + r . snapElements [ c ] . width , d = r . snapElements [ c ] . top , v = d + r . snapElements [ c ] . height ; if ( ! ( h - s < o && o < p + s && d - s < f && f < v + s || h - s < o && o < p + s && d - s < l && l < v + s || h - s < u && u < p + s && d - s < f && f < v + s || h - s < u && u < p + s && d - s < l && l < v + s ) ) { r . snapElements [ c ] . snapping && r . options . snap . release && r . options . snap . release . call ( r . element , t , e . extend ( r . _uiHash ( ) , { snapItem : r . snapElements [ c ] . item } ) ) , r . snapElements [ c ] . snapping = ! 1 ; continue } if ( i . snapMode != "inner" ) { var m = Math . abs ( d - l ) <= s , g = Math . abs ( v - f ) <= s , y = Math . abs ( h - u ) <= s , b = Math . abs ( p - o ) <= s ; m && ( n . position . top = r . _convertPositionTo ( "relative" , { top : d - r . helperProportions . height , left : 0 } ) . top - r . margins . top ) , g && ( n . position . top = r . _convertPositionTo ( "relative" , { top : v , left : 0 } ) . top - r . margins . top ) , y && ( n . position . left = r . _convertPositionTo ( "relative" , { top : 0 , left : h - r . helperProportions . width } ) . left - r . margins . left ) , b && ( n . position . left = r . _convertPositionTo ( "relative" , { top : 0 , left : p } ) . left - r . margins . left ) } var w = m || g || y || b ; if ( i . snapMode != "outer" ) { var m = Math . abs ( d - f ) <= s , g = Math . abs ( v - l ) <= s , y = Math . abs ( h - o ) <= s , b = Math . abs ( p - u ) <= s ; m && ( n . position . top = r . _convertPositionTo ( "relative" , { top : d , left : 0 } ) . top - r . margins . top ) , g && ( n . position . top = r . _convertPositionTo ( "relative" , { top : v - r . helperProportions . height , left : 0 } ) . top - r . margins . top ) , y && ( n . position . left = r . _convertPositionTo ( "relative" , { top : 0 , left : h } ) . left - r . margins . left ) , b && ( n . position . left = r . _convertPositionTo ( "relative" , { top : 0 , left : p - r . helperProportions . width } ) . left - r . margins . left ) } ! r . snapElements [ c ] . snapping && ( m || g || y || b || w ) && r . options . snap . snap && r . options . snap . snap . call ( r . element , t , e . extend ( r . _uiHash ( ) , { snapItem : r . snapElements [ c ] . item } ) ) , r . snapElements [ c ] . snapping = m || g || y || b || w } } } ) , e . ui . plugin . add ( "draggable" , "stack" , { start : function ( t , n ) { var r = e ( this ) . data ( "draggable" ) . options , i = e . makeArray ( e ( r . stack ) ) . sort ( function ( t , n ) { return ( parseInt ( e ( t ) . css ( "zIndex" ) , 10 ) || 0 ) - ( parseInt ( e ( n ) . css ( "zIndex" ) , 10 ) || 0 ) } ) ; if ( ! i . length ) return ; var s = parseInt ( i [ 0 ] . style . zIndex ) || 0 ; e ( i ) . each ( function ( e ) { this . style . zIndex = s + e } ) , this [ 0 ] . style . zIndex = s + i . length } } ) , e . ui . plugin . add ( "draggable" , "zIndex" , { start : function ( t , n ) { var r = e ( n . helper ) , i = e ( this ) . data ( "draggable" ) . options ; r . css ( "zIndex" ) && ( i . _zIndex = r . css ( "zIndex" ) ) , r . css ( "zIndex" , i . zIndex ) } , stop : function ( t , n ) { var r = e ( this ) . data ( "draggable" ) . options ; r . _zIndex && e ( n . helper ) . css ( "zIndex" , r . _zIndex ) } } ) } ( jQuery ) , jQuery . effects || function ( e , t ) { function n ( t ) { var n ; return t && t . constructor == Array && t . length == 3 ? t : ( n = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/ . exec ( t ) ) ? [ parseInt ( n [ 1 ] , 10 ) , parseInt ( n [ 2 ] , 10 ) , parseInt ( n [ 3 ] , 10 ) ] : ( n = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/ . exec ( t ) ) ? [ parseFloat ( n [ 1 ] ) * 2.55 , parseFloat ( n [ 2 ] ) * 2.55 , parseFloat ( n [ 3 ] ) * 2.55 ] : ( n = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/ . exec ( t ) ) ? [ parseInt ( n [ 1 ] , 16 ) , parseInt ( n [ 2 ] , 16 ) , parseInt ( n [ 3 ] , 16 ) ] : ( n = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/ . exec ( t ) ) ? [ parseInt ( n [ 1 ] + n [ 1 ] , 16 ) , parseInt ( n [ 2 ] + n [ 2 ] , 16 ) , parseInt ( n [ 3 ] + n [ 3 ] , 16 ) ] : ( n = /rgba\(0, 0, 0, 0\)/ . exec ( t ) ) ? f . transparent : f [ e . trim ( t ) . toLowerCase ( ) ] } function r ( t , r ) {
s < o ; s ++ ) i [ s ] . apply ( this , r ) } return ! 0 } } ( "undefined" != typeof io ? io : module . exports , "undefined" != typeof io ? io : module . parent . exports ) , function ( exports , nativeJSON ) { "use strict" ; function f ( e ) { return e < 10 ? "0" + e : e } function date ( e , t ) { return isFinite ( e . valueOf ( ) ) ? e . getUTCFullYear ( ) + "-" + f ( e . getUTCMonth ( ) + 1 ) + "-" + f ( e . getUTCDate ( ) ) + "T" + f ( e . getUTCHours ( ) ) + ":" + f ( e . getUTCMinutes ( ) ) + ":" + f ( e . getUTCSeconds ( ) ) + "Z" : null } function quote ( e ) { return escapable . lastIndex = 0 , escapable . test ( e ) ? '"' + e . replace ( escapable , function ( e ) { var t = meta [ e ] ; return typeof t == "string" ? t : "\\u" + ( "0000" + e . charCodeAt ( 0 ) . toString ( 16 ) ) . slice ( - 4 ) } ) + '"' : '"' + e + '"' } function str ( e , t ) { var n , r , i , s , o = gap , u , a = t [ e ] ; a instanceof Date && ( a = date ( e ) ) , typeof rep == "function" && ( a = rep . call ( t , e , a ) ) ; switch ( typeof a ) { case "string" : return quote ( a ) ; case "number" : return isFinite ( a ) ? String ( a ) : "null" ; case "boolean" : case "null" : return String ( a ) ; case "object" : if ( ! a ) return "null" ; gap += indent , u = [ ] ; if ( Object . prototype . toString . apply ( a ) === "[object Array]" ) { s = a . length ; for ( n = 0 ; n < s ; n += 1 ) u [ n ] = str ( n , a ) || "null" ; return i = u . length === 0 ? "[]" : gap ? "[\n" + gap + u . join ( ",\n" + gap ) + "\n" + o + "]" : "[" + u . join ( "," ) + "]" , gap = o , i } if ( rep && typeof rep == "object" ) { s = rep . length ; for ( n = 0 ; n < s ; n += 1 ) typeof rep [ n ] == "string" && ( r = rep [ n ] , i = str ( r , a ) , i && u . push ( quote ( r ) + ( gap ? ": " : ":" ) + i ) ) } else for ( r in a ) Object . prototype . hasOwnProperty . call ( a , r ) && ( i = str ( r , a ) , i && u . push ( quote ( r ) + ( gap ? ": " : ":" ) + i ) ) ; return i = u . length === 0 ? "{}" : gap ? "{\n" + gap + u . join ( ",\n" + gap ) + "\n" + o + "}" : "{" + u . join ( "," ) + "}" , gap = o , i } } if ( nativeJSON && nativeJSON . parse ) return exports . JSON = { parse : nativeJSON . parse , stringify : nativeJSON . stringify } ; var JSON = exports . JSON = { } , cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g , escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g , gap , indent , meta = { "\b" : "\\b" , " " : "\\t" , "\n" : "\\n" , "\f" : "\\f" , "\r" : "\\r" , '"' : '\\"' , "\\" : "\\\\" } , rep ; JSON . stringify = function ( e , t , n ) { var r ; gap = "" , indent = "" ; if ( typeof n == "number" ) for ( r = 0 ; r < n ; r += 1 ) indent += " " ; else typeof n == "string" && ( indent = n ) ; rep = t ; if ( ! t || typeof t == "function" || typeof t == "object" && typeof t . length == "number" ) return str ( "" , { "" : e } ) ; throw new Error ( "JSON.stringify" ) } , JSON . parse = function ( text , reviver ) { function walk ( e , t ) { var n , r , i = e [ t ] ; if ( i && typeof i == "object" ) for ( n in i ) Object . prototype . hasOwnProperty . call ( i , n ) && ( r = walk ( i , n ) , r !== undefined ? i [ n ] = r : delete i [ n ] ) ; return reviver . call ( e , t , i ) } var j ; text = String ( text ) , cx . lastIndex = 0 , cx . test ( text ) && ( text = text . replace ( cx , function ( e ) { return "\\u" + ( "0000" + e . charCodeAt ( 0 ) . toString ( 16 ) ) . slice ( - 4 ) } ) ) ; if ( /^[\],:{}\s]*$/ . test ( text . replace ( /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g , "@" ) . replace ( /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g , "]" ) . replace ( /(?:^|:|,)(?:\s*\[)+/g , "" ) ) ) return j = eval ( "(" + text + ")" ) , typeof reviver == "function" ? walk ( { "" : j } , "" ) : j ; throw new SyntaxError ( "JSON.parse" ) } } ( "undefined" != typeof io ? io : module . exports , typeof JSON != "undefined" ? JSON : undefined ) , function ( e , t ) { var n = e . parser = { } , r = n . packets = [ "disconnect" , "connect" , "heartbeat" , "message" , "json" , "event" , "ack" , "error" , "noop" ] , i = n . reasons = [ "transport not supported" , "client not handshaken" , "unauthorized" ] , s = n . advice = [ "reconnect" ] , o = t . JSON , u = t . util . indexOf ; n . encodePacket = function ( e ) { var t = u ( r , e . type ) , n = e . id || "" , a = e . endpoint || "" , f = e . ack , l = null ; switch ( e . type ) { case "error" : var c = e . reason ? u ( i , e . reason ) : "" , h = e . advice ? u ( s , e . advice ) : "" ; if ( c !== "" || h !== "" ) l = c + ( h !== "" ? "+" + h : "" ) ; break ; case "message" : e . data !== "" && ( l = e . data ) ; break ; case "event" : var p = { name : e . name } ; e . args && e . args . length && ( p . args = e . args ) , l = o . stringify ( p ) ; break ; case "json" : l = o . stringify ( e . data ) ; break ; case "connect" : e . qs && ( l = e . qs ) ; break ; case "ack" : l = e . ackId + ( e . args && e . args . length ? "+" + o . stringify ( e . args ) : "" ) } var d = [ t , n + ( f == "data" ? "+" : "" ) , a ] ; return l !== null && l !== undefined && d . push ( l ) , d . join ( ":" ) } , n . encodePayload = function ( e ) { var t = "" ; if ( e . length == 1 ) return e [ 0 ] ; for ( var n = 0 , r = e . length ; n < r ; n ++ ) { var i = e [ n ] ; t += "<22> " + i . length + "<22> " + e [ n ] } return t } ; var a = /([^:]+):([0-9]+)?(\+)?:([^:]+)?:?([\s\S]*)?/ ; n . decodePacket = function ( e ) { var t = e . match ( a ) ; if ( ! t ) return {
( "onload" , function ( ) { WebSocket . _ _initialize ( ) } ) ) } ) ( ) , function ( e , t , n ) { function r ( e ) { if ( ! e ) return ; t . Transport . apply ( this , arguments ) , this . sendBuffer = [ ] } function i ( ) { } e . XHR = r , t . util . inherit ( r , t . Transport ) , r . prototype . open = function ( ) { return this . socket . setBuffer ( ! 1 ) , this . onOpen ( ) , this . get ( ) , this . setCloseTimeout ( ) , this } , r . prototype . payload = function ( e ) { var n = [ ] ; for ( var r = 0 , i = e . length ; r < i ; r ++ ) n . push ( t . parser . encodePacket ( e [ r ] ) ) ; this . send ( t . parser . encodePayload ( n ) ) } , r . prototype . send = function ( e ) { return this . post ( e ) , this } , r . prototype . post = function ( e ) { function r ( ) { this . readyState == 4 && ( this . onreadystatechange = i , t . posting = ! 1 , this . status == 200 ? t . socket . setBuffer ( ! 1 ) : t . onClose ( ) ) } function s ( ) { this . onload = i , t . socket . setBuffer ( ! 1 ) } var t = this ; this . socket . setBuffer ( ! 0 ) , this . sendXHR = this . request ( "POST" ) , n . XDomainRequest && this . sendXHR instanceof XDomainRequest ? this . sendXHR . onload = this . sendXHR . onerror = s : this . sendXHR . onreadystatechange = r , this . sendXHR . send ( e ) } , r . prototype . close = function ( ) { return this . onClose ( ) , this } , r . prototype . request = function ( e ) { var n = t . util . request ( this . socket . isXDomain ( ) ) , r = t . util . query ( this . socket . options . query , "t=" + + ( new Date ) ) ; n . open ( e || "GET" , this . prepareUrl ( ) + r , ! 0 ) ; if ( e == "POST" ) try { n . setRequestHeader ? n . setRequestHeader ( "Content-type" , "text/plain;charset=UTF-8" ) : n . contentType = "text/plain" } catch ( i ) { } return n } , r . prototype . scheme = function ( ) { return this . socket . options . secure ? "https" : "http" } , r . check = function ( e , r ) { try { var i = t . util . request ( r ) , s = n . XDomainRequest && i instanceof XDomainRequest , o = e && e . options && e . options . secure ? "https:" : "http:" , u = n . location && o != n . location . protocol ; if ( i && ( ! s || ! u ) ) return ! 0 } catch ( a ) { } return ! 1 } , r . xdomainCheck = function ( e ) { return r . check ( e , ! 0 ) } } ( "undefined" != typeof io ? io . Transport : module . exports , "undefined" != typeof io ? io : module . parent . exports , this ) , function ( e , t ) { function n ( e ) { t . Transport . XHR . apply ( this , arguments ) } e . htmlfile = n , t . util . inherit ( n , t . Transport . XHR ) , n . prototype . name = "htmlfile" , n . prototype . get = function ( ) { this . doc = new ( window [ [ "Active" ] . concat ( "Object" ) . join ( "X" ) ] ) ( "htmlfile" ) , this . doc . open ( ) , this . doc . write ( "<html></html>" ) , this . doc . close ( ) , this . doc . parentWindow . s = this ; var e = this . doc . createElement ( "div" ) ; e . className = "socketio" , this . doc . body . appendChild ( e ) , this . iframe = this . doc . createElement ( "iframe" ) , e . appendChild ( this . iframe ) ; var n = this , r = t . util . query ( this . socket . options . query , "t=" + + ( new Date ) ) ; this . iframe . src = this . prepareUrl ( ) + r , t . util . on ( window , "unload" , function ( ) { n . destroy ( ) } ) } , n . prototype . _ = function ( e , t ) { this . onData ( e ) ; try { var n = t . getElementsByTagName ( "script" ) [ 0 ] ; n . parentNode . removeChild ( n ) } catch ( r ) { } } , n . prototype . destroy = function ( ) { if ( this . iframe ) { try { this . iframe . src = "about:blank" } catch ( e ) { } this . doc = null , this . iframe . parentNode . removeChild ( this . iframe ) , this . iframe = null , CollectGarbage ( ) } } , n . prototype . close = function ( ) { return this . destroy ( ) , t . Transport . XHR . prototype . close . call ( this ) } , n . check = function ( e ) { if ( typeof window != "undefined" && [ "Active" ] . concat ( "Object" ) . join ( "X" ) in window ) try { var n = new ( window [ [ "Active" ] . concat ( "Object" ) . join ( "X" ) ] ) ( "htmlfile" ) ; return n && t . Transport . XHR . check ( e ) } catch ( r ) { } return ! 1 } , n . xdomainCheck = function ( ) { return ! 1 } , t . transports . push ( "htmlfile" ) } ( "undefined" != typeof io ? io . Transport : module . exports , "undefined" != typeof io ? io : module . parent . exports ) , function ( e , t , n ) { function r ( ) { t . Transport . XHR . apply ( this , arguments ) } function i ( ) { } e [ "xhr-polling" ] = r , t . util . inherit ( r , t . Transport . XHR ) , t . util . merge ( r , t . Transport . XHR ) , r . prototype . name = "xhr-polling" , r . prototype . heartbeats = function ( ) { return ! 1 } , r . prototype . open = function ( ) { var e = this ; return t . Transport . XHR . prototype . open . call ( e ) , ! 1 } , r . prototype . get = function ( ) { function t ( ) { this . readyState == 4 && ( this . onreadystatechange = i , this . status == 200 ? ( e . onData ( this . responseText ) , e . get ( ) ) : e . onClose ( ) ) } function r ( ) { this . onload = i , this . onerror = i , e . retryCounter = 1 , e . onData ( this . responseText ) , e . get ( ) } function s ( ) { e . retryCounter ++ , ! e . retryCounter || e . retryCounter > 3 ? e . onClose ( ) : e . get ( ) } if ( ! this . isOpen ) return ; var e = this ; this . xhr = this . request ( ) , n . XDomainRequest && this . xhr instanceof XDomainRequest ? ( this . xhr . onload = r , this . xhr . onerror = s ) : this . xhr . onreadystatechange = t
$ ( this ) . html ( ) ; $ ( this ) . parents ( ".CardOnGraph" ) . find ( ".go-link" ) . attr ( "href" , e ) } ) , $ ( "#saveLayout" ) . click ( function ( e ) { e . preventDefault ( ) , saveLayoutAll ( ) } ) , $ ( "body" ) . bind ( "keyup" , function ( e ) { switch ( e . which ) { case 13 : enterKeyHandler ( ) ; break ; case 27 : escKeyHandler ( ) ; break ; default : } } ) } ) ;