/// <summary>
        /// Initializes a new instance of the DomainDetailsViewModel class.
        /// </summary>
        public DomainDetailsViewModel()
        {
            if (IsInDesignMode)
            {
                // Code runs in Blend --> create design time data.
                SelectedDomain = new Result()
                {
                    Availability = "available",
                    Subdomain = "ferr.et",
                    Domain = "ferr.et",
                    Path = "/land",
                    RegisterUrl= "http://register.com"
                };

                SelectedDomainInfo = new DomainrInfo
                {
                    Domain = "ferr.et",
                    WhoisUrl = "https://domainr.com/ferr.et/whois",
                    Tld = new Tld
                    {
                        Domain = "et",
                        WikipediaUrl = "http://wikipedia.org/wiki/.et",
                        IanaUrl = "http://www.iana.org/domains/root/db/et.html"
                    },
                    Availability = Constants.AvailabilityAvailable
                };
                List<Registrar> registrars = new List<Registrar>();
                registrars.Add(new Registrar
                {
                    RegistrarDomain = "101domain.com",
                    Name = "101domain.com",
                    RegisterUrl = "https://domainr.com/liveside.net/register/101domain.com"
                });
                registrars.Add(new Registrar
                {
                    RegistrarDomain = "dotster.com",
                    Name = "Dotster",
                    RegisterUrl = "https://domainr.com/liveside.net/register/dotster.com"
                });
                SelectedDomainInfo.Registrars = registrars;
            }
            else
            {
                // Code runs "for real": Connect to service, etc...
                domainr = new DomainrSharpService(Constants.DomainrAppId);

                WireMessages();
                WireCommands();
            }
        }
        private void WireCommands()
        {
            PageLoadedCommand = new RelayCommand(() =>
            {
                if (!isLoaded)
                {
                    if (App.IsNetworkAvailable)
                    {
                        IsVisible = true;
                        ProgressText = "Filling in the gaps...";
                        domainr.InfoDownloadCompleted += (s, e) =>
                        {
                            if (e.Error == null)
                            {
                                if (e.Result != null)
                                {
                                    SelectedDomainInfo = e.Result;
                                    isLoaded = true;
                                }
                            }
                            else
                            {
                                App.ShowMessage("Error", e.Error.Message);
                            }
                            IsVisible = false;
                        };
                        domainr.InfoDownloadAsync(SelectedDomain.Domain);
                    }
                }
            });

            NavigateToRegistrar = new RelayCommand<Registrar>(reg =>
            {
                // For analytical purposes, selected domain and chose registrar are logged
                // This gives an indication on how useful users find domainr
                List<FlurryWP7SDK.Models.Parameter> args = new List<FlurryWP7SDK.Models.Parameter>();
                args.Add(new FlurryWP7SDK.Models.Parameter("Domain", SelectedDomain.Domain));
                args.Add(new FlurryWP7SDK.Models.Parameter("Registrar", reg.Name));
                args.Add(new FlurryWP7SDK.Models.Parameter("RegistrarDomain", reg.RegistrarDomain));

                FlurryWP7SDK.Api.LogEvent("RegistrarTapped", args);
                NavigateTo(reg.RegisterUrl);
            });

            NavigateToExternal = new RelayCommand<string>(NavigateTo);
        }