@using NzbDrone.Web.Helpers
@model NzbDrone.Web.Models.IndexerSettingsModel
@{ Layout = null;  }

<style>
    .indexerStatusContainer {
        margin-left: 14px;
    }
</style>
<div class="infoBox">
    RSS feeds are checked every 25 minutes for new episodes.</div>
<div class="indexerStatusContainer">
    @Html.CheckBox("nzbsOrgStatus", @Model.NzbsOrgEnabled, new{ @class = "indexerStatusButton" })
    <label for="nzbsOrgStatus">Nzbs.Org</label>
    
    @Html.CheckBox("nzbMatrixStatus", @Model.NzbMatrixEnabled, new { @class = "indexerStatusButton" })
    <label for="nzbMatrixStatus">NZBMatrix</label>
    
    @Html.CheckBox("nzbsRusStatus", @Model.NzbsRUsEnabled, new { @class = "indexerStatusButton" })
    <label for="nzbsRusStatus">NZBsRus</label>
    
    @Html.CheckBox("newzbinStatus", @Model.NewzbinEnabled, new { @class = "indexerStatusButton" })
    <label for="newzbinStatus">Newzbin</label>
    
    @Html.CheckBox("newznabStatus", @Model.NewznabEnabled, new { @class = "indexerStatusButton" })
    <label for="newznabStatus">Newznab</label>

    @Html.CheckBox("womblesStatus", @Model.WomblesEnabled, new { @class = "indexerStatusButton" })
    <label for="womblesStatus">Womble's Index</label>

    @Html.CheckBox("fileSharingTalkStatus", @Model.FileSharingTalkEnabled, new { @class = "indexerStatusButton" })
    <label for="fileSharingTalkStatus">File Sharing Talk</label>

    @Html.CheckBox("nzbIndexStatus", @Model.NzbIndexEnabled, new { @class = "indexerStatusButton" })
        <label for="nzbIndexStatus">NzbIndex</label>

    @Html.CheckBox("nzbClubStatus", @Model.NzbClubEnabled, new { @class = "indexerStatusButton" })
        <label for="nzbClubStatus">Nzb Club</label>
