<!DOCTYPE html>
<html>

  <head>
    <script src="http://code.jquery.com/jquery-2.0.3.min.js" data-semver="2.0.3" data-require="jquery@*"></script>
    <script data-require="d3@*" data-semver="3.4.6" src="//cdnjs.cloudflare.com/ajax/libs/d3/3.4.6/d3.min.js"></script>
    <script src="script.js"></script>
  </head>

  <body>
    
  </body>

</html>
$(document).ready(function() {
  var picker = new ColorPicker("#00DB00");
});

var ColorPicker = function (defaultColor, colorScale) {
    var self = this;
    var rainbow = ["#FFD300", "#FFFF00", "#A2F300", "#00DB00", "#00B7FF", "#1449C4", "#4117C7", "#820AC3", "#DB007C", "#FF0000", "#FF7400", "#FFAA00"];
    colorScale = colorScale || rainbow;
    var color = function (i) {
        return colorScale[i];
    };
    defaultColor = "#A9ACAC";
    var pickedColor = "#000";

    self.pickedColor = defaultColor;
    self.picked = function (color) {};
    var clicked = function () {
        self.picked(self.pickedColor);
    };

    var pie = d3.layout.pie().sort(null);
    var arc = d3.svg.arc().innerRadius(79).outerRadius(79);
    var newarc = d3.svg.arc().innerRadius(79).outerRadius(115);
    
    var colorout = false;

    var svg = d3.select("body")
        .append("svg")
        .attr("width", 500)
        .attr("height", 500)
        .append("g")
        .attr("transform", "translate(200,200)");
    
    var plateBound = svg.append("circle")
        .attr("cx", 0)
        .attr("cy", 0)
        .attr("r",140)
        .attr("fill-opacity",0)
        .on("mouseout", function() {
            button.transition().delay(500)
              .duration(200)
              .attr("transform","translate(0, 0)");
        });    
        
    var button = svg.append("rect")
        .attr("x", 0)
        .attr("y", 0)
        .attr("height", 25)
        .attr("width", 25)
        .attr("stroke","black")
        .on("click", function() {
            wheel.transition()
              .ease("elastic")
              .duration(800)
              .attr("d", newarc);
            button.transition()
              .ease("elastic")
              .duration(800)
              .attr("transform","translate(0, 0)");
            colorout = true;
        });    
         
    var wheel = svg.datum([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])
        .selectAll("path")
        .data(pie)
        .enter()
        .append("path")
        .attr("fill", function (d, i) {
            return color(i);
        })
        //.attr("stroke", "#fff")
        //.attr("stroke-width", 4)
        .attr("d", arc)
        .on("mouseover", function () {
            var fill = d3.select(this).attr("fill");
            self.pickedColor = fill;
            plate.attr("fill", fill);
        })
        .on("click", function() {
            wheel.transition()
              .duration(200)
              .attr("d", arc);
            colorout = false;
        });
    
    var status = 0;

    var plate = svg.append("rect")
        .attr("fill", defaultColor)
        .attr("x", -75)
        .attr("y", -75)
        .attr("height", 150)
        .attr("width", 150)
        .attr("rx",100)
        .attr("ry",100)
        .attr("stroke","black")
        .on("mouseover", function() {
            if(colorout)
                return;             
            button.transition()
              .ease("elastic")
              .duration(800)
              .attr("transform","translate(100, -20)");
        })
};