private async void Save_Btn_Click(object sender, EventArgs e)
        {
            ProgressIndicator.IsRunning = true;
            SetScreenButtonsEnabled(false);

            //save to isolated storage
            DateTime now       = DateTime.Now;
            string   photoName = String.Format("{0}.jpg", now.Ticks);

            using (IsolatedStorageFile isolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
            {
                if (isolatedStorage.FileExists(photoName))
                {
                    isolatedStorage.DeleteFile(photoName);
                }

                //save photo
                WriteableBitmap photo = new WriteableBitmap((int)App.PhotoModel.Width, (int)App.PhotoModel.Height);
                await App.PhotoModel.RenderBitmapAsync(photo);

                IsolatedStorageFileStream fileStream = isolatedStorage.CreateFile(photoName);
                System.Windows.Media.Imaging.Extensions.SaveJpeg(photo, fileStream, photo.PixelWidth, photo.PixelHeight, 0, Constant.JpegQuality);
                fileStream.Close();

                /*
                 * WriteableBitmap smallThumbnailPhoto = new WriteableBitmap(Constant.ThumbnailSmallSide, Constant.ThumbnailSmallSide);
                 * Bitmap smallThumbnail = await App.ThumbnailModel.RenderThumbnailBitmapAsync(Constant.ThumbnailSmallSide);
                 * using (EditingSession session = new EditingSession(smallThumbnail))
                 * {
                 *  await session.RenderToBitmapAsync(smallThumbnailPhoto.AsBitmap());
                 * }
                 * IsolatedStorageFileStream smallThumbnailStream = isolatedStorage.CreateFile(smallThumbName);
                 * System.Windows.Media.Imaging.Extensions.SaveJpeg(smallThumbnailPhoto, smallThumbnailStream, Constant.ThumbnailSmallSide, Constant.ThumbnailSmallSide, 0, Constant.JpegQuality);
                 * smallThumbnailStream.Close();
                 *
                 * WriteableBitmap largeThumbnailPhoto = new WriteableBitmap(Constant.ThumbnailLargeSide, Constant.ThumbnailLargeSide);
                 * Bitmap largeThumbnail = await App.ThumbnailModel.RenderThumbnailBitmapAsync(Constant.ThumbnailLargeSide);
                 * using (EditingSession session = new EditingSession(largeThumbnail))
                 * {
                 *  await session.RenderToBitmapAsync(largeThumbnailPhoto.AsBitmap());
                 * }
                 * IsolatedStorageFileStream largethumbnailStream = isolatedStorage.CreateFile(largeThumbName);
                 * System.Windows.Media.Imaging.Extensions.SaveJpeg(largeThumbnailPhoto, largethumbnailStream, Constant.ThumbnailLargeSide, Constant.ThumbnailLargeSide, 0, Constant.JpegQuality);
                 * largethumbnailStream.Close();
                 */
            }

            if (_dateIndex == -1)
            {
                _dateIndex = GetNewPhotoIndex();
            }

            Entry entry = new Entry()
            {
                ImgSrc   = photoName,
                Time     = DatePicker.Value == null ? now : (DateTime)DatePicker.Value,
                Date     = App.ViewModelData.AllDates[_dateIndex],
                Note     = (TxtBoxCaption.Text.Trim().Equals(String.Empty) || TxtBoxCaption.Text.Trim().Equals("")) ? AppResources.TextID27 : TxtBoxCaption.Text.Trim(),
                Location = (TxtBoxLocation.Text.Trim().Equals(String.Empty) || TxtBoxLocation.Text.Trim().Equals("")) ? AppResources.TextID28 : TxtBoxLocation.Text.Trim()
            };

            App.ViewModelData.AddEntry(entry, _dateIndex);

            ProgressIndicator.IsRunning = false;

            // clean up
            if (App.PhotoModel != null)
            {
                App.PhotoModel.Dispose();
                App.PhotoModel = null;
                GC.Collect();
            }

            if (App.ThumbnailModel != null)
            {
                App.ThumbnailModel.Dispose();
                App.ThumbnailModel = null;
                GC.Collect();
            }

            OSHelper.RemoveAllBackStackButFirst();
            if (NavigationService.CanGoBack)
            {
                NavigationService.GoBack();
            }
        }