protected void Button2_Click(object sender, EventArgs e)
        {
            Panel = Session["myObj"] as KMean;
            if (Session["update"].ToString() == ViewState["update"].ToString())
            {

                Panel.reCalculateCluster();

                centroids.InnerHtml = "";
                points.InnerHtml = "";
                //redraw new centroids
                for (int i = 0; i < Panel.Clusters.Count; i++)
                {
                    string rgb = "fill:rgb(" + Panel.Clusters[i].color[0] + "," + Panel.Clusters[i].color[1] + "," + Panel.Clusters[i].color[2] + ");";  // choose randomly color for centroids
                    centroids.InnerHtml += "<circle cx=" + Panel.Clusters[i].p.x.ToString() + " cy=" + Panel.Clusters[i].p.y.ToString() + " r='10.0' style=" + rgb + "></circle>";

                    //color every point depends on its cluster color
                    for (int j = 0; j < Panel.Clusters[i].clusterPoints.Count; j++)
                    {
                        points.InnerHtml += "<circle cx=" + Panel.Clusters[i].clusterPoints[j].x.ToString() + " cy=" + Panel.Clusters[i].clusterPoints[j].y.ToString() + " r='5.0' style=" + rgb + "></circle>";
                    }
                }

            }
            else
            {
                Response.Write("<script>alert('Enter Points and Centroids First !!')</script>");
            }
        }