</div>
<div id="stylized">
    @using (Html.BeginForm("SaveIndexers", "Settings", FormMethod.Post, new { id = "IndexersForm", name = "IndexersForm", @class = "settingsForm" }))
    {     
        <div class="jquery-accordion">
            <h3><a href="#">NZBs.org</a></h3>
            <div class="indexerPanel">
                <label class="labelClass">
                    Enable <span class="small">@Html.DescriptionFor(m => m.NzbsOrgEnabled)</span>
                </label>
                @Html.CheckBoxFor(m => m.NzbsOrgEnabled, new { @class = "inputClass checkClass enabledCheck" })
                <label class="labelClass">@Html.LabelFor(m => m.NzbsOrgUId)
                    <span class="small">@Html.DescriptionFor(m => m.NzbsOrgUId)</span>
                    <span class="small">@Html.ValidationMessageFor(m => m.NzbsOrgUId)</span>
                </label>
                @Html.TextBoxFor(m => m.NzbsOrgUId, new { @class = "inputClass" })
                <label class="labelClass">@Html.LabelFor(m => m.NzbsOrgHash)
                    <span class="small">@Html.DescriptionFor(m => m.NzbsOrgHash)</span>
                    <span class="small">@Html.ValidationMessageFor(m => m.NzbsOrgHash)</span>
                </label>
                @Html.TextBoxFor(m => m.NzbsOrgHash, new { @class = "inputClass" })
            </div>

            <h3><a href="#">NZBMatrix</a></h3>
            <div class="indexerPanel">
                <label class="labelClass">
                    Enable <span class="small">@Html.DescriptionFor(m => m.NzbMatrixEnabled)</span>
                </label>
                @Html.CheckBoxFor(m => m.NzbMatrixEnabled, new { @class = "inputClass checkClass enabledCheck" })
                <label class="labelClass">@Html.LabelFor(m => m.NzbMatrixUsername)
                    <span class="small">@Html.DescriptionFor(m => m.NzbMatrixUsername)</span>
                    <span class="small">@Html.ValidationMessageFor(m => m.NzbMatrixUsername)</span>
                </label>
                @Html.TextBoxFor(m => m.NzbMatrixUsername, new { @class = "inputClass" })
                <label class="labelClass">@Html.LabelFor(m => m.NzbMatrixApiKey)
                    <span class="small">@Html.DescriptionFor(m => m.NzbMatrixApiKey)</span>
                    <span class="small">@Html.ValidationMessageFor(m => m.NzbMatrixApiKey)</span>
                </label>
                @Html.TextBoxFor(m => m.NzbMatrixApiKey, new { @class = "inputClass" })
            </div>

            <h3><a href="#">NZBsRus</a></h3>
            <div class="indexerPanel">
                <div class="warningBox">NZBsRus does not support backlog searching</div>
                <label class="labelClass">
                    Enable <span class="small">@Html.DescriptionFor(m => m.NzbsRUsEnabled)</span>
                </label>
                @Html.CheckBoxFor(m => m.NzbsRUsEnabled, new { @class = "inputClass checkClass enabledCheck" })
                <label class="labelClass">@Html.LabelFor(m => m.NzbsrusUId)
                    <span class="small">@Html.DescriptionFor(m => m.NzbsrusUId)</span>
                    <span class="small">@Html.ValidationMessageFor(m => m.NzbsrusUId)</span>
                </label>
                @Html.TextBoxFor(m => m.NzbsrusUId, new { @class = "inputClass" })
                <label class="labelClass">@Html.LabelFor(m => m.NzbsrusHash)
                    <span class="small">@Html.DescriptionFor(m => m.NzbsrusHash)</span>
                    <span class="small">@Html.ValidationMessageFor(m => m.NzbsrusHash)</span>
                </label>
                @Html.TextBoxFor(m => m.NzbsrusHash, new { @class = "inputClass" })
            </div>

            <h3><a href="#">Newzbin</a></h3>
            <div class="indexerPanel">
                <label class="labelClass">
                    Enable <span class="small">@Html.DescriptionFor(m => m.NewzbinEnabled)</span>
                </label>
                @Html.CheckBoxFor(m => m.NewzbinEnabled, new { @class = "inputClass checkClass enabledCheck" })
                <label class="labelClass">@Html.LabelFor(m => m.NewzbinUsername)
                    <span class="small">@Html.DescriptionFor(m => m.NewzbinUsername)</span>
                    <span class="small">@Html.ValidationMessageFor(m => m.NewzbinUsername)</span>
                </label>
                @Html.TextBoxFor(m => m.NewzbinUsername, new { @class = "inputClass" })
                <label class="labelClass">@Html.LabelFor(m => m.NewzbinPassword)
                    <span class="small">@Html.DescriptionFor(m => m.NewzbinPassword)</span>
                    <span class="small">@Html.ValidationMessageFor(m => m.NewzbinPassword)</span>
                </label>
                @Html.TextBoxFor(m => m.NewzbinPassword, new { @class = "inputClass", type = "password" })
            </div>

            <h3><a href="#">Newznab</a></h3>
            <div class="indexerPanel">
                <label class="labelClass">
                    Enable <span class="small">@Html.DescriptionFor(m => m.NewznabEnabled)</span>
                </label>
                @Html.CheckBoxFor(m => m.NewznabEnabled, new { @class = "inputClass checkClass enabledCheck" })
                <br />
                <br />
                <p>
                </p>
                <a id="addNewznab" href="@Url.Action("AddNewznabProvider", "Settings")">
                    <img src="../../Content/Images/Plus.png" alt="Add Newznab Provider" width="20px"
                         height="20px" />
                    Add Newznab Provider</a>
                <div id="newznabProviders">
                    @foreach (var provider in Model.NewznabDefinitions)
                    {
                        Html.RenderAction("GetNewznabProviderView", provider);
                    }
                </div>
            </div>

            <h3><a href="#">Womble's Index</a></h3>
            <div class="indexerPanel">
                <div class="warningBox">Womble's Index does not support backlog searching</div>
                <label class="labelClass">
                    Enable <span class="small">@Html.DescriptionFor(m => m.WomblesEnabled)</span>
                </label>
                @Html.CheckBoxFor(m => m.WomblesEnabled, new { @class = "inputClass checkClass enabledCheck" })
            </div>

            <h3><a href="#">File Sharing Talk</a></h3>
            <div class="indexerPanel">
                <div class="warningBox">File Sharing Talk does not support backlog searching</div>
                <label class="labelClass">
                    Enable <span class="small">@Html.DescriptionFor(m => m.FileSharingTalkEnabled)</span>
                </label>
                @Html.CheckBoxFor(m => m.FileSharingTalkEnabled, new { @class = "inputClass checkClass enabledCheck" })
                <label class="labelClass">@Html.LabelFor(m => m.FileSharingTalkUid)
                    <span class="small">@Html.DescriptionFor(m => m.FileSharingTalkUid)</span>
                    <span class="small">@Html.ValidationMessageFor(m => m.FileSharingTalkUid)</span>
                </label>
                @Html.TextBoxFor(m => m.FileSharingTalkUid, new { @class = "inputClass" })
                <label class="labelClass">@Html.LabelFor(m => m.FileSharingTalkSecret)
                    <span class="small">@Html.DescriptionFor(m => m.FileSharingTalkSecret)</span>
                    <span class="small">@Html.ValidationMessageFor(m => m.FileSharingTalkSecret)</span>
                </label>
                @Html.TextBoxFor(m => m.FileSharingTalkSecret, new { @class = "inputClass" })
            </div>

            <h3><a href="#">NzbIndex</a></h3>
            <div class="indexerPanel">
                <label class="labelClass">
                    Enable <span class="small">@Html.DescriptionFor(m => m.NzbIndexEnabled)</span>
                </label>
                @Html.CheckBoxFor(m => m.NzbIndexEnabled, new { @class = "inputClass checkClass enabledCheck" })
            </div>

            <h3><a href="#">NzbClub</a></h3>
            <div class="indexerPanel">
                <label class="labelClass">
                    Enable <span class="small">@Html.DescriptionFor(m => m.NzbClubEnabled)</span>
                </label>
                @Html.CheckBoxFor(m => m.NzbClubEnabled, new { @class = "inputClass checkClass enabledCheck" })
            </div>
        </div>
        
        <div class="retentionContainer">
            @Html.ValidationSummary(true, "Unable to save your settings. Please correct the errors and try again.")
            <label class="labelClass">@Html.LabelFor(m => m.Retention)
                <span class="small">@Html.DescriptionFor(m => m.Retention)</span>
                <span class="small">@Html.ValidationMessageFor(m => m.Retention)</span>
            </label>
            @Html.TextBoxFor(m => m.Retention, new { @class = "inputClass" })
        </div>
        
        <button type="submit" class="save_button" disabled="disabled">Save</button>
    }
