<%-
local rowcnt = 1
local uci = require("luci.model.uci").cursor()
local fs = require "luci.openclash"

function rowstyle()
    rowcnt = rowcnt + 1
    return (rowcnt % 2) + 1
end

function width(o)
    if o.width then
        if type(o.width) == 'number' then
            return ' style="width:%dpx"' % o.width
        end
        return ' style="width:%s"' % o.width
    end
    return ''
end

local head_width
local e={}
table.insert(e, {group="nameserver", title="NameServer"})
table.insert(e, {group="fallback", title="FallBack"})
table.insert(e, {group="default", title="Default-NameServer"})

local sectiontype = "_"..self.config.."_"..string.match(self.sectiontype, "[%w_]+") or "self.sectiontype"
-%>

<style type="text/css">
    *{margin: 0;padding: 0;}
    
    ul{
        list-style: none;
    }

    h3{
        margin-top: 0;
    }

    .cbi-value-field .cbi-dropdown, .cbi-value-field .cbi-input-select, .cbi-value input[type="text"], .cbi-value input[type="password"] {
        min-width: auto;
    }
    
    #tab-header-<%=self.config%>-<%=self.sectiontype%>{
        min-height: 35px;
        text-align: center;
        position: relative;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }

    #tab-header-<%=self.config%>-<%=self.sectiontype%> ul{
        left: -1px;
        width: 100%;
        padding: unset !important;
        margin: unset !important;
    }

    #tab-header-<%=self.config%>-<%=self.sectiontype%> ul li{
        float: left;
        width: 160px;
        line-height: 35px;
        padding: 0 1px;
        border-right: 1px solid #dddddd;
        cursor: pointer;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }

    #tab-header-<%=self.config%>-<%=self.sectiontype%> ul li a{
        float: unset !important;
        padding: unset !important;
        vertical-align: middle;
    }

    #tab-header-<%=self.config%>-<%=self.sectiontype%> ul li.cbi-tab > a{
        font-weight: bolder;
    }
     
    #tab-header-<%=self.config%>-<%=self.sectiontype%> ul li a:hover{
        color: orangered;
    }
    
    #tab-content .dom-<%=self.config%>-<%=self.sectiontype%>{
        display: none;
    }
     
    #tab-content .dom-<%=self.config%>-<%=self.sectiontype%> ul li{
      float: left;
      margin: 15px 10px;
      width: 225px;
    }
</style>

