public static Pupil getSelectedPupil(Document doc) throws ParseException {

    boolean found = false;
    Pupil p, selectedP = null;

    Elements pupilSelectors =
        doc.getElementsByAttributeValue("id", "ctl00_topMenu_pupil_drdPupils");
    for (Element pupilSelector : pupilSelectors) {

      Elements pupils = pupilSelector.getAllElements();
      for (Element pupil : pupils) {
        if (pupil.tagName().equals("option")) {

          String value = pupil.attr("value");

          found = true;
          if ((p = Pupil.getByFormId(value)) == null) {

            p = new Pupil(pupil.text(), value);
            long rowId = p.insert();

            if (BuildConfig.DEBUG)
              Log.d("GshisHTMLParser", TS.get() + " Pupil.insert() = " + rowId);
          }

          if (pupil.hasAttr("selected") && pupil.attr("selected").equals("selected")) {

            selectedP = p;
          }
        }
      }
    }

    if (!found) {

      if (BuildConfig.DEBUG) Log.d("GshisParser", TS.get() + " Alternative fields found!");

      Element userName = doc.getElementsByClass("user-name").first();
      Element userId = doc.getElementsByAttributeValue("id", "ctl00_topMenu_tbUserId").first();

      String name = userName.text();
      String id = userId.attr("value");

      if (BuildConfig.DEBUG) Log.d("GshisParser", TS.get() + " name=" + name + " id=" + id);

      if ((p = Pupil.getByFormId(id)) == null) {

        p = new Pupil(name, id);
        long rowId = p.insert();

        if (BuildConfig.DEBUG) Log.d("GshisParser", TS.get() + " Pupil.insert() = " + rowId);
      }

      selectedP = p;
    }

    if (selectedP == null) throw new ParseException("Pupils not found", 0);

    return selectedP;
  }
  public static Schedule getSelectedSchedule(Document doc, Pupil selPupil) throws ParseException {

    boolean found = false;
    Schedule selectedS = null;

    Elements yearSelectors = doc.getElementsByAttributeValue("id", "ctl00_learnYear_drdLearnYears");
    for (Element yearSelector : yearSelectors) {

      Elements years = yearSelector.getAllElements();
      for (Element year : years) {
        if (year.tagName().equals("option")) {

          String value = year.attr("value");
          Schedule schedule;

          found = true;

          if ((schedule = selPupil.getScheduleByFormId(value)) == null) {

            final SimpleDateFormat f = new SimpleDateFormat("yyyy dd.MM", Locale.ENGLISH);
            f.setTimeZone(TimeZone.getTimeZone("Europe/Moscow"));
            schedule = new Schedule(value, year.text());

            Date start = f.parse(year.text().substring(0, year.text().indexOf("-") - 1) + " 01.09");
            Date stop =
                f.parse(
                    year.text().substring(year.text().indexOf("-") + 2, year.text().length())
                        + " 31.05");

            schedule.setStart(start);
            schedule.setStop(stop);

            selPupil.addSchedule(schedule);
          }

          if (year.hasAttr("selected") && year.attr("selected").equals("selected")) {

            selectedS = schedule;
          }
        }
      }
    }

    if (!found) throw new ParseException("Years not found", 0);

    return selectedS;
  }
    public void onDateSet(DatePicker view, int year, int month, int day) {
      // Do something with the date chosen by the user
      Calendar c = Calendar.getInstance();
      c.set(Calendar.YEAR, year);
      c.set(Calendar.MONTH, month);
      c.set(Calendar.DAY_OF_MONTH, day);

      Date weekStart = Week.getWeekStart(c.getTime());
      instance.mGshisLoader.setCurrWeekStart(weekStart);

      Pupil p = Pupil.getByFormName(instance.mGshisLoader.getLogin(), instance.getPupilName());
      if (p != null) {

        Schedule s = p.getScheduleByDate(weekStart);

        for (int index = 0; index < 4; index++) {

          GradeSemester sem = s.getSemesterByNumber(index);

          if (sem != null
              && sem.getStart().getTime() <= weekStart.getTime()
              && sem.getStop().getTime() >= weekStart.getTime()) {

            instance.mViewPager.setCurrentItem(index, true);
            break;
          }
        }
      }

      // this picker should not load again
      instance
          .getHandler()
          .postDelayed(
              new Runnable() {
                public void run() {

                  instance.recreate();
                }
              },
              1);
    }