</div>

<script type="text/javascript">
    $(document).ready(function () {
        //Allow unobstrusive validation of the AJAX loaded form
        $.validator.unobtrusive.parse("#IndexersForm");
        
        //Make the buttons
        $('.indexerStatusButton').button();

        //Validator Settings
        var settings = $.data($('#IndexersForm')[0], 'validator').settings;
        settings.ignore = [];
        settings.focusInvalid = false;
        settings.onfocusout = function (element) { $(element).valid(); };

        var oldHighlight = settings.highlight;
        var oldUnhighlight = settings.unhighlight;

        settings.highlight = function (element, errorClass, validClass) {
            oldHighlight(element, errorClass, validClass);
            $(element).parents('div.ui-accordion-content').prev('h3.ui-accordion-header').addClass('validation-error');
        };
        settings.unhighlight = function (element, errorClass, validClass) {
            oldUnhighlight(element, errorClass, validClass);

            var container = $(element).parents('div.ui-accordion-content');
            if ($(container).children('.' + errorClass).length == 0)
                $(container).prev('h3.ui-accordion-header').removeClass('validation-error');
        };
    });

    $(document).on('change', '.enabledCheck', function () {
        var id = $(this).prop('id');
        var checked = $(this).prop('checked');

        if (id == 'NzbsOrgEnabled')
            $('#nzbsOrgStatus').prop('checked', checked);

        if (id == 'NzbMatrixEnabled')
            $('#nzbMatrixStatus').prop('checked', checked);

        if (id == 'NzbsRUsEnabled')
            $('#nzbsRusStatus').prop('checked', checked);

        if (id == 'NewzbinEnabled')
            $('#newzbinStatus').prop('checked', checked);

        if (id == 'NewznabEnabled')
            $('#newznabStatus').prop('checked', checked);
        
        if (id == 'WomblesEnabled')
            $('#womblesStatus').prop('checked', checked);
        
        if (id == 'FileSharingTalkEnabled')
            $('#fileSharingTalkStatus').prop('checked', checked);
        
        if (id == 'NzbIndexEnabled')
            $('#nzbIndexStatus').prop('checked', checked);
        
        if (id == 'NzbClubEnabled')
            $('#nzbClubStatus').prop('checked', checked);

        $('.indexerStatusButton').button("refresh");
        reValidate();
    });

    $(document).on('change', '.indexerStatusButton', function () {
        var id = $(this).prop('id');
        var checked = $(this).prop('checked');

        if (id == 'nzbsOrgStatus')
            $('#NzbsOrgEnabled').prop('checked', checked);

        if (id == 'nzbMatrixStatus')
            $('#NzbMatrixEnabled').prop('checked', checked);

        if (id == 'nzbsRusStatus')
            $('#NzbsRUsEnabled').prop('checked', checked);

        if (id == 'newzbinStatus')
            $('#NewzbinEnabled').prop('checked', checked);

        if (id == 'newznabStatus')
            $('#NewznabEnabled').prop('checked', checked);
        
        if (id == 'womblesStatus')
            $('#WomblesEnabled').prop('checked', checked);
        
        if (id == 'fileSharingTalkStatus')
            $('#FileSharingTalkEnabled').prop('checked', checked);
        
        if (id == 'nzbIndexStatus')
            $('#NzbIndexEnabled').prop('checked', checked);
        
        if (id == 'nzbClubStatus')
            $('#NzbClubEnabled').prop('checked', checked);

        reValidate();
    });

    function reValidate() {
        $("#IndexersForm").validate().form();

        var container = $('div.ui-accordion-content');
        if ($(container).children('.input-validation-error').length == 0)
            $(container).prev('h3.ui-accordion-header').removeClass('validation-error');
    }

    //Newznab
    $("#addNewznab").on('click', function (event) {
        $.ajax({
            url: this.href,
            cache: false,
            success: function (html) {
                $("#newznabProviders").append(html);
            }
        });
        event.preventDefault();
        //event.stopPropagation();
    });

    var deleteNewznabProviderUrl = '@Url.Action("DeleteNewznabProvider", "Settings")';

    function deleteProvider(id) {
        $.ajax({
            type: "POST",
            url: deleteNewznabProviderUrl,
            data: jQuery.param({ providerId: id }),
            error: function (req, status, error) {
                alert("Sorry! We could not delete your Provider at this time. " + error);
            },
            success: function (data, textStatus, jqXHR) {
                $("#provider_" + id).remove();
            }
        });
    }

    function getProviderId(obj) {
        var parentProviderSection = $(obj).parents('.providerSection');
        return parentProviderSection.children('.newznabProviderId').val();
    }

    $(".providerName_textbox").on('keyup', function () {
        var value = $(this).val();
        var profileId = getProviderId(this);
        $("#title_" + profileId).text(value);
    }).keyup();
  </script>