Public Class SenkyoList
    Inherits System.Web.UI.Page

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If IsPostBack Then
            ' ポストバック時
        Else
            ' 初期表示時
            Page.Header.Title = MyProperty.システムＭ.選挙コード名称

            ' セッションタイムアウトチェック
            If IsNothing(Session(MyConstant.SessionKey.投票者ID)) Then
                Throw New Exception(MyMessage.ログ.セッションタイムアウト)
            End If

            ' 選挙Mを取得する。
            Dim ds As DataSet1 = New DataSet1
            Using myDataBase As MyDataBase = New MyDataBase
                myDataBase.Fill選挙M(ds)
            End Using

            ' 投票数を表示
            lblNumOfVotes.Text = CType(Session(MyConstant.SessionKey.投票数), String) & "票の投票"

            ' 選挙一覧のHTMLタグ動的出力
            Dim tag As StringBuilder = New StringBuilder
            Dim is投票残あり As Boolean = False
            Dim nxtPass As String = ""      ' 次頁アドレス
            Dim flgSkip As Boolean = False  ' 当該画面を飛ばすか否か true:飛ばす false:飛ばさない
            flgSkip = (ds.選挙M.Rows.Count = 1)
            For Each row As DataSet1.選挙MRow In ds.選挙M
                If MyUtility.Is投票済み(row.選挙ID.TrimEnd, Session(MyConstant.SessionKey.投票者ID)) Then
                    If ds.選挙M.Rows.Count <= MyConstant.MAX選挙ボタン数 Then
                        ' 全選挙数が5以下であれば、投票済みも表示する
                        tag.Append("<li class=""voted""><a class=""btn disabled"">" + row.選挙名称 + "</a></li>")
                    End If
                Else
                    is投票残あり = True
                    'tag.Append("<li><a href=""" + GetNextURI(row.一覧表示パターン) + "?" + MyConstant.QueryStringKey.選挙ID + "=" + row.選挙ID.TrimEnd + """ class=""btn"">" + row.選挙名称 + "</a></li>")
                    nxtPass = (GetNextURI(row.一覧表示パターン) + "?" + MyConstant.QueryStringKey.選挙ID + "=" + row.選挙ID.TrimEnd)
                    tag.Append("<li><a href=""" + nxtPass + """ class=""btn"">" + row.選挙名称 + "</a></li>")
                End If
                tag.Append(System.Environment.NewLine)
            Next
            LtlList.Text = tag.ToString()

            If is投票残あり Then
                PnlProgress.Visible = False
                If Not MyProperty.システムＭ.Isインターネット投票型 Then
                    ' 来場型の場合、JavaAppletのタグ生成
                    LtlTimerOn.Text = "<APPLET CODE=""TimerOn.class"" ARCHIVE=""TimerOn.jar"" WIDTH=""0"" HEIGHT=""0"" MAYSCRIPT></APPLET>"
                End If
                If flgSkip Then
                    ' 0秒後に自動で画面遷移。
                    body1.Attributes("onload") = "setTimeout('location.replace(""" + nxtPass + """);', 0);"
                End If
            Else
                ' 全て投票済みの場合
                LblMessage.Text = String.Format(MyProperty.システムＭ.メッセージ.SenkyoList.投票済み, MyConstant.自動画面遷移時間秒)

                ' 3秒後に自動で最初の画面に遷移。
                body1.Attributes("onload") = "setTimeout('location.replace(""Default.aspx"");', " + MyConstant.自動画面遷移時間ミリ秒 + ");"
            End If

            If Not MyProperty.システムＭ.Isインターネット投票型 Then
                ' 来場型の場合、JavaAppletのタグ生成
                'LtlPatlite.Text = "<APPLET CODE=""PatliteY.class"" ARCHIVE=""PatliteY.jar"" WIDTH=""0"" HEIGHT=""0""></APPLET>"
            End If
        End If
    End Sub

    Private Function GetNextURI(ByVal pattern As String) As String
        Dim uri As String
        Select Case pattern
            Case MyEnum.一覧表示パターン.標準型,
                 MyEnum.一覧表示パターン.ポスケ型
                uri = "KohoList.aspx"
            Case MyEnum.一覧表示パターン.政党検索
                uri = "SeitoList.aspx"
            Case MyEnum.一覧表示パターン.名前検索
                uri = "Keypad.aspx"
            Case MyEnum.一覧表示パターン.ルーペ型
                uri = "KohoListLoupe.aspx"
            Case Else
                uri = "KohoList.aspx"
        End Select

        Return uri
    End Function

End Class