/**
 * Created by R06326 on 2017/8/8.
 */
define(function(require, exports, module) {
    'use strict';

    var Promise = window.require('bluebird');
    var co = window.require('co');

    var global = require("../../js/global");
    var path = window.require("path");
    var jsUtil = window.require('../../common/js/jsUtil');

    var maccOnlineHelper = window.require('../../common/js/maccOnlineHelper');
    var checking = false; // 正在检测中的标志位

    function init() {
        initWindowEvent();
        initPageStatistic();
        initVariable();
        initEvent();
        initDom();
        resize();
        initGlobalEvent();

        function initWindowEvent() {

        }

        function initPageStatistic() {
            window.statRecordEle("batchStart#batchStart");
        }

        function initVariable() {

        }

        function initEvent() {
            $("#loca_protocol").change(function () {
                if ($(this).val() == "telnet") {
                    $("#loca_port").val("23");
                } else if ($(this).val() == "SSH") {
                    $("#loca_port").val("22");
                } else if ($(this).val() == "") {
                    $("#loca_port").val("");
                }
            });

            $("#startDetect").click(function () {
                // 正在检测中的判断
                if (checking) {
                    alert(undefined, "正在检测中，请稍候…");
                    return;
                }

                // 输入合法性校验
                if ($("#loca_ip_addr").val() == '') {
                    alert(undefined, "请输入设备的ip地址！");
                    return;
                }
                if (!window.isIpOk($("#loca_ip_addr").val())) {
                    alert(undefined, "您输入的设备ip地址格式不正确！");
                    return;
                }

                if ($("#loca_protocol").val() == "") {
                    alert(undefined, "请选择连接设备的方式，并输入端口号！");
                    return;
                }

                var portInput = $("#loca_port").val();
                if (portInput == "") {
                    alert(undefined, "请输入当前连接使用的端口号！");
                    return;
                } else {
                    if (isNaN(portInput) || portInput < 0 || portInput > 65536) {
                        alert(undefined, "端口号只能是0到65536之间的整数！");
                        return;
                    }
                }

                if ($("#loca_protocol").val() == "SSH") {
                    if ($("#loca_username").val() == "") {
                        alert(undefined, "SSH连接时用户名不能为空！");
                        return;
                    }
                    if ($("#loca_pwd").val() == "") {
                        alert(undefined, "SSH连接时密码不能为空！");
                        return;
                    }
                }

                if ($("#dnsAddr").val() == '') {
                    alert(undefined, "dns服务器地址不能为空！如果不知道这个地址，请输入默认地址114.114.114.114。");
                    return;
                }
                if (!window.isIpOk($("#dnsAddr").val())) {
                    alert(undefined, "您输入的dns服务器地址格式不正确！");
                    return;
                }

                // 用户输入的信息
                var deviceObj = {
                    'protocal': $("#loca_protocol").val(),
                    'host':  $("#loca_ip_addr").val(),
                    'port': $("#loca_port").val(),
                    'username': $("#loca_username").val(),
                    'password': $("#loca_pwd").val(),
                    'enablePassword': $("#loca_enable_pwd").val(),
                    'encoding': 'GB2312'
                };

                co(function* () {
                    $("#onlineConfigTip img").attr('src', './image/icon-loading.gif');
                    $("#onlineConfigTip text").text('正在检测中，请耐心等待…');
                    $("#onlineConfigTip text").removeClass("success fail");
                    $("#onlineConfigProgress").empty();

                    checking = true;
                    yield maccOnlineHelper.makeOnline(deviceObj, null, {"dnsAddr" : $("#dnsAddr").val()}, function (obj) {
                        $("#onlineConfigProgress").append('<p class=' + obj.type + '>' + obj.tip + '</p>');
                        $('#onlineConfigProgress').scrollTop($('#onlineConfigProgress')[0].scrollHeight); // 滚动条置底
                    });

                    checking = false;
                    console.log('设备 ' + deviceObj.host + ' 已经可以正常上线。请前往MACC上查看。');
                    alert(undefined, '设备 ' + deviceObj.host + ' 已经可以正常上线。请前往MACC上查看。');

                    $("#onlineConfigTip img").attr('src', './image/icon-success.png');
                    $("#onlineConfigTip text").text('设备上线成功！');
                    $("#onlineConfigTip text").addClass('success');
                }).catch(function (e) {
                    console.error(e.toString());
                    alert(undefined, e.toString());

                    checking = false;
                    $("#onlineConfigTip img").attr('src', './image/icon-fail.png');
                    if (e.toString().match("用户名") != null || e.toString().match("密码") != null) { // 用户名或密码错误
                        $("#onlineConfigTip text").text('工具连接不上设备！');
                    } else {
                        $("#onlineConfigTip text").text('设备上线失败！');
                    }
                    $("#onlineConfigTip text").addClass('fail');
                    $("#onlineConfigProgress").append('<p class="fail">' + e + '</p>');
                    $('#onlineConfigProgress').scrollTop($('#onlineConfigProgress')[0].scrollHeight); // 滚动条置底
                });
            });
        }

        function initDom() {

        }

        function resize() {

        }

        function initGlobalEvent() {
            global.exitPageCallback.exitFun = function() {
                if (checking) {
                    alert(undefined, "正在检测中，请稍候…");
                    return false;
                } else {
                    return true;
                }
            }
        }
    }
    exports.init = init;
});