/// <summary>
        /// Initialises the asset buttons control with the specified asset
        /// </summary>
        public void Initialise(Asset asset)
        {
            m_AssetId = asset.AssetId.GetValueOrDefault();

            // Get the URL to be used for the asset popup
            string showAssetInfoUrl = SiteUtils.GetShowAssetInfoUrl(m_AssetId);

            // Setup info button
            InfoHyperlink.Visible     = ShowButtons.IsSet(Buttons.Info);
            InfoHyperlink.NavigateUrl = showAssetInfoUrl;
            InfoHyperlink.ImageUrl    = SiteUtils.GetIconPath("info0.gif");

            // Setup download button
            DownloadHyperLink.Visible     = DisplayDownloadHyperlink(asset);
            DownloadHyperLink.NavigateUrl = AssetFileUrlHelper.GetDownloadUrl(m_AssetId);
            DownloadHyperLink.ImageUrl    = SiteUtils.GetIconPath("download0.gif");

            // Setup lightbox button
            AddToLightboxImageButton.Visible         = (ShowButtons.IsSet(Buttons.Lightbox));
            AddToLightboxImageButton.CommandArgument = m_AssetId.ToString();
            InitialiseLightboxButton(m_AssetId);

            // Setup cart button
            AddToCartImageButton.Visible         = (ShowButtons.IsSet(Buttons.Cart));
            AddToCartImageButton.CommandArgument = m_AssetId.ToString();
            InitialiseCartButton(m_AssetId);

            // Setup restricted icon
            RestrictedImageIcon.Visible  = (EntitySecurityManager.IsAssetRestricted(CurrentUser, asset) && ShowButtons.IsSet(Buttons.Restricted));
            RestrictedImageIcon.ImageUrl = SiteUtils.GetIconPath("restricted0.gif");
        }
        private bool DisplayDownloadHyperlink(Asset asset)
        {
            if (ShowButtons.IsSet(Buttons.Download))
            {
                // Only display download link for users who can download the asset
                // when the direct download feature is enabled.
                if (WebsiteBrandManager.GetBrand().DirectDownloadEnabled)
                {
                    return(!EntitySecurityManager.IsAssetRestricted(CurrentUser, asset));
                }

                // Super-admins can always download assets
                if (CurrentUser.UserRole.Equals(UserRole.SuperAdministrator))
                {
                    return(true);
                }

                // Upload users can always download their own assets
                if (asset.UploadedByUserId.Equals(CurrentUser.UserId))
                {
                    return(true);
                }
            }

            return(false);
        }
        void _vm_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
        {
            if (e.PropertyName == "SelectedSearch")
            {
                if (_vm.SelectedSearch == null)
                {
                    //Show all search history
                    if (SearchHistoryListBox.Visibility == System.Windows.Visibility.Collapsed &&
                        !_vm.InitNewSearch)
                    {
                        ShowStep0List.Begin();
                    }

                    if (Step1InfoPanel.Visibility == System.Windows.Visibility.Visible)
                    {
                        HideStep1Header.Begin();


                        (ApplicationBar.Buttons[VertrektijdenIndex] as ApplicationBarIconButton).IsEnabled = false;
                        (ApplicationBar.Buttons[PrijsIndex] as ApplicationBarIconButton).IsEnabled         = false;
                        // (ApplicationBar.Buttons[3] as ApplicationBarIconButton).IsEnabled = false;
                        (ApplicationBar.MenuItems[0] as ApplicationBarMenuItem).IsEnabled = false;
                        (ApplicationBar.MenuItems[ReisAdviesRepeatMenuIndex] as ApplicationBarMenuItem).IsEnabled = false;
                        (ApplicationBar.MenuItems[AddCalendarMenuIndex] as ApplicationBarMenuItem).IsEnabled      = false;
                        (ApplicationBar.MenuItems[EmailMenuIndex] as ApplicationBarMenuItem).IsEnabled            = false;
                        (ApplicationBar.MenuItems[DeleteHistoryMenuIndex] as ApplicationBarMenuItem).IsEnabled    = true;
                        (ApplicationBar.MenuItems[NfcIndex] as ApplicationBarMenuItem).IsEnabled = false;
                    }

                    if (MogelijkhedenPanel.Visibility == System.Windows.Visibility.Visible)
                    {
                        HideStep1List.Begin();
                    }
                }
                else
                {
                    //if (SearchHistoryListBox.Visibility == System.Windows.Visibility.Visible)
                    HideStep0List.Begin();


                    if (Step1InfoPanel.Visibility == System.Windows.Visibility.Collapsed)
                    {
                        ShowStep1Header.Begin();

                        if (_vm.SelectedSearch.VanStation.Country == "NL")
                        {
                            (ApplicationBar.Buttons[VertrektijdenIndex] as ApplicationBarIconButton).IsEnabled = true;
                        }
                        else
                        {
                            (ApplicationBar.Buttons[VertrektijdenIndex] as ApplicationBarIconButton).IsEnabled = false;
                        }


                        (ApplicationBar.Buttons[PrijsIndex] as ApplicationBarIconButton).IsEnabled = true;
                        //(ApplicationBar.Buttons[3] as ApplicationBarIconButton).IsEnabled = true;
                        (ApplicationBar.MenuItems[0] as ApplicationBarMenuItem).IsEnabled = true;
                        (ApplicationBar.MenuItems[ReisAdviesRepeatMenuIndex] as ApplicationBarMenuItem).IsEnabled = true;
                        (ApplicationBar.MenuItems[NfcIndex] as ApplicationBarMenuItem).IsEnabled = true;
                        (ApplicationBar.MenuItems[DeleteHistoryMenuIndex] as ApplicationBarMenuItem).IsEnabled = false;
                    }
                }
            }
            else if (e.PropertyName == "SelectedReisMogelijkheid")
            {
                if (_vm.SelectedReisMogelijkheid == null)
                {
                    VertragingPanel.Visibility = System.Windows.Visibility.Collapsed;

                    if (Step2InfoPanel.Visibility == System.Windows.Visibility.Visible)
                    {
                        HideStep2Header.Begin();
                        HideButtons.Begin();
                        HideFinalList.Begin();
                    }

                    //Show all mogelijkheden
                    if (_vm.SelectedSearch != null)
                    {
                        if (MogelijkhedenPanel.Visibility == System.Windows.Visibility.Collapsed)
                        {
                            ShowStep1List.Begin();
                        }
                    }
                    else
                    {
                        if (MogelijkhedenPanel.Visibility == System.Windows.Visibility.Visible)
                        {
                            HideStep1List.Begin();
                        }
                    }

                    (ApplicationBar.MenuItems[AddCalendarMenuIndex] as ApplicationBarMenuItem).IsEnabled = false; //Reminder
                    (ApplicationBar.MenuItems[EmailMenuIndex] as ApplicationBarMenuItem).IsEnabled       = false; //Share
                }
                else
                {
                    if (MogelijkhedenPanel.Visibility == System.Windows.Visibility.Visible)
                    {
                        HideStep1List.Begin();
                    }

                    if (Step2InfoPanel.Visibility == System.Windows.Visibility.Collapsed)
                    {
                        ShowStep2Header.Begin();
                        ShowButtons.Begin();
                        ShowFinalList.Begin();
                    }

                    (ApplicationBar.MenuItems[AddCalendarMenuIndex] as ApplicationBarMenuItem).IsEnabled = true; //Reminder
                    (ApplicationBar.MenuItems[EmailMenuIndex] as ApplicationBarMenuItem).IsEnabled       = true; //Reminder

                    if (!string.IsNullOrEmpty(_vm.SelectedReisMogelijkheid.Melding))
                    {
                        VertragingPanel.Visibility = System.Windows.Visibility.Visible;
                        VertragingTextBlock.Text   = _vm.SelectedReisMogelijkheid.Melding;
                    }
                    else if (!string.IsNullOrEmpty(_vm.SelectedReisMogelijkheid.VertrekVertraging) ||
                             !string.IsNullOrEmpty(_vm.SelectedReisMogelijkheid.AankomstVertraging))
                    {
                        VertragingPanel.Visibility = System.Windows.Visibility.Visible;

                        if (!string.IsNullOrEmpty(_vm.SelectedReisMogelijkheid.VertrekVertraging) &&
                            !string.IsNullOrEmpty(_vm.SelectedReisMogelijkheid.AankomstVertraging))
                        {
                            //Allebei
                            VertragingTextBlock.Text = AppResources.ReisadviesVertraging;
                        }
                        else if (!string.IsNullOrEmpty(_vm.SelectedReisMogelijkheid.VertrekVertraging))
                        {
                            //Vertrek
                            VertragingTextBlock.Text = AppResources.ReisadviesVertragingVertrek;
                        }
                        else if (!string.IsNullOrEmpty(_vm.SelectedReisMogelijkheid.AankomstVertraging))
                        {
                            //Aankomst
                            VertragingTextBlock.Text = AppResources.ReisadviesVertragingAankomst;
                        }
                    }
                    else
                    {
                        VertragingPanel.Visibility = System.Windows.Visibility.Collapsed;
                    }
                }

                if (_vm.CanPin())
                {
                    //vastpinnen
                    (ApplicationBar.Buttons[PinIndex] as ApplicationBarIconButton).IsEnabled = true;
                }
                else
                {
                    //vastpinnen
                    (ApplicationBar.Buttons[PinIndex] as ApplicationBarIconButton).IsEnabled = false;
                }
            }
            else if (e.PropertyName == "SearchHistory")
            {
                if (_vm.SearchHistory == null || _vm.SearchHistory.Count == 0)
                {
                    GeenHistoryPanel.Visibility = System.Windows.Visibility.Visible;
                }
                else
                {
                    GeenHistoryPanel.Visibility = System.Windows.Visibility.Collapsed;
                }
            }
        }