<%@ Page Language="VB" MasterPageFile="~/Portal.master" AutoEventWireup="false" CodeFile="QANew.aspx.vb" Inherits="faculty_QANew" %>
<%@ Register Src="~/faculty/uc/uc_SearchTraining.ascx" TagName="FacultySearchTraining" TagPrefix="uc1" %>

<%-- [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">
       <link rel="stylesheet" type="text/css" href="<%=CssPath.Training%>" />
    <style>
        .TopSpace5{
            margin-top:5px;
        }
    </style>
    <script type="text/javascript">
        var C_COM_App_Path = "COM_App_Path"
        var C_MSP_UC1_Use = "MSP_UC1_Use"
        var C_MSP_UC1_OpenClose = "MSP_UC1_OpenClose"
        var C_MSP_Content_Scroll_Top = "MSP_Content_Scroll_Top"
        var C_MSP_Content_Scroll_Left = "MSP_Content_Scroll_Left"



        $(document).ready(function () {
            
            setButtonProp();
                        
            $("#txt_問い合わせ内容").keyup(function () {
                setButtonProp();
            });

            $("#btnCustomUpload").click(function () {
                $(this).prop('disabled', true);
                triggerFileUpload();
            });  
        });

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

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

                //研修宛先が選択済フラグ
                var gvToSelected = $('[id$=gv_宛先] tr').length > 1; // 1行目はヘッダーと仮定

                if (txtValueLength > 0 && gvToSelected) {
                    $("#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");
                }
            }            
        }

        function TMPMailToCheckAll(HeaderCheckbox) {
            //全チェック・全クリア
            $('[id$=gv_宛先] input[type=checkbox]').prop("checked", HeaderCheckbox.checked);
        }

        function checkSelectedAndConfirm() {
            return true;
            //var anyChecked = false;
            //$('[id$=gv_宛先] input[type=checkbox]').each(function () {
            //    if ($(this).is(':checked')) {
            //        anyChecked = true;
            //    }
            //});
            //if (!anyChecked) {
            //    alert('削除する宛先が選択されていません。');
            //    return false; 
            //}
            //return confirm('選択した宛先を削除しますか？');
        }

        function toggleCheckbox(container, event) {
            //フィールドのクリックでchk状態の切替
            event = event || window.event; 
            var target = event.target || event.srcElement;

            // イベント発生源がチェックボックス自体でない場合のみトグル
            if (target.tagName !== "INPUT") {
                var chk = container.getElementsByTagName("input")[0];
                if (chk) {
                    chk.checked = !chk.checked; // チェック状態を切り替え

                }
            }
        }


        // サーバー側から設定された最大ファイルサイズを取得
        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 = "";
                $("#btnCustomUpload").prop('disabled', false);
                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 false;
        }

        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 --%>
    <asp:SqlDataSource ID="sql_宛先" runat="server" />
    <%-- SqlDataSource End --%>
    <div style="width:1800px;">
        <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>

        <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="lb_研修Header" runat="server" Text="研修" data-required="true"></asp:Label>
                </td>
                <td style="padding-left:10px; padding-bottom:5px;padding-top:5px;">
                    <asp:Button ID="btn_参照" CssClass="button" runat="server" Text="宛先を参照" />

                    <asp:Label ID="lbl_宛先件数" runat="server" Text="" Visible="false"></asp:Label>
                    <div class="vertical_space"></div>
                    <asp:Panel ID="pnl_研修宛先" runat="server">
                        <asp:GridView ID="gv_宛先" runat="server" DataSourceID="sql_宛先" AutoGenerateColumns="false" Width="100%">
                            <Columns>
                                <asp:TemplateField Visible="false">
                                    <HeaderTemplate>
                                        <asp:CheckBox ID="chk_All" runat="server" onclick="TMPMailToCheckAll(this);" Text="選択"/>
                                    </HeaderTemplate>
                                    <ItemTemplate>
                                        <div class="checkbox-container" onclick="toggleCheckbox(this, event);">
                                            <asp:CheckBox ID="chk_削除対象" runat="server" />                        
                                         </div>
                                    </ItemTemplate>
                                    <ItemStyle HorizontalAlign ="Center" Width="50px"/>
                                </asp:TemplateField>
                                <asp:TemplateField HeaderText="年度_分野_科目_講座" Visible="false">                            
                                    <ItemTemplate>
                                        <asp:Label ID="lbl_To区分" runat="server" Text='<%# Eval("To区分")%>' Visible="false"></asp:Label>
                                        <asp:Label ID="lbl_To履修年度" runat="server" Text='<%# Eval("To履修年度")%>' Visible="false"></asp:Label>
                                        <asp:Label ID="lbl_To成績年度" runat="server" Text='<%# Eval("To成績年度")%>' Visible="false"></asp:Label>
                                        <asp:Label ID="lbl_To分野CD" runat="server" Text='<%# Eval("To分野CD")%>' Visible="false"></asp:Label>
                                        <asp:Label ID="lbl_To科目CD" runat="server" Text='<%# Eval("To科目CD")%>' Visible="false"></asp:Label>
                                        <asp:Label ID="lbl_To講座CD" runat="server" Text='<%# Eval("To講座CD")%>' Visible="false"></asp:Label>
                                        <asp:Label ID="lbl_To教職員ID01" runat="server" Text='<%# Eval("To教職員ID01")%>' Visible="false"></asp:Label>
                                        <asp:Label ID="lbl_To教職員ID02" runat="server" Text='<%# Eval("To教職員ID02")%>' Visible="false"></asp:Label>
                                    </ItemTemplate>
                                    <ItemStyle Width="20%" HorizontalAlign="Center"  />
                                </asp:TemplateField>
                                <asp:TemplateField HeaderText="回">                            
                                    <ItemTemplate>
                                        <asp:Label ID="lbl_To名前" runat="server" Text='<%# Eval("To回名")%>'></asp:Label>
                                    </ItemTemplate>                       
                                </asp:TemplateField>                                
                            </Columns>                            
                            <HeaderStyle BackColor ="#ffcc66" Font-Size="9pt" />
                            <RowStyle Font-Size="9pt"/>    
                            <EmptyDataTemplate>
                                <span>送信対象を選択してください。</span>
                            </EmptyDataTemplate> 
                            <EmptyDataRowStyle BorderColor ="white" Font-Size="9pt" />                       
                        </asp:GridView>
                         <asp:Button ID="btn_宛先削除" runat="server" Text="宛先削除" Font-Size="9pt" CssClass="TopSpace5" Visible="false"
                             OnClick="btn_宛先削除_Click" OnClientClick="return checkSelectedAndConfirm();"/>
                     </asp:Panel>
                </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">
                    <asp:Label ID="Label3" runat="server" Text="お問い合わせ内容" data-required="true"></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"></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 --%>