<!-- tblsection -->
<fieldset class="cbi-section" id="cbi-<%=self.config%>-<%=self.sectiontype%>">
    <% if self.title and #self.title > 0 then -%>
        <h3><%=self.title%></h3>
    <%- end %>
    <%- if self.sortable then -%>
        <input type="hidden" id="cbi.sts.<%=self.config%>.<%=self.sectiontype%>" name="cbi.sts.<%=self.config%>.<%=self.sectiontype%>" value="" />
    <%- end -%>
    <div class="cbi-section-descr"><%=self.description%></div>
    <%- local count = 0 -%>
    <div id="tab-header-<%=self.config%>-<%=self.sectiontype%>" class="cbi-tabmenu">
        <ul class="cbi-tabmenu">
            <%- for i, tab in ipairs(e) do -%>
                <%- if i == 1 then -%>
                    <li name="tab-header-<%=self.config%>-<%=self.sectiontype%>" class="cbi-tab" data-group="<%=tab.group%>"><a><%=tab.title%></a></li>
                <%- else -%>
                    <li name="tab-header-<%=self.config%>-<%=self.sectiontype%>" class="cbi-tab-disabled" data-group="<%=tab.group%>"><a><%=tab.title%></a></li>
                <%- end -%>
            <%- end -%>
        </ul>
    </div>
    <div id="tab-content">
        <%- for t,o in ipairs(e)do
            if o.group == "nameserver" then
            -%>
            <div class="dom-<%=self.config%>-<%=self.sectiontype%>" style="display: block;" data-group="<%=o.group%>">
            <%- else -%>
            <div class="dom-<%=self.config%>-<%=self.sectiontype%>" data-group="<%=o.group%>">
            <%- end -%>
                <table class="cbi-section-table">
                    <tr class="cbi-section-table-titles">
                    <%- if not self.anonymous then -%>
                        <%- if self.sectionhead then -%>
                            <th class="cbi-section-table-cell"><%=self.sectionhead%></th>
                        <%- else -%>
                            <th>&#160;</th>
                        <%- end -%>
                    <%- end -%>
                    <%- for i, k in pairs(self.children) do if not k.optional then -%>
                        <%- if i == 1 then -%>
                            <th class="cbi-section-table-cell"><%:Serial Number%></th>
                        <%- end -%>
                        <th class="cbi-section-table-cell"<%=width(k)%>>
                        <%- if k.titleref then -%><a title="<%=self.titledesc or translate('Go to relevant configuration page')%>" class="cbi-title-ref" href="<%=k.titleref%>"><%- end -%>
                            <%-=k.title-%>
                        <%- if k.titleref then -%></a><%- end -%>
                        </th>
                    <%- count = count + 1; end; end; if self.sortable then -%>
                        <th class="cbi-section-table-cell"><%:Sort%></th>
                    <%- end; if self.extedit or self.addremove then -%>
                        <th class="cbi-section-table-cell"><%:Edit%></th>
                    <%- count = count + 1; end -%>
                    </tr>
                    <tr class="cbi-section-table-descr">
                    <%- if not self.anonymous then -%>
                        <%- if self.sectiondesc then -%>
                            <th class="cbi-section-table-cell"><%=self.sectiondesc%></th>
                        <%- else -%>
                            <th></th>
                        <%- end -%>
                    <%- end; if self.extedit or self.addremove then -%>
                        <th></th>
                    <%- end -%>
                    <%- for i, k in pairs(self.children) do if not k.optional then -%>
                        <th class="cbi-section-table-cell"<%=width(k)%>><%=k.description%></th>
                    <%- end; end; if self.sortable then -%>
                        <th class="cbi-section-table-cell"></th>
                    <%- end; if self.extedit or self.addremove then -%>
                        <th class="cbi-section-table-cell"></th>
                    <%- end -%>
                    </tr>
                    <%- local isempty = true
                        local num = 1
                    for i, k in ipairs(self:cfgsections()) do
                        section = k
                        local section_group = uci:get("openclash", section, "group")
                        if section_group == o.group then
                            isempty = false
                            scope = { valueheader = "cbi/cell_valueheader", valuefooter = "cbi/cell_valuefooter" }
                    -%>
                            <tr class="cbi-section-table-row<% if self.extedit or self.rowcolors then %> cbi-rowstyle-<%=rowstyle()%><% end %>" id="cbi-<%=self.config%>-<%=section%>">
                            <% if not self.anonymous then -%>
                                <th><h3><%=(type(self.sectiontitle) == "function") and self:sectiontitle(section) or k%></h3></th>
                            <%- end %>
                            <td class="cbi-section-table-cell">
                                <p><%=num%></p>
                                <% num = num + 1 -%>
                            </td>
                            <%-
                                for k, node in ipairs(self.children) do
                                    if not node.optional then
                                        node:render(section, scope or {})
                                    end
                                end
                            -%>
                            <%- if self.sortable then -%>
                                <td class="cbi-section-table-cell">
                                    <input class="cbi-button cbi-button-up" type="button" value="<%:∧%>"  onclick="return cbi_row_swap(this, true, 'cbi.sts.<%=self.config%>.<%=self.sectiontype%>')" alt="<%:Move up%>" title="<%:Move up%>" />
                                    <input class="cbi-button cbi-button-down" type="button" value="<%:∨%>"  onclick="return cbi_row_swap(this, false, 'cbi.sts.<%=self.config%>.<%=self.sectiontype%>')" alt="<%:Move down%>" title="<%:Move down%>" />
                                </td>
                            <%- end -%>
            
                            <%- if self.extedit or self.addremove then -%>
                                <td class="cbi-section-table-cell">
                                    <%- if self.extedit then -%>
                                        <input class="btn cbi-button cbi-button-edit" type="button" value="<%:Edit%>"
                                        <%- if type(self.extedit) == "string" then
                                        %> onclick="location.href='<%=self.extedit:format(section)%>';return switch_to_tab<%=sectiontype%>()"
                                        <%- elseif type(self.extedit) == "function" then
                                        %> onclick="location.href='<%=self:extedit(section)%>';return switch_to_tab<%=sectiontype%>()"
                                        <%- end
                                        %> alt="<%:Edit%>" title="<%:Edit%>" />
                                    <%- end; if self.addremove then %>
                                        <input class="btn cbi-button cbi-button-remove" type="submit" value="<%:Delete%>"  onclick="this.form.cbi_state='del-section';return switch_to_tab<%=sectiontype%>()" name="cbi.rts.<%=self.config%>.<%=k%>" alt="<%:Delete%>" title="<%:Delete%>" />
                                    <%- end -%>
                                </td>
                            <%- end -%>
                            </tr>
                    <%- end -%>
                    <%- end -%>
    
                    <%- if isempty then -%>
                    <tr class="cbi-section-table-row">
                        <td colspan="<%=count%>"><em><br /><%:This section contains no values yet%></em></td>
                    </tr>
                    <%- end -%>
                </table>
        
                <% if self.error then %>
                    <div class="cbi-section-error">
                        <ul><% for _, c in pairs(self.error) do for _, e in ipairs(c) do -%>
                            <li><%=pcdata(e):gsub("\n","<br />")%></li>
                        <%- end end %></ul>
                    </div>
                <% end %>
        
                <%- if self.addremove then -%>
                    <% if self.template_addremove then include(self.template_addremove) else -%>
                    <div class="cbi-section-create cbi-tblsection-create">
                        <% if self.anonymous then %>
                            <input class="btn cbi-button cbi-button-add" type="submit" onclick="return switch_to_tab<%=sectiontype%>('create', '<%=o.group%>')" value="<%:Add%>" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.<%=section%>" title="<%:Add%>" />
                        <% else %>
                            <% if self.invalid_cts then -%><div class="cbi-section-error"><% end %>
                            <input type="text" class="cbi-section-create-name" id="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.<%=o.group%>" name="cbi.cts.<%=self.config%>.<%=self.sectiontype%>.<%=o.group%>" data-type="uciname" data-optional="true" />
                            <input type="hidden" name="cbi.opt.<%=self.config%>.<%=self.sectiontype%>.group" value="<%=o.group%>" />
                            <input class="btn cbi-button cbi-button-add" type="submit" onclick="this.form.cbi_state='add-section'; return true" value="<%:Add%>" title="<%:Add%>" />
                            <% if self.invalid_cts then -%>
                                <br /><%:Invalid%></div>
                            <%- end %>
                        <% end %>
                    </div>
                    <%- end %>
                <%- end -%>
            </div>
        <%- end -%>
    </div>
