public static string f_facebook_login_called_from_javascript()
    {
        log.Warn("WANRING - COPIED NOT USED f_check_user_role called to check the role of the user.");
        string role = "Herman";
        string email = HttpContext.Current.Request.QueryString["uid"].ToString();

        hedgeem_control_popup_message my_popup_message = new hedgeem_control_popup_message();
        my_popup_message.p_detailed_message_str = "";

        HedgeEmLogEvent my_log_event = new HedgeEmLogEvent();
        my_log_event.p_method_name = System.Reflection.MethodBase.GetCurrentMethod().ToString();
        // Log the fact this method has been called
        my_log_event.p_message = String.Format("Method [btn_login_Click] called ");
        log.Debug(my_log_event.ToString());

        my_log_event.p_method_name = System.Reflection.MethodBase.GetCurrentMethod().ToString();
        my_log_event.p_message = "This message creates new fb user in database";
        string my_endpoint = "Not Set";
        try
        {
            int xxxHC_a_opening_balance = 25;
            string xxx_default_password = "******";
            try
            {

                // Creates (registers) a new user (HedgeEmPlayer) in the HedgeEm Server.
                // Note this also creates a Personal Table for them (which the HedgeEmTable is returned in the Player object 'p_personal_table_id
                enum_authentication_method my_authentication_method = enum_authentication_method.FACEBOOK;
                my_endpoint = String.Format("{0}/ws_register_user_and_create_personal_table/{1},{2},{3},{4},{5}/",
                                                p_current_json_webservice_url_base,
                                                email,
                                                xxx_default_password,
                                                email,
                                                xxxHC_a_opening_balance,
                                                my_authentication_method);

                HedgeEmPlayer my_player = (HedgeEmPlayer)f_get_object_from_json_call_to_server(my_endpoint, typeof(HedgeEmPlayer));
                if (my_player.p_error_message != null)
                {
                    if (my_player.p_error_message != "")
                    {
                        throw new Exception(my_player.p_error_message);
                    }
                }



                //Page.RegisterStartupScript("OnLoad", "<script>alert('Thank you for registering, you are now logged in an can start to play HedgeEm'); if(alert){ window.location='frm_facebook_canvas.aspx';}</script>");
            }
            /*
        catch (System.Net.WebException webex)
        {
            HttpWebResponse my_error_response = webex.Response as HttpWebResponse;
            switch (my_error_response.StatusCode)
            {
                case HttpStatusCode.BadRequest:
                    my_log_event.p_message = String.Format(
                       "Error (Web Exception: BadRequest). Endpoint URI probably badly formed ...\nEndpoint [{0}], Status Code [{1}]",
                              my_endpoint,
                               my_error_response.StatusCode
                              );
                    break;

                case HttpStatusCode.NotFound:
                    my_log_event.p_message = String.Format(
                       "Error (Web Exception: NotFound). Endpoint URI not found; Endpoint [{0}], Status Code [{1}]",
                              my_endpoint,
                               my_error_response.StatusCode
                              );
                    break;

                default: my_log_event.p_message = String.Format(
                       "Error unexpected status code (Web Exception of type Status Code [{0}] for Endpoint [{1}], ",
                              my_error_response.StatusCode,
                              my_endpoint
                              );
                    break;
            }
            throw new WebException(my_log_event.ToString(), webex);

        }*/
            catch (Exception ex)
            {
                string my_error_message = "Error while btn_new_fb_user_Click" + ex.Message;
                string my_error_popup = "alert('Error in btn_new_fb_user_Click - " + ex.Message.ToString() + "');";
                log.Error(my_error_message);
           throw new Exception(my_error_message);
               // System.Web.HttpContext.Current.Response.Write("<SCRIPT LANGUAGE='JavaScript'>" + my_error_popup + "</SCRIPT>");
            }
        }
        catch (Exception ex)
        {
            string my_error_message = "Error while btn_new_fb_user_Click" + ex.Message;
            string my_error_popup = "alert('Error in creating user - " + ex.Message.ToString() + "');";
            log.Error(my_error_message);
         throw new Exception(my_error_message);
            //System.Web.HttpContext.Current.Response.Write("<SCRIPT LANGUAGE='JavaScript'>" + my_error_popup + "</SCRIPT>");
        }


        // Detemine if there is a session varible set for facebook. 
        // xxx Nov 2014 Note ... Not sure why - I assmume this is to check
        // if the user has already authenticated via facebook so we can make choices about what to display
        //if (Session["chkfb"] != null)
        //{
        //   chk_fb_visibility.Visible = true;
        //    log.Debug(String.Format("Session variable 'chkfb' is {0}", Session["chkfb"].ToString()));
        //}
        //else
        // {
        //  chk_fb_visibility.Visible = false;
        //  chk_fb_visibility.Visible = false;
        //}

        // Declare vairibles that will be required later
        string my_username = email;
        string my_password = "";
        DataTable my_user_details;

        try
        {
            string xxxHC_password = "******";

            // Attempt to retrieve a Player object from the HedgeEm Webservice using the credentials supplied.
            my_endpoint = String.Format("{0}/ws_login/{1},{2},{3},{4}/", p_current_json_webservice_url_base, p_session_id, p_server_id, my_username, xxxHC_password);

            // Might need to make next method static
            HedgeEmPlayer my_player = null;
            my_player = (HedgeEmPlayer)f_get_object_from_json_call_to_server(my_endpoint, typeof(HedgeEmPlayer));
            if (my_player == null)
            {
                string my_error_msg = String.Format("Player object is null after call to Webservice to retrieve details", my_username);
                my_log_event.p_message = my_error_msg;
                log.Error(my_log_event.ToString());
                throw new Exception(my_error_msg);
            }

            if (my_player.p_player_id <= 0)
            {
                my_log_event.p_message = my_player.p_error_message;
                log.Warn(my_log_event.ToString());
                //throw new Exception(my_log_event.ToString());

            }
            else
            {
                // If we have got here the user has logged into the server sucessfully so we should set some session variables for ease of use later
                int my_player_id = my_player.p_player_id;
                HttpContext.Current.Session["p_session_player_id"] = my_player_id;
                HttpContext.Current.Session["display_name"] = my_player.p_display_name;
                HttpContext.Current.Session["p_session_username"] = my_username;
                HttpContext.Current.Session["password"] = my_password;
                HttpContext.Current.Session["p_session_personal_table_id"] = my_player.p_personal_table_id;

                string my_info_msg = String.Format("Session vars set: p_session_player_id[{0}], display_name[{1}], p_session_username[{2}], password[{3}], p_session_personal_table_id[{4}], ",
                                    HttpContext.Current.Session["p_session_player_id"],
                                    HttpContext.Current.Session["display_name"],
                                    HttpContext.Current.Session["p_session_username"],
                                    HttpContext.Current.Session["password"],
                                    HttpContext.Current.Session["p_session_personal_table_id"]);

                my_log_event.p_message = my_info_msg;
                log.Info(my_log_event.ToString());


                // As the user has now logged in by HedgeEm authentication hide the Facebook login DIV
                if (HttpContext.Current.Session["facebooklogin"] != null)
                {
                    //LoginDiv.Attributes.Add("style", "display:none !Important;");
                }

                // As the user has now logged show the logout button and hide the login button
                // xxx Nov 2014.  Not sure why this is on condition of facebooklogin; I separated this out from if/else
                // of above to figure this out.  I assume is because you could be logged in by facebook so still want to
                // show / hide login/logout buttons appropriately
                if (HttpContext.Current.Session["facebooklogin"] == null)
                {
                    //lbl_user_name.Text = HttpContext.Current.Session["display_name"].ToString();
                    //Logout.Attributes.Add("style", "display:block !Important;");
                    //LoginDiv.Attributes.Add("style", "display:none !Important;");
                }

                // As the user has now logged in Enable the 'Play Now' button
                //btn_play_now.Enabled = true;



                // If the 'fb_hide_logout' is set it implies xxxxxxxxxxxxxxxxxxxxx so enable the 'Play Now' button
                if (HttpContext.Current.Session["fb_hide_logout"] != null)
                {
                    //    chk_fb_visibility_logout.Visible = false;
                    //btn_play_now.Visible = true;

                }

                // If the 'chk_logout_hide' is set it implies xxxxxxxxxxxxxxxxxxxxx so enable the 'Play Now' button
                if (HttpContext.Current.Session["chk_logout_hide"] != null)
                {

                    //   chk_fb_visibility.Visible = true;
                    //btn_play_now.Visible = true;
                    //btnLogout.Visible = false;
                }
                //Page.RegisterStartupScript("OnLoading", "<script>load_edit_profile();</script>");
                // Response.Redirect("frm_facebook_canvas.aspx");
                //Page.RegisterStartupScript("OnLoad", "<script>document.getElementById('progressbar').style.display='none';</script>");
            }
            return role;
        }
        catch (Exception ex)
        {
            string my_error_message = "Fatal Errorin method [btn_login_Click] - " + ex.Message.ToString() + "');";

            //  Log the error and raise a new exception
            my_log_event.p_message = String.Format(
                "Fatal error in method [btn_login_Click]. Reason [{0}]",
                        ex.Message);
            log.Error(my_log_event.ToString(), new Exception(ex.Message));
            throw ex;
            //Place_Holder_Popup_Message.Controls.Add(my_popup_message);
        }
       
    }
    protected void btn_new_user_Click(object sender, EventArgs e)
    {
        HedgeEmLogEvent my_log_event = new HedgeEmLogEvent();
        my_log_event.p_method_name = System.Reflection.MethodBase.GetCurrentMethod().ToString();
        my_log_event.p_message = "This message creates new user in database";
        log.Debug(my_log_event.ToString());
        string my_endpoint = "Not Set";

        bool user_exist;
        hedgeem_control_popup_message my_popup_message = new hedgeem_control_popup_message();
        my_popup_message.p_detailed_message_str = "";

        try
        {
            // This checks whether the entered email id exists in the database or not.
            my_endpoint = String.Format("{0}/ws_get_player_list/sessionabc123,{1},10000/", p_current_json_webservice_url_base, p_server_id);

            List<HedgeEmPlayer> my_player_list = (List<HedgeEmPlayer>)f_get_object_from_json_call_to_server(my_endpoint, typeof(List<HedgeEmPlayer>));
            user_exist = my_player_list.Exists(x => x.p_username == txt_username.Text);

            if (user_exist == false)
            {
                xxxHC_a_opening_balance = 100;
                try
                {
                    enum_authentication_method my_authentication_method = enum_authentication_method.HEDGEEM_ACCOUNT;
                    // Creates (registers) a new user (HedgeEmPlayer) in the HedgeEm Server.
                    // Note this also creates a Personal Table for them (which the HedgeEmTable is returned in the Player object 'p_personal_table_id
                    my_endpoint = String.Format("{0}/ws_register_user_and_create_personal_table/{1},{2},{3},{4},{5}/",
                                                    p_current_json_webservice_url_base,
                                                    txt_username.Text,
                                                    txt_password.Text,
                                                    txt_full_name.Text,
                                                    xxxHC_a_opening_balance,
                                                    my_authentication_method);

                    HedgeEmPlayer my_player = (HedgeEmPlayer)f_get_object_from_json_call_to_server(my_endpoint, typeof(HedgeEmPlayer));
                    if (my_player.p_error_message != null)
                    {
                        if (my_player.p_error_message != "")
                        {
                //            throw new Exception(my_player.p_error_message);




                        }
                    }

                    // If we got here we assume Player was created successfully so store Player ID and continue
                    p_session_player_id = my_player.p_player_id;


                    // login to the game
                    Session["p_session_username"] = txt_username.Text;
                    Session["password"] = txt_password.Text;
                    Session["display_name"] = txt_full_name.Text;
                    Session["p_session_personal_table_id"] = my_player.p_personal_table_id;
                    Session["p_session_username"] = my_player.p_username;
                    Session["p_session_password"] = txt_password.Text;
                    Session["p_session_display_name"] = my_player.p_display_name;

                    //sends registration mail
                    //send_user_registration_mail(txt_username.Text, txt_password.Text, txt_full_name.Text);

                    //my_popup_message.p_detailed_message_str = "Thank you for registering, you may now start to play.  Please don't forget to confirm your registration by clicking on the link in the mail we have just sent you to get your free 50 chips and benefit from extra features.";
                    //Place_Holder_Popup_Message.Controls.Add(my_popup_message);
                    HedgeemMessage my_popup_messageError = new HedgeemMessage();
                    my_popup_messageError.p_detailed_message_str = "";
                    my_popup_messageError.p_detailed_message_str = "Thank you for registering, you may now start to play.  Please don't forget to confirm your registration by clicking on the link in the mail we have just sent you to get your free 50 chips and benefit from extra features.";
                    my_popup_messageError.p_is_visible = true;

                    Place_Holder_Popup_Message.Controls.Add(my_popup_messageError);

                    my_popup_messageError.Dispose();
                   // ScriptManager.RegisterStartupScript(Page, GetType(), "OnLoad", "alert('Thank you for registering. You may now start to play. Click on the link in the mail we have just sent you to get benefit from extra features.');", true);
                    //ScriptManager.RegisterStartupScript(Page, GetType(), "OnLoad", "alert('Thank you for registering, you may now start to play.  Please don't forget to confirm your registration by clicking on the link in the mail we have just sent you to get your free 50 chips and benefit from extra features.'); if(alert){ window.location='frm_facebook_canvas.aspx';}", true);
                    if (Session["p_session_username"] != null)
                    {

                        Logout.Attributes.Add("style", "display:block!Important;");
                        btnLogout.Visible = true;
                        btnLogout.Enabled = true;
                        Page.RegisterStartupScript("OnLoading", "<script>load_edit_profile();</script>");
                        if (Session["display_name"] != null)
                        {
                            lbl_user_name.Text = Session["display_name"].ToString();
                        }
                        //LoginDiv.Attributes.Add("style", "display:none !Important;");
                        divLogin.Attributes.Add("style", "display:none !Important;");
                        if (Session["p_session_username"] != null)
                        {
                            if (File.Exists(Server.MapPath("resources/player_avatar_" + Session["p_session_username"].ToString() + ".jpg")))
                            {
                                usr_image.ImageUrl = "../resources/player_avatar_" + Session["p_session_username"].ToString() + ".jpg";
                            }
                            
                            else
                            {
                                usr_image.ImageUrl = "../resources/avitars/user_square.png";
                            }
                        }

                        btn_play_now.Enabled = true;



                        string role = "";
                        if (my_player != null)
                        {
                            role = my_player.p_role;

                            my_log_event.p_message = String.Format("User/player role hardcoded to BASIC_USER");
                            log.Debug(my_log_event.ToString());

                        }

                        if (role == enum_user_role.ADMIN.ToString())
                        {
                            btnAdmin.Attributes.Add("style", "display:block");
                        }

                        // - xxx- Hardcoding value of role to BASIC_USER as need to discuss this with Simon.
                        Session["user_role"] = "BASIC_USER";
                        Page.RegisterStartupScript("OnLoad", "<script>document.getElementById('progressbar').style.display='none';</script>");
                    }

                }
                catch (Exception ex)
                {
                    my_log_event.p_message = String.Format("Reason [{0}]", ex.Message);
                    HedgeemerrorPopup my_popup_messageError = new HedgeemerrorPopup();
                    my_popup_messageError.p_detailed_message_str = "";
                    my_popup_messageError.p_detailed_message_str = String.Format("Reason [{0}]", ex.Message);
                    my_popup_messageError.p_is_visible = true;

                    Place_Holder_Popup_Message.Controls.Add(my_popup_messageError);

                    my_popup_messageError.Dispose();
                    log.Error(my_log_event.ToString());
                 //   throw new Exception(my_log_event.ToString());
                }
            }

            else
            {
                lbl_register_status_msg.Visible = true;
                lbl_register_status_msg.Text = "This User Already exists. Please try again or Login to continue.";
                //ScriptManager.RegisterStartupScript(Page, GetType(), "OnLoad", "alert('This User Already exists. Please try again or Login to continue.');", true);
            }
        }
        catch (Exception ex)
        {
            string my_error_message = String.Format("ERROR! Unable to create user.  Reason [{0}]", ex.Message);
            //string my_error_popup = "alert('Error in creating user - " + ex.Message.ToString() + "');";
            lbl_register_status_msg.Visible = true;
            lbl_register_status_msg.Text = "ERROR! Unable to create user.  Hedge'Em Administrators have been informed.";
            log.Error("Error in creating user", new Exception(ex.Message));
            HedgeemerrorPopup my_popup_messageError = new HedgeemerrorPopup();
            my_popup_messageError.p_detailed_message_str = "";
            my_popup_messageError.p_detailed_message_str = my_error_message;
            my_popup_messageError.p_is_visible = true;

            Place_Holder_Popup_Message.Controls.Add(my_popup_messageError);

            my_popup_messageError.Dispose();
            //throw new Exception("ssssss");

        }
    }