private void DisplayFeed(int day, SampleDataItem item, FlipViewItem selectedFlipViewItem)
 {
     TextBlock t;
     PanchangData pdata = item.GetPanchangData(_currentMonth, day);
     t = (TextBlock)FindNamedElement(selectedFlipViewItem, "SunriseTextBlock");
     t.Text = pdata._fieldValues[(int)FieldType.Sunrise];
     t = (TextBlock)FindNamedElement(selectedFlipViewItem, "SunsetTextBlock");
     t.Text = pdata._fieldValues[(int)FieldType.Sunset];
     t = (TextBlock)FindNamedElement(selectedFlipViewItem, "MoonRiseTextBlock");
     t.Text = pdata._fieldValues[(int)FieldType.Moonrise];
     t = (TextBlock)FindNamedElement(selectedFlipViewItem, "TamilYearTextBlock");
     t.Text = pdata._fieldValues[(int)FieldType.TamilYear];
     t = (TextBlock)FindNamedElement(selectedFlipViewItem, "NorthYearTextBlock");
     t.Text = pdata._fieldValues[(int)FieldType.NorthYear];
     t = (TextBlock)FindNamedElement(selectedFlipViewItem, "GujaratYearTextBlock");
     t.Text = pdata._fieldValues[(int)FieldType.GujaratYear];
     t = (TextBlock)FindNamedElement(selectedFlipViewItem, "AyanaTextBlock");
     t.Text = pdata._fieldValues[(int)FieldType.Ayana];
     t = (TextBlock)FindNamedElement(selectedFlipViewItem, "RituTextBlock");
     t.Text = pdata._fieldValues[(int)FieldType.Ritu];
     t = (TextBlock)FindNamedElement(selectedFlipViewItem, "VedicRituTextBlock");
     t.Text = pdata._fieldValues[(int)FieldType.VedicRitu];
     t = (TextBlock)FindNamedElement(selectedFlipViewItem, "TamilMonthTextBlock");
     t.Text = pdata._fieldValues[(int)FieldType.TamilMonth];
     t = (TextBlock)FindNamedElement(selectedFlipViewItem, "SanskritMonthTextBlock");
     t.Text = pdata._fieldValues[(int)FieldType.SanskritMonth];
     t = (TextBlock)FindNamedElement(selectedFlipViewItem, "PakshaTextBlock");
     t.Text = pdata._fieldValues[(int)FieldType.Paksha];
     t = (TextBlock)FindNamedElement(selectedFlipViewItem, "TithiTextBlock");
     t.Text = pdata._fieldValues[(int)FieldType.Tithi];
     t = (TextBlock)FindNamedElement(selectedFlipViewItem, "NakshatraTextBlock");
     t.Text = pdata._fieldValues[(int)FieldType.Nakshatra];
     t = (TextBlock)FindNamedElement(selectedFlipViewItem, "YogaTextBlock");
     t.Text = pdata._fieldValues[(int)FieldType.Yoga];
     t = (TextBlock)FindNamedElement(selectedFlipViewItem, "KaranaTextBlock");
     t.Text = pdata._fieldValues[(int)FieldType.Karana];
     t = (TextBlock)FindNamedElement(selectedFlipViewItem, "SunRasiTextBlock");
     t.Text = pdata._fieldValues[(int)FieldType.SunRasi];
     t = (TextBlock)FindNamedElement(selectedFlipViewItem, "MoonRasiTextBlock");
     t.Text = pdata._fieldValues[(int)FieldType.MoonRasi];
     t = (TextBlock)FindNamedElement(selectedFlipViewItem, "RahuKalamTextBlock");
     t.Text = pdata._fieldValues[(int)FieldType.RahuKalam];
     t = (TextBlock)FindNamedElement(selectedFlipViewItem, "YamaKandamTextBlock");
     t.Text = pdata._fieldValues[(int)FieldType.YamaGandam];
     t = (TextBlock)FindNamedElement(selectedFlipViewItem, "GulikaiTextBlock");
     t.Text = pdata._fieldValues[(int)FieldType.Gulikai];
     t = (TextBlock)FindNamedElement(selectedFlipViewItem, "FestivalTextBlock");
     String festival = pdata._fieldValues[(int)FieldType.Festival];
     if (String.IsNullOrEmpty(festival))
     {
         festival = "No festival";
     }
     t.Text = festival;
 }
        // Update tile for today
        private void UpdateTile( SampleDataItem item, DateTime dueTime, DateTime expiryTime)
        {
            DateTime date = dueTime;
            int month = date.Month;
            int day = date.Day;
            String festival;
            var notifier = TileUpdateManager.CreateTileUpdaterForApplication();

            Debug.WriteLine("Update tile {0} {1}", dueTime, expiryTime);
            festival = item.GetFestival(month, day);
            PanchangData pdata = item.GetPanchangData(month, day);
            // create the wide template
            ITileWideText01 tileContent = TileContentFactory.CreateTileWideText01();
            tileContent.TextHeading.Text = date.ToString("d");
            tileContent.TextBody1.Text = pdata._fieldValues[(int)FieldType.SanskritMonth];
            tileContent.TextBody2.Text = pdata._fieldValues[(int)FieldType.TamilMonth];
            tileContent.TextBody3.Text = festival;

            // create the square template and attach it to the wide template
            ITileSquareText01 squareContent = TileContentFactory.CreateTileSquareText01();
            squareContent.TextHeading.Text = date.ToString("d");
            squareContent.TextBody1.Text = pdata._fieldValues[(int)FieldType.SanskritMonth];
            squareContent.TextBody2.Text = pdata._fieldValues[(int)FieldType.TamilMonth];
            squareContent.TextBody3.Text = festival;
            tileContent.SquareContent = squareContent;

            // send the notification
            ScheduledTileNotification futureTile = new ScheduledTileNotification(tileContent.GetXml(), dueTime);
            futureTile.ExpirationTime = expiryTime;
            notifier.AddToSchedule(futureTile);


            // Send another notification. this gives a nice animation in mogo
            tileContent.TextBody1.Text = pdata._fieldValues[(int)FieldType.Paksha];
            tileContent.TextBody2.Text = pdata._fieldValues[(int)FieldType.Tithi];
            tileContent.TextBody3.Text = pdata._fieldValues[(int)FieldType.Nakshatra];
            futureTile = new ScheduledTileNotification(tileContent.GetXml(), dueTime);
            futureTile.ExpirationTime = expiryTime;
            notifier.AddToSchedule(futureTile);
            Debug.WriteLine("Count of scheduled notifications {0}", notifier.GetScheduledTileNotifications().Count);
        }
 public void ShowDetail(int currentMonth, int day, SampleDataItem item)
 {
     PanchangData pdata = item.GetPanchangData(currentMonth, day);
     DateTime dateTime = new DateTime(item.Year, currentMonth, day);
     DateTextBlock.Text = dateTime.ToString("d");
     SunriseTextBlock.Text= pdata._fieldValues[(int)FieldType.Sunrise];
     SunsetTextBlock.Text = pdata._fieldValues[(int)FieldType.Sunset];
     MoonRiseTextBlock.Text = pdata._fieldValues[(int)FieldType.Moonrise];
     TamilYearTextBlock.Text = (pdata._fieldValues[(int)FieldType.TamilYear] == null) ? "None" : pdata._fieldValues[(int)FieldType.TamilYear];
     NorthYearTextBlock.Text = pdata._fieldValues[(int)FieldType.NorthYear];
     GujaratYearTextBlock.Text = pdata._fieldValues[(int)FieldType.GujaratYear];
     AyanaTextBlock.Text = pdata._fieldValues[(int)FieldType.Ayana];
     RituTextBlock.Text = pdata._fieldValues[(int)FieldType.Ritu];
     VedicRituTextBlock.Text = pdata._fieldValues[(int)FieldType.VedicRitu];
     TamilMonthTextBlock.Text = pdata._fieldValues[(int)FieldType.TamilMonth];
     // there is a whitespace in front of this string
     SanskritMonthTextBlock.Text = (pdata._fieldValues[(int)FieldType.SanskritMonth]).Trim();
     PakshaTextBlock.Text = (pdata._fieldValues[(int)FieldType.Paksha]).Trim();
     TithiTextBlock.Text = pdata._fieldValues[(int)FieldType.Tithi];
     NakshatraTextBlock.Text = pdata._fieldValues[(int)FieldType.Nakshatra];
     YogaTextBlock.Text = pdata._fieldValues[(int)FieldType.Yoga];
     KaranaTextBlock.Text = pdata._fieldValues[(int)FieldType.Karana];
     SunRasiTextBlock.Text = pdata._fieldValues[(int)FieldType.SunRasi];
     MoonRasiTextBlock.Text = pdata._fieldValues[(int)FieldType.MoonRasi];
     RahuKalamTextBlock.Text = pdata._fieldValues[(int)FieldType.RahuKalam];
     YamaKandamTextBlock.Text = pdata._fieldValues[(int)FieldType.YamaGandam];
     GulikaiTextBlock.Text = pdata._fieldValues[(int)FieldType.Gulikai];
     String festival = item.GetFestival(currentMonth, day);
     if (String.IsNullOrEmpty(festival))
     {
         festival = "No data";
     }
     FestivalTextBlock.Text = festival;
     PersonalEventListScroller.Visibility = Visibility.Collapsed;
     Separator.BorderThickness = new Thickness(0, 0, 0, 0);
     PersonalEventList.Items.Clear();
     if (_privateEvents != null)
     {
         List<PrivateEvent> privateEventList = _privateEvents.GetEventsForDate(dateTime);
         foreach (PrivateEvent evt in privateEventList)
         {
             AddPrivateEvent(dateTime, evt._eventText, false, evt);
         }
     }
 }
        private void BuildCalendar(Grid monthView, int month, SampleDataItem item) 
        {
            int row, col;
            DateItem[,] dateItems;

            if (monthView.Tag == null)
            {
                dateItems = new DateItem[numRows, numCols];

                for (row = 0; row < numRows; row++)
                {
                    for (col = 0; col < numCols; col++)
                    {
                        DateItem dateItem = new DateItem();
                        dateItem.SetValue(Grid.RowProperty, row);
                        dateItem.SetValue(Grid.ColumnProperty, col);
                        monthView.Children.Add(dateItem);
                        dateItems[row, col] = dateItem;
                        if (row == 0)
                        {
                            DayOfWeek day = (DayOfWeek)col;
                            dateItem.SetDay(_dayStrings[(int)day]);
                        }
                        else
                        {
                            dateItem.SetDay(" ");
                            dateItem.PointerReleased += dateItem_PointerReleased;
                        }
                    }
                }
                monthView.Tag = dateItems;
            }

            // collapse them all to be opened later
            dateItems = (DateItem[,])monthView.Tag;
            for (row = 1; row < numRows; row++)
            {
                for (col = 0; col < numCols; col++)
                {
                    dateItems[row, col].Visibility = Visibility.Collapsed;
                }
            }

            String previousTamilMonth, tamilMonth;
            String previousSanskritMonth, sanskritMonth;
            String previousPaksha, paksha;
            bool fullMoonDayFound = false;
            bool newMoonDayFound = false;
            DateItem currentDateItem = null;

            row = 1;
            previousTamilMonth = null;
            previousSanskritMonth = null;

            previousPaksha = "";
            tamilMonthTitle.Text = "";
            sanskritMonthTitle.Text = "";
            for (int day = 1; day <= 31 ; day++)
            {
                DateTime dateTime;
                try
                {
                    dateTime = new DateTime(item.Year, month, day);
                    col = (int)dateTime.DayOfWeek;
                    
                    String festival, nakshatra;
                    bool isNewMoonDay, isFullMoonDay;
                    bool highlight;

                    item.GetDateData(month, day, out isNewMoonDay, out isFullMoonDay, out festival, out paksha, out nakshatra, out tamilMonth);
                    PanchangData pdata = item.GetPanchangData(month, day);
                    sanskritMonth = pdata._fieldValues[(int)FieldType.SanskritMonth];

                    if (isNewMoonDay)
                    {
                        newMoonDayFound = true;
                    }

                    if (isFullMoonDay)
                    {
                        fullMoonDayFound = true;
                    }

                    // Sometimes the tithi changes in the middle of the day and is not captured. Lets fix it here
                    if ((previousPaksha.Contains("Shukla") == true) && (paksha.Contains("Krishna") == true) && (fullMoonDayFound == false))
                    {
                        // Set the previous item to full moon day
                        currentDateItem.SetDay(currentDateItem.GetDay(), false, true, null, null, "KeepExisting");
                    }

                    // Sometimes the tithi changes in the middle of the day and is not captured. Lets fix it here
                    if ((previousPaksha.Contains("Krishna") == true) && (paksha.Contains("Shukla") == true) && (newMoonDayFound == false))
                    {
                        // Set the previous item to new moon day
                        currentDateItem.SetDay(currentDateItem.GetDay(), true, false, null, null, "KeepExisting");
                    }

                    previousPaksha = paksha;

                    currentDateItem = dateItems[row, col];
                    PrivateEvent evt = null;
                    if (_privateEvents != null)
                    {
                        evt = _privateEvents.GetFirstEventForDate(dateTime);
                    }

                    if (evt != null)
                    {
                        currentDateItem.SetDay(day,
                            isNewMoonDay, isFullMoonDay, evt._eventText, null, nakshatra);
                    }
                    else
                    {
                        currentDateItem.SetDay(day,
                            isNewMoonDay, isFullMoonDay, festival, null, nakshatra);
                    }
                        
                    currentDateItem.Visibility = Visibility.Visible;
                    if (String.Equals(previousTamilMonth, tamilMonth, StringComparison.OrdinalIgnoreCase) == false)
                    {
                        tamilMonthTitle.Text += (previousTamilMonth == null) ? tamilMonth : ("-" + tamilMonth);
                        previousTamilMonth = tamilMonth;
                    }

                    if (String.Equals(previousSanskritMonth, sanskritMonth, StringComparison.OrdinalIgnoreCase) == false)
                    {
                        sanskritMonthTitle.Text += ((previousSanskritMonth == null) ? sanskritMonth : ("-" + sanskritMonth.Trim()));
                        previousSanskritMonth = sanskritMonth;
                    }

                    highlight = false;
                    // If its the curent month then highlight the current day
                    if (month == DateTime.Today.Month) 
                    {
                        if (day == DateTime.Today.Day)
                        {
                            // Highlight today
                            highlight = true;
                        }
                    }
                    else if (day == 1)
                    {
                        // Highlight the first day of some other month
                            highlight = true;
                    }

                    if (highlight)
                    { 
                        currentDateItem.HighlightBorder(true);
                        ShowDetail(month, day, item);
                        _currentHighlightedDateItem = currentDateItem;
                    }

                    if (col == (numCols-1))
                    {
                        row++;
                        if (row == numRows)
                        {
                            row = 1; // Reset it back to the first row. Provides a foldable calender
                        }
                    }
                }
                catch (ArgumentOutOfRangeException)
                {
                }
            }
        }