<%@ Page Language="C#" AutoEventWireup="true" CodeFile="GroupingValidators.aspx.cs" Inherits="GroupingValidators"  %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Użycie grup kontroli poprawności</title>
    <style type="text/css">
      body { font-size: 76%; font-family: Verdana, Arial, sans-serif;}
      #panHeader h1 { font-size: 120%;  padding-bottom: 4px; margin-bottom: 1px; border-bottom: 1px solid #999; }
      #panHeader p { margin-top: 1px; }
      #panContent { float: left; width: 68%; background: white; margin-right: 2%; }
      #panSidebar { float: right;  width: 30%; background: beige;  }
      #panSidebar div { padding: 10px; align: left;}
      #panContent p { margin: 6px 0; }
    </style>
</head>
<body>
    <form id="form1" runat="server">
    <div id="wrap">
    
      <asp:Panel ID="panHeader" runat="server">
         <h1>Przykład zastosowania grup kontroli poprawności</h1>
         <p>Na tej stronie zastosowane są dwie osobne grupy kontroli poprawności oraz kontrolki sprawdzające poprawność przedstawione w tym rozdziale.</p>
      </asp:Panel>
      
      <%-- Główny panel recenzji książki --%>
      <asp:Panel ID="panContent" runat="server" GroupingText="Recenzja książki">
         <p>
         <asp:Label ID="labDate" runat="server" Text="Data recenzji" AccessKey="D" AssociatedControlID="txtDate" />
         <br />
         <asp:TextBox ID="txtDate" runat="server"></asp:TextBox>
         <asp:CustomValidator ID="custDate" runat="server" 
            ControlToValidate="txtDate" 
            ValidateEmptyText="true"  
            ValidationGroup="main"
            Text="*"
            ErrorMessage="Proszę podać prawidłową datę z przyszłości" 
            OnServerValidate="custDate_ServerValidate" />   
         </p> 
               
         <p>
         <asp:Label ID="labBook" runat="server" Text="Książka do recenzji" AccessKey="B" AssociatedControlID="lstBooks" />
         <br />
         <asp:DropDownList ID="lstBooks" runat="server" AccessKey="K" >
            <asp:ListItem Value="0" Selected="True">Proszę wybrać książkę</asp:ListItem>
            <asp:ListItem Value="1">Republika</asp:ListItem>
            <asp:ListItem Value="2">Krytyka rozsądku</asp:ListItem>
            <asp:ListItem Value="3">Teoria sprawiedliwości</asp:ListItem>
         </asp:DropDownList>
         <asp:RequiredFieldValidator ID="reqBook" runat="server" 
            ControlToValidate="lstBooks" SetFocusOnError="true"
            ValidationGroup="main"
            Text="*"
            InitialValue="0" 
            ErrorMessage="Proszę wybrać ksiązkę z listy"/>      
         </p>
         
         <p>
         <asp:Label ID="labRating" runat="server" Text="Ocena od 1 do 5" AccessKey="O" AssociatedControlID="txtDate" />
         <br />
         <asp:TextBox ID="txtRating" runat="server" Columns="10" AccessKey="D"/>
         <asp:RangeValidator ID="rangeNum" runat="server" 
            ControlToValidate="txtRating" 
            MinimumValue="1"
            MaximumValue="5"
            Type="Integer"
            ValidationGroup="main"
            Text="Proszę podać liczbę od 1 do 5" />                
         </p>
         
         <p>
         <asp:Label ID="labUser" runat="server" Text="Nazwa użytkownika" AccessKey="U" AssociatedControlID="txtUserName"  />
         <br />
         <asp:TextBox ID="txtUserName" runat="server" Columns="10" AccessKey="U" />
         <asp:RequiredFieldValidator ID="reqUserName" runat="server" 
            ControlToValidate="txtUserName"
            ValidationGroup="main"
            Text="*"
            ErrorMessage="Proszę podać nazwę użytkownika"/>
         <asp:RegularExpressionValidator ID="regName" runat="server" 
            ControlToValidate="txtUserName" 
            ValidationExpression="^[a-zA-Z'.\s]{1,16}"
            Text="Proszę podać prawidłową nazwę użytkownika" />
            
         </p>
                  
         <p>
         <asp:Label ID="labPass1" runat="server" Text="Hasło" AccessKey="H" AssociatedControlID="txtPass1" />
         <br />
         <asp:TextBox ID="txtPass1" runat="server" TextMode="password" Columns="10" AccessKey="H"/>
         <asp:RequiredFieldValidator ID="reqPassword" runat="server" 
            ControlToValidate="txtPass1"  SetFocusOnError="true"
            ValidationGroup="main"
            Text="*"
            Display="static" 
            ErrorMessage="Proszę podać hasło"/>
         <asp:RegularExpressionValidator ID="regPass1" runat="server" 
            ControlToValidate="txtPass1"  
            ValidationExpression="^[a-zA-Z]\w{8,}$"
            ValidationGroup="main"
            Text="*"
            ErrorMessage="Hasło musi mieć co najmniej 8 znaków" />   
         <asp:RegularExpressionValidator ID="regPass2" runat="server" 
            ControlToValidate="txtPass1"  
            ValidationExpression="^[a-zA-Z]+\w*\d+\w*$"
            ValidationGroup="main"
            Text="*"
            ErrorMessage="Hasło musi zaczynać się od litery i zawierać cyfrę" />  
         </p>                    
         <p>
         <asp:Label ID="labPass2" runat="server" Text="Powtórz hasło" AccessKey="P" AssociatedControlID="txtPass2" />
         <br />
         <asp:TextBox ID="txtPass2" runat="server" TextMode="password" Columns="10" AccessKey="P"/>
         <asp:CompareValidator ID="compPass" runat="server" 
            ControlToValidate="txtPass2" 
            Operator="Equal"
            ControlToCompare="txtPass1"
            ValidationGroup="main"
            Text="*"
            ErrorMessage="Hasła muszą być identyczne" /> 
         </p>                 
         
         <p>
         <asp:ValidationSummary id="valSum" runat="server" 	
            ValidationGroup="main" BorderStyle="Dashed" BorderWidth="1" BorderColor="red"
		      DisplayMode="BulletList"
		      HeaderText="Znaleziono następujące błędy:"
		      ShowMessageBox="false" 
		      ShowSummary="true" />
         </p>
         
         <p>
         <asp:Button ID="btnSubmit" runat="server"
            ValidationGroup="main" 
            Text="Wyślij" OnClick="btnSubmit_Click"  />
         </p>
      </asp:Panel>
      
      <%-- Panel paska wyszukiwania --%>
      <asp:Panel ID="panSidebar" runat="server" GroupingText="Search">
         <div>
         <asp:Label ID="labSearch" runat="server" Text="Szukaj" AccessKey="S" AssociatedControlID="txtSearch" />
         <br />
         <asp:TextBox ID="txtSearch" runat="server" Columns="10"/>
         <asp:Button ID="btnSearch" runat="server" 
            Text="Szukaj" 
            ValidationGroup="search" 
            OnClick="btnSearch_Click"/><br />
         <asp:RequiredFieldValidator ID="reqSearch" runat="server" 
            ControlToValidate="txtSearch"
            SetFocusOnError="true"
            ValidationGroup="search"
            Text="Proszę podać ciąg wyszukiwania"
            Display="Dynamic" />

         </div>
      </asp:Panel>

    </div>
    </form>
</body>
</html>
