public static string GetFriendlyURL(int?ModuleID, PortalSettings pS, string QueryParameters, URLEntity u)
        {
            string strLanguage = string.IsNullOrEmpty(u.Language) ? URLManager.GetCurrentLanguage() : u.Language;

            string path = "~/Default.aspx";

            if (!string.IsNullOrEmpty(strLanguage))
            {
                pS.CultureCode = strLanguage;
            }
            else
            {
                pS.CultureCode = pS.DefaultLanguage;
            }

            TabInfo tab = null;

            if (u.PageName)
            {
                if (ModuleID.HasValue)
                {
                    int?ModuleTabID = null;

                    var Index = GetModuleTabIndex();

                    if (Index.ContainsKey(ModuleID.Value))
                    {
                        ModuleTabID = Index[ModuleID.Value];
                    }
                    else
                    {
                        ModuleInfo minfo = new ModuleController().GetModule(ModuleID.Value, Null.NullInteger, false);
                        ModuleTabID = minfo.TabID;
                    }
                    if (ModuleTabID.HasValue)
                    {
                        tab = new TabController().GetTab(ModuleTabID.Value, pS.PortalId);
                    }
                }
                else if (pS.HomeTabId != pS.ActiveTab.TabID)
                {
                    tab = pS.ActiveTab;
                }
            }


            if (tab == null)
            {
                tab = new TabController().GetTab(pS.HomeTabId, pS.PortalId);
            }


            path = AppendQueryParameters(pS, tab.TabID, path, QueryParameters, strLanguage, u);
            if (pS != null && pS.PortalAlias != null)
            {
                return(FriendlyUrlProvider.Instance().FriendlyUrl(tab, path, u.Slug, pS as IPortalSettings));
            }
            else
            {
                return(path.TrimStart('~', '/') + "&" + u.Slug);
            }
        }