/// <summary>
		/// Gets language embedding.
		/// </summary>
		/// <param name="configValue">The configured value.</param>
		/// <param name="defaultValue">The default value.</param>
		/// <returns>The language embedding.</returns>
		private static LanguageEmbedding GetLanguageEmbedding(string configValue, LanguageEmbedding defaultValue)
		{
			if (string.IsNullOrEmpty(configValue))
			{
				return defaultValue;
			}

			switch (configValue.ToLowerInvariant())
			{
				case "always":
					return LanguageEmbedding.Always;
				case "asneeded":
					return LanguageEmbedding.AsNeeded;
				case "never":
					return LanguageEmbedding.Never;
				default:
					return defaultValue;
			}
		}
        private string GetItemUrl(Item item, Site site, LanguageEmbedding langEmbed, string lang)
        {
            lang = lang.Trim();
            string url = null;

            if (LanguageManager.IsValidLanguageName(lang))
            {

                string serverUrl = SitemapManagerConfiguration.GetServerUrlBySite(site.Name);

                Sitecore.Links.UrlOptions options = Sitecore.Links.UrlOptions.DefaultOptions;
                options.SiteResolving = Sitecore.Configuration.Settings.Rendering.SiteResolving;
                options.Site = SiteContext.GetSite(site.Name);
                options.AlwaysIncludeServerUrl = string.IsNullOrEmpty(serverUrl);
                options.LanguageEmbedding = langEmbed;
                options.Language = LanguageManager.GetLanguage(lang);

                url = Sitecore.Links.LinkManager.GetItemUrl(item, options);

                if (!string.IsNullOrEmpty(serverUrl))
                {
                    url = string.Format("http://{0}{1}", serverUrl, url);
                }
            } else
            {
                Log.Warn(string.Format("Language '{0}' is not valid", lang), this);
            }

            return url;
        }