</fieldset>
<!-- /tblsection -->

<script type="text/javascript">//<![CDATA[
    window.addEventListener('load', onload<%=sectiontype%>, false);

    var titles<%=sectiontype%> = document.getElementsByName('tab-header-<%=self.config%>-<%=self.sectiontype%>');
    var divs<%=sectiontype%> = document.getElementsByClassName('dom-<%=self.config%>-<%=self.sectiontype%>');

    function switch_to_tab<%=sectiontype%>(type, group){
        if(titles<%=sectiontype%>.length != divs<%=sectiontype%>.length) return;
        
        if ( type == 'create' ) {
            for(var j=0; j < titles<%=sectiontype%>.length; j++){
                titles<%=sectiontype%>[j].className = 'cbi-tab-disabled';
                divs<%=sectiontype%>[j].style.display = 'none';
            };
            for(var k=0; k < titles<%=sectiontype%>.length; k++){
                if(titles<%=sectiontype%>[k].getAttribute('data-group') == group){
                    titles<%=sectiontype%>[k].className = 'cbi-tab';
                    divs<%=sectiontype%>[k].style.display = 'block';
                    try {
                        localStorage.setItem("titles<%=sectiontype%>", k);
                    } catch(e) {
                    }
                    break;
                }
            }
        };

        try {
            localStorage.setItem("id<%=sectiontype%>",'cbi-<%=self.config%>-<%=self.sectiontype%>');
        } catch(e) {
        }
        return true;
    };

    function onload<%=sectiontype%>() {
        if(titles<%=sectiontype%>.length != divs<%=sectiontype%>.length) return;

        try {
            if (localStorage.getItem("id<%=sectiontype%>")) {
                var element = document.getElementById(localStorage.getItem("id<%=sectiontype%>"));
                if (element) {
                    element.scrollIntoView();
                }
                localStorage.removeItem("id<%=sectiontype%>");
            }

            var savedTab = localStorage.getItem("titles<%=sectiontype%>");
            if (savedTab && titles<%=sectiontype%>[savedTab]) {
                for(var j=0; j < titles<%=sectiontype%>.length; j++){
                    titles<%=sectiontype%>[j].className = 'cbi-tab-disabled';
                    divs<%=sectiontype%>[j].style.display = 'none';
                }
                titles<%=sectiontype%>[savedTab].className = 'cbi-tab';
                divs<%=sectiontype%>[savedTab].style.display = 'block';
                localStorage.removeItem("titles<%=sectiontype%>");
            }
        } catch(e) {
        }

        for(var i=0; i < titles<%=sectiontype%>.length; i++){
            var li<%=sectiontype%> = titles<%=sectiontype%>[i];
            li<%=sectiontype%>.id = i;
            
            li<%=sectiontype%>.onclick = function(){
                switchTab(this.id);
            };

            li<%=sectiontype%>.ontouchstart = function(){
                switchTab(this.id);
            };
        }

        function switchTab(tabIndex) {
            for(var j=0; j < titles<%=sectiontype%>.length; j++){
                titles<%=sectiontype%>[j].className = 'cbi-tab-disabled';
                divs<%=sectiontype%>[j].style.display = 'none';
            }
            titles<%=sectiontype%>[tabIndex].className = 'cbi-tab';
            divs<%=sectiontype%>[tabIndex].style.display = 'block';
            try {
                localStorage.setItem("titles<%=sectiontype%>", tabIndex);
            } catch(e) {
            }
        }
    };
//]]>
</script>