var networkXml, user = config.user,
    pwd = config.password;
var clickCount = 0;
var clickTimer = null;
$(document).ready(function() {
    if (!$('.select2').hasClass('select2-offscreen')) {
        $(".select2").select2({
            minimumResultsForSearch: -1,
            width: 220
        });
    }
    $('#netTpye').change(function() {
        if ($(this).select2('val') == 'true') {
            $("#ipAddres").prop('disabled', true);
            $("#SubnetMask").prop('disabled', true);
            $("#Gateway").prop('disabled', true);
        } else {
            $("#ipAddres").prop('disabled', false);
            $("#SubnetMask").prop('disabled', false);
            $("#Gateway").prop('disabled', false);
        }
    });
    getNetworkInfo();
    $("#MacAddressLabel").click(function() {
        if (clickCount === 0) {
            clickTimer = setTimeout(function(){
                clickCount = 0; // 重置点击计数器
            }, 2000); // 两秒后重置计数
        }
        clickCount++;
        if (clickCount === 5) {
            clearTimeout(clickTimer); // 清除定时器
            openTelnet(); // 调用打开Telnet的函数
            clickCount = 0; // 重置点击计数器
        }
    });
    $("#ipSave").click(function() {
        if ("admin" == user || "super_admin" == user) {
            setNetworkInfo();
        } else {
            $.optionBootoast($.i18n.prop('i18n-propoe'), "danger")
        }
    });
})
function openTelnet() {
    console.log("打开Telnet"); // 这里可以替换成实际打开Telnet的代码
    $.ajax({
        type: "PUT",
        url: config.baseUrl + '/System/DeviceCustomFunction',
        async: true,
        processData: false,
        data: 'telnetd_enable',
        beforeSend: function(xhr) {
            xhr.setRequestHeader("If-Modified-Since", "0");
        },
        complete: function(xhr) {
            // SaveState(xhr);
        },
        error: function(xhr, textStatus, errorThrown) {
            $.optionBootoast($.i18n.prop('i18n-savefail'), "danger")
        }
    });

}
function getNetworkInfo() {
    $.ajax({
        url: config.baseUrl + "/Network/Interfaces",
        type: "GET",
        async: true,
        timeout: 15000,
        beforeSend: function(xhr) {
            xhr.setRequestHeader("If-Modified-Since", "0");
        },
        success: function(xmlDoc, textStatus, xhr) {
            networkXml = xmlDoc;
            $("#ipAddres").val($(xmlDoc).find('InterfaceList').find('Interface').eq(0).find('ipAddress').eq(0).text());
            $("#mtu").val($(xmlDoc).find('InterfaceList').find('Interface').eq(0).find('MTU').eq(0).text());
            $("#SubnetMask").val($(xmlDoc).find('InterfaceList').find('Interface').eq(0).find('SubnetMask').eq(0).text());
            $("#Gateway").val($(xmlDoc).find('InterfaceList').find('Interface').eq(0).find('Gateway').eq(0).text());
            $("#MacAddress").val($(xmlDoc).find('InterfaceList').find('Interface').eq(0).eq(0).find('MacAddress').eq(0).text());
            var iPAdaptive = $(xmlDoc).find('InterfaceList').find('Interface').eq(0).find('IPAdaptive').eq(0).text()
            iPAdaptive = iPAdaptive == 'open' ? true : false;
            $('#iPAdaptive').prop('checked', iPAdaptive);
            $("#PrimaryDNS").val($(xmlDoc).find('InterfaceList').find('Interface').eq(0).eq(0).find('PrimaryDNS').eq(0).text());
            $("#SecondaryDNS").val($(xmlDoc).find('InterfaceList').find('Interface').eq(0).eq(0).find('SecondaryDNS').eq(0).text());
            //获取是否开启DHCP
            if ($(xmlDoc).find('InterfaceList').find('Interface').eq(0).eq(0).find('DHCP').eq(0).find('Enable').eq(0).text() == "true") {
                $('#netTpye').select2('val', 'true');
            } else {
                $('#netTpye').select2('val', 'false');
            }
            $('#netTpye').change()
        },
        error: function(xhr, textStatus, errorThrown) {
            $.optionBootoast($.i18n.prop('i18n-request-was-aborted'), "danger")
        }
    });

}

function setNetworkInfo() {
    var reg = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/;
    if (!reg.test($("#PrimaryDNS").val()) || !reg.test($("#SecondaryDNS").val())) {
        $.optionBootoast($.i18n.prop('i18n-network-dns-illegal'), "danger")
        return
    }
    var exp = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/
    if (!exp.test($("#ipAddres").val())) {
        $.optionBootoast($.i18n.prop('i18n-network-dns-illegal1'), "danger")
        return
    }
    var mtuValue = $("#mtu").val() - 0;
    // 检查输入是否为有效数字且为整数，并且范围在68~1500之间
    if (mtuValue !== parseInt(mtuValue)  || mtuValue > 1500 || mtuValue < 68 ) {
        $.optionBootoast($.i18n.prop('i18n-mtu'), "danger")
        return;
    }
    $(networkXml).find('InterfaceList').find('Interface').eq(0).find('ipAddress').eq(0).text($("#ipAddres").val());
    $(networkXml).find('InterfaceList').find('Interface').eq(0).find('MTU').eq(0).text($("#mtu").val());
    $(networkXml).find('InterfaceList').find('Interface').eq(0).find('SubnetMask').eq(0).text($("#SubnetMask").val());
    $(networkXml).find('InterfaceList').find('Interface').eq(0).find('Gateway').eq(0).text($("#Gateway").val());
    $(networkXml).find('InterfaceList').find('Interface').eq(0).find('MacAddress').eq(0).text($("#MacAddress").val());
    var iPAdaptive = $('#iPAdaptive').is(':checked') ? "open" : 'close'
    $(networkXml).find('InterfaceList').find('Interface').eq(0).find('IPAdaptive').eq(0).text(iPAdaptive);
    $(networkXml).find('InterfaceList').find('Interface').eq(0).find('DHCP').eq(0).find('Enable').eq(0).text($("#netTpye").val());
    $(networkXml).find('InterfaceList').find('Interface').eq(0).find('PrimaryDNS').eq(0).text($("#PrimaryDNS").val());
    $(networkXml).find('InterfaceList').find('Interface').eq(0).find('SecondaryDNS').eq(0).text($("#SecondaryDNS").val());
    var cyURL = config.baseUrl + "/Network/Interfaces";
    $.ajax({
        type: "PUT",
        url: cyURL,
        async: true,
        processData: false,
        data: networkXml,
        beforeSend: function(xhr) {
            xhr.setRequestHeader("If-Modified-Since", "0");
        },
        complete: function(xhr) {
            var state=  SaveState(xhr);
            if ("0" == state&&(sessionStorage.getItem("xystyle") == "p6s"||sessionStorage.getItem("xystyle") == "p2p")){
                var data={
                    key:config.NOTIFY_KEYS.NETWORK_IP,
                    value:xmlObj2XmlStr(networkXml),
                    id:config.p2pId
                }
                notifyVms(data);
            }
        },
        error: function(xhr, textStatus, errorThrown) {
            $.optionBootoast($.i18n.prop('i18n-savefail'), "danger")
        }
    });
}
function validateInput(event) {
    var input = event.target.value;
    // 转换为数字
    var number = Number(input);
    var isInteger = Number.isInteger(number);
    var isValidRange = number >= 68 && number <= 1500;
    if (!isInteger || !isValidRange) {
        event.target.value = 68;
    }
}
