///-------------------------------------------------------------------------------------------------
        /// <summary>
        ///     Determine if we can show tooltip.
        /// </summary>
        ///
        /// <remarks>
        ///     Anwar Javed, 03/05/2014 3:11 PM.
        /// </remarks>
        ///
        /// <exception cref="ArgumentNullException">
        ///     Thrown when one or more required arguments are null.
        /// </exception>
        ///
        /// <param name="uiCulture">
        ///     The culture.
        /// </param>
        /// <param name="key">
        ///     The key.
        /// </param>
        ///
        /// <returns>
        ///     true if we can show tooltip, false if not.
        /// </returns>
        ///-------------------------------------------------------------------------------------------------
        public static bool CanShowTooltip(CultureInfo uiCulture, string key)
        {
            try
            {
                if (uiCulture == null)
                {
                    throw new ArgumentNullException("uiCulture");
                }


                Dictionary <string, LanguageResource> dictionary = null;

                ICache cache = Container.TryGet <ICache>();

                if (cache != null && cache.Exists(LocalizationConstants.LocalizationKey))
                {
                    dictionary = cache.Get <Dictionary <string, LanguageResource> >(LocalizationConstants.LocalizationKey);
                }

                if (dictionary == null)
                {
                    dictionary = GetLanguageDictionary();

                    if (cache != null)
                    {
                        cache.Set(LocalizationConstants.LocalizationKey, dictionary, TimeSpan.FromMinutes(30));
                    }
                }

                string           cultureKey        = GetLanguageCode(uiCulture).ToString("G").ToLowerInvariant() + "[" + key + "]";
                string           defaultcultureKey = LanguageCode.English.ToString("G").ToLowerInvariant() + "[" + key + "]";
                LanguageResource resource          = null;

                if (dictionary.ContainsKey(cultureKey))
                {
                    resource = dictionary[cultureKey];
                }
                else if (dictionary.ContainsKey(defaultcultureKey))
                {
                    resource = dictionary[defaultcultureKey];
                }

                if (resource != null && resource.CanShowTooltip)
                {
                    if (!string.IsNullOrWhiteSpace(resource.TooltipText))
                    {
                        return(true);
                    }
                }

                return(false);
            }
            catch (Exception)
            {
                return(false);
            }
        }
        ///-------------------------------------------------------------------------------------------------
        /// <summary>
        ///     Gets language dictionary.
        /// </summary>
        ///
        /// <returns>
        ///     The language dictionary.
        /// </returns>
        ///-------------------------------------------------------------------------------------------------
        private static Dictionary <string, LanguageResource> GetLanguageDictionary()
        {
            Dictionary <string, LanguageResource> dictionary = new Dictionary <string, LanguageResource>(StringComparer.OrdinalIgnoreCase);
            ILanguageProvider provider = Container.TryGet <ILanguageProvider>();
            IEnumerable <IGrouping <LanguageCode, ILanguageResource> > list = provider.Get(0, int.MaxValue).Distinct().GroupBy(x => x.Code);

            foreach (var langResources in list)
            {
                foreach (var languageResource in langResources)
                {
                    LanguageResource resource = new LanguageResource(languageResource);
                    string           key      = langResources.Key.ToString("G").ToLowerInvariant() + "[" + resource.Key + "]";
                    if (!dictionary.ContainsKey(key))
                    {
                        dictionary.Add(key, resource);
                    }
                }
            }

            return(dictionary);
        }