　<%@ Page Language="VB" MasterPageFile="~/Portal.master" AutoEventWireup="false" CodeFile="QANew.aspx.vb" Inherits="student_QANew" %>


<%-- [Webフォーム]head Start --%>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">   
</asp:Content>
<%-- [Webフォーム]head End --%>

<%-- [Webフォーム]body Start --%>
<asp:Content ID="Content2" ContentPlaceHolderID="msp_asp_cph1" runat="server">
    <script type="text/javascript">
        
        $(document).ready(function () {
            
            setButtonProp();
                        
            $("#txt_問い合わせ内容").keyup(function () {
                setButtonProp();
            });
            
        });

        function setButtonProp() {            
            if ($("#txt_問い合わせ内容")[0]) {  /*2018.05.14 ADD テキストボックスが存在する場合*/

                var txtValueLength = $("#txt_問い合わせ内容").val().replace(/[\n\s　]/g, "").length;

                if (txtValueLength > 0) {
                    $("#btn_入力確認").prop('disabled', false);
                    $("#btn_入力確認").removeClass("buttonBig FontColorBlack");
                    $("#btn_入力確認").addClass("buttonBig buttonBig-purple");
                } else {
                    $("#btn_入力確認").prop('disabled', true);
                    $("#btn_入力確認").removeClass("buttonBig buttonBig-purple");
                    $("#btn_入力確認").addClass("buttonBig FontColorBlack");
                }
            }            
        }

        // サーバー側から設定された最大ファイルサイズを取得
        const maxSize = <%= ConfigSettings.MaxFileSize %>;
        const maxSizeInMB = <%= ConfigSettings.MaxFileSizeInMB %>;

        function validateFileSize(input) {
            const file = input.files[0];
            if (file.size > maxSize) {
                alert("ファイルサイズが大きすぎます。" + maxSizeInMB + "MB以下のファイルを選択してください。");
                input.value = "";
                return false;
            }
            //禁止文字チェック 20250714 S.Iguchi
            var prohibitedChars = getProhibitedCharactersFromCSV();
            var prohibitedCheck = checkProhibitedCharacters(file.name, prohibitedChars);
            if (!prohibitedCheck.isValid) {
                alert("ファイル名に「" + prohibitedCheck.message + "」は使用できません。\n別の文字を使用してください。");
                input.value = "";
                return false;
            }

            handleFileSelect(input)
            return true;
        }
        function triggerFileUpload() {
            document.getElementById('<%= fu_問合せ資料.ClientID %>').click();
        }


        function handleFileSelect(input) {

            var fileLabel = document.getElementById('<%= lbl_添付ファイル.ClientID %>');
            if (input.files && input.files[0]) {
                fileLabel.innerText = input.files[0].name;
            } else {
                fileLabel.innerText = "選択されていません";
            }
            document.getElementById('<%= btnUpload.ClientID %>').click();
        }
        //禁止文字配列を取得 20250714 S.Iguchi
        function getProhibitedCharactersFromCSV() {
            var hiddenField = document.querySelector('[id*="hf_禁止文字リスト"]');
            if (hiddenField && hiddenField.value) {
                var csvString = hiddenField.value;
                if (csvString.length > 0) {
                    return csvString.split(',').map(function (char) {
                        return unescapeSpecialChar(char.trim());
                    });
                }
            }

            // デフォルト禁止文字(ファイル名で使えない)
            return ['<', '>', ':', '"', '|', '?', '*', '\\', '/', '&', '%'];
        }
        function unescapeSpecialChar(char) {
            switch (char) {
                case '&lt;': return '<';
                case '&gt;': return '>';
                case '&quot;': return '"';
                case '&amp;': return '&';
                default: return char;
            }
        }
        function checkProhibitedCharacters(fileName, prohibitedChars) {
            if (!prohibitedChars || prohibitedChars.length === 0) {
                return { isValid: true, message: '' };
            }
            for (var i = 0; i < prohibitedChars.length; i++) {
                if (fileName.indexOf(prohibitedChars[i]) !== -1) {
                    return {
                        isValid: false,
                        message: prohibitedChars[i]
                    };
                }
            }
            return { isValid: true, message: '' };
        }

    </script>

    <%-- SqlDataSource Start --%>
    <%-- SqlDataSource End --%>
    <div style="width:1220px;">
        <uc:TitleBar_big ID="uc_TitleBar_big" Mode="point" Text="メール送信" runat="server" />
    </div>
    <div style="width:650px;">
        <asp:Button ID="btn_履歴" runat="server" Text="お問合せ一覧に戻る"
                            CssClass="buttonBig buttonBig-blue" Width="140px" Height="25px"  />
        
        <div class="vertical_space"></div>
        
        <asp:Label ID="lbl_error" runat="server" Text="" ForeColor="red"></asp:Label>
         <%-- 研修情報 Start 非表示--%>
            <uc:TrainingInfo ID="uc_TrainingInfo" runat="server" Horizontal="true" Visible="false"/>
         <%-- 研修情報 End --%>
        <table class="sheet header-color5" style="width:100%" rules="all">
            <colgroup>
                <col style="width:20%;"/>
                <col style="width:80%;"/>                
            </colgroup>
            <tr>
                <td class="header center middle">
                    <asp:Label ID="Label1" runat="server" Text="研修"></asp:Label>
                </td>
                <td style="padding-left:10px; padding-bottom:5px;padding-top:5px;">
                    <asp:Label ID="lbl_研修名" runat="server" Text=""></asp:Label>
                    <asp:Label ID="lbl_教職員ID01" runat="server" Text="" Visible="false"></asp:Label>
                    <asp:Label ID="lbl_教職員ID02" runat="server" Text="" Visible="false"></asp:Label>
                </td>
            </tr>
            <tr>
                <td class="header center middle">
                    <asp:Label ID="Label2" runat="server" Text="件名"></asp:Label>
                </td>
                <td style="padding-left:10px; padding-bottom:5px;padding-top:5px;">
                    <asp:TextBox ID="txt_件名" runat="server" MaxLength="100" Width="98%" CssClass="input2" AutoComplete="off"></asp:TextBox>
                    <asp:Label ID="lbl_件名" runat="server" Text=""></asp:Label>
                </td>
            </tr>
            <tr>
                <td class="header center middle">
                    <span class="required2"></span>
                    <asp:Label ID="Label3" runat="server" Text="お問い合わせ内容"></asp:Label>
                </td>
                <td style="padding-left:10px; padding-bottom:5px;padding-top:5px;">
                    <asp:TextBox ID="txt_問い合わせ内容" runat="server" ClientIDMode="Static" 
                        TextMode="MultiLine" Rows="12" Width="98%" CssClass="input2" MaxLength="1073741824"></asp:TextBox>
                    <asp:Label ID="lbl_問い合わせ内容" runat="server" Text=""></asp:Label>
                </td>
            </tr>
            <tr>
                <td class="header center middle">
                    <asp:Label ID="lb_添付ファイル" runat="server" Text="添付ファイル"></asp:Label>
                </td>
            <td style="padding-left:10px;">
               <div style="display: flex; justify-content: space-between; align-items: center;">
                   <div>
                        <asp:FileUpload ID="fu_問合せ資料" runat="server" OnChange="validateFileSize(this)" CssClass="noDisplay"/>
                        <asp:Button ID="btnCustomUpload" runat="server" Text="ファイルを選択" OnClientClick="triggerFileUpload(); return false;" />
                        <asp:Button ID="btnUpload" runat="server" Text="Upload" OnClick="btnUpload_Click" CssClass="noDisplay" />
                        <asp:Label ID="lbl_添付ファイル" runat="server" Text="選択されていません"></asp:Label>
                   </div>
                    <div>
                        <asp:Button ID="btnFileDelete" runat="server" Text="ファイルを削除"/>
                    </div>
                    <!-- 禁止文字リスト保持用 20250714 S.Iguchi-->
                    <asp:HiddenField ID="hf_禁止文字リスト" runat="server" />
                </div>
            </td>
            </tr>
            <tr id="tr_btnArea" runat="server">
                <td colspan="2" style="text-align:right;padding-right:5px;">
                    <asp:Button ID="btn_入力確認" runat="server" ClientIDMode="Static" Text="入力確認" CommandName="入力確認" 
                           Width="100px" Height="25px" CssClass="buttonBig FontColorBlack"/>                
                    <asp:Panel ID="pnl_入力確認" runat="server">
                        <asp:Button ID="btn_キャンセル" runat="server" ClientIDMode="Static" Text="キャンセル" CommandName="キャンセル" 
                           Width="100px" Height="25px" CssClass="buttonBig-blue buttonBig"/>
                        <asp:Button ID="btn_修正" runat="server" ClientIDMode="Static" Text="入力内容修正" CommandName="修正" 
                           Width="120px" Height="25px" CssClass="buttonBig buttonBig-purple"/>
                        <asp:Button ID="btn_送信" runat="server" ClientIDMode="Static" Text="送信" CommandName="送信" 
                           Width="100px" Height="25px" CssClass="buttonBig buttonBig-red"/>                       
                    </asp:Panel>
                </td>
            </tr>
        </table>
    </div>
</asp:Content>
<%-- [Webフォーム]body End --%>
