Add disabled class to button after click event.
Bubble packing code plunked into createVisualization function. Use d3.layout.pack to cluster data. Format data as root and children.

 - Flask server returns jsonified hierarchical object.
 - Data hardcoded into data_viz is one layer hierarchy of sample data.
 - Original d3 code from jsfiddle for testing packing functionality.
Form action changed to match flask route for ajax/user.
Add margins object, change pack layout width to width of #viz
Add the hover and click functionalities to circles - however, buggy because background circle is the only one that highlights orange.

Otherwise approximately working.
Removed screen_name hover effects, as screen names are already printed inside circles as g text elements.
Updated .gitignore
WIP: Use mbostock bubble chart as source code to create a flattened hierarchy of bubbles. No console errors, but circles are invisible.

Svg now renders in DOM; had to change JSON data names in sample JSONdata for x,y,r to get non-NaN assignments in classes function.
Bubble chart now working. Places 'className' in center of circle as node text. Bubbles have color based on rgba value, opacity dependent on score. Radius based on followers ('size' attribute)

 - Added score in classes function
 - Changed radius function to use d.r as parameter instead of d.size -- this gave bubbles the corrext radius
 - Added .sort by value to pack layout
Add event handlers to node: on mouseover, mouseout, and click. Replace old d.{name} attributes with names as given in classes function.

 - d.value represents followers
 - d.className is screen_name
 - d.score is d.score

WIP: color, text color, var names
Move in-file sample json data to flask /testing route. Passes json object to createVisualization, and data renders.

 - Assign parameter 'scores' to 'root' variable for use in classes function and data binding
Rewrite friend_scores in the correct data format, as a dictionary wit
h a key of "children" - empty list to which friend scores are appende
d.

 - Instead of "name": "friends" as the root, replace with "name": user.USER_ID to nest all friends more semantically.
 - Append to empty list inside "children" using the attribute names from d3 - name, size, score.
 - Added output from my username to /testing route.
Style bubbles with gray outline, remove mouseover code

 - d3.select(this) was selecting "g" elements, not circles.
Move #detail for loop (populating ul with data points) into mouseover handler.

This allows a user to see more about a bubble at mouseover, rather than on click.
In d3.layout.pack, change sort function to return bubbles arranged by d.score (in reverse order, with higher scores appearing closer to the center)
Replace for-loop over data details with text insertion into pre-created list elements in #detail div.

 - Add li's with ids in app.js in success callback
 - Insert text from d3 on mouseover
 - Include '@' symbol and labels for data
 - Remove bullet style from list
Add mouseover/mouseout functionality to bubbles by accessing childrenof g element.

 - get 'circle' element by traversing DOM from 'this' (g) to first child
 - setAttribute on selection, changing fill to orange for mouseover
 - setAttribute on selection to original rgba calculation on mouseout
 - WIP: DRY code - currently have to identify same selection and colors twice
Refactor and comment app.js event handler, including removing disabled class from button on success.