private UserData ProcessLogin(string username, string password, bool passHashed, string ipAddr, string language, ref string errorMsg)
        {
            CultureInfo ci = new CultureInfo(language);

            UserData ud = UserMng.Login(username, password, passHashed, ipAddr);

            //string errorMsg = null;
            if (ud != null)
            {
                if (ud.SessionId == -1)
                {
                    errorMsg = Resources.Resources.ResourceManager.GetString("UI_MaxUserLoginCountReached", ci);
                    //errorMsg = Resources.Resources.UI_MaxUserLoginCountReached;
                }
                else if (ud.SessionId == -2)
                {
                    errorMsg = Resources.Resources.UI_SubscriptionExpired;
                }
                else if (ud.SessionId == -3)
                {
                    errorMsg = Resources.Resources.UI_EmailNotValidated;
                }
                else if (ud.SessionId == -4)
                {
                    errorMsg = Resources.Resources.ResourceManager.GetString("UI_UserNotActive", ci);
                    //errorMsg = Resources.Resources.UI_UserNotActive;
                }
                else if (ud.SessionId == -5)
                {
                    errorMsg = Resources.Resources.ResourceManager.GetString("UI_IpNotAllowed", ci);
                }
                else if (ud.SessionId > 0)
                {
                    Session["UserData"] = ud;
                    Session.Timeout     = ud.SessionTimeout; // minutes

                    var browserString   = Request.Browser.Browser;
                    var userAgentString = Request.UserAgent;
                    var browserId       = (int)GetBrowserByBrowserAndUserAgentString(browserString, userAgentString);
                    var isMobileDevice  = Request.Browser.IsMobileDevice;

                    if (Common.CheckRequestOriginIsBotSoft(userAgentString) == false)
                    {
                        Stat.AddLogin(ud.UserId, browserId, isMobileDevice, Request.UserHostAddress, ud.ClientId, ud.SellerId);
                    }

                    var productsList = UserMng.GetProductsList(ud.UserId);
                    Session["ProductsList"] = productsList;

                    var selectedProductCookie = Request.Cookies["SelectedProductId"];
                    int selectedProductId     = 1;

                    if (UserData.Products.Where(p => p.IsActive.HasValue && p.IsActive == true).ToList().Count == 1)
                    {
                        selectedProductId = UserData.Products.Where(p => p.IsActive.HasValue && p.IsActive == true).ToList().FirstOrDefault().ProductId;
                        var newCookie = new HttpCookie("SelectedProductId");
                        newCookie.Value = selectedProductId.ToString();

                        Response.SetCookie(newCookie);
                    }
                    else
                    {
                        if (selectedProductCookie != null && selectedProductCookie.Value != null && selectedProductCookie.Value.ToString() != "")
                        {
                            selectedProductId = int.Parse(selectedProductCookie.Value.ToString());
                        }
                    }

                    Session["SelectedProductId"] = selectedProductId;
                }
            }
            else
            {
                errorMsg = Resources.Resources.UI_InvalidLogin;
            }

            return(ud);
        }