Tea.context(function () {
	this.serverType = "httpProxy"
	this.tlsProtocolName = ""
	this.origins = []
	this.defaultAddresses = []

	this.success = NotifySuccess("保存成功", "/servers");

	this.fail = function (resp) {
		if (resp.errors != null && resp.errors.length > 0) {
			let isFiltered = false

			let that = this
			resp.errors.forEach(function (err) {
				if (err.param == "emptyDomain") {
					isFiltered = true
					teaweb.warn(err.messages[0], function () {
						that.$refs.serverNameBox.addServerName()
					})
				} else if (err.param == "emptyOrigin") {
					isFiltered = true
					teaweb.warn(err.messages[0], function () {
						that.addOrigin()
					})
				}
			})

			if (isFiltered) {
				return
			}
		}
		Tea.failResponse(resp)
	}

	this.changeServerType = function () {
		this.origins = []
		this.tlsProtocolName = ""
		this.addDefaultAddresses()
	}

	// 初始化调用
	this.$delay(function () {
		this.changeServerType()
	})

	this.addOrigin = function () {
		teaweb.popup("/servers/addOriginPopup?serverType=" + this.serverType, {
			height: "27em",
			callback: function (resp) {
				this.origins.push(resp.data.origin);
			}
		})
	}

	this.removeOrigin = function (index) {
		this.origins.$remove(index)
	}

	this.addDefaultAddresses = function () {
		// 默认绑定的端口地址
		this.defaultAddresses = []
		if (this.serverType == "httpProxy" || this.serverType == "httpWeb") {
			this.defaultAddresses.push({
				"host": "",
				"portRange": "80",
				"protocol": "http"
			})
			this.defaultAddresses.push({
				"host": "",
				"portRange": "443",
				"protocol": "https"
			})
			this.tlsProtocolName = "https"
		}
	}

	/**
	 * 用户相关
	 */
	this.userId = 0
	this.plans = []

	this.changeUserId = function (v) {
		this.userId = v

		if (this.userId == 0) {
			this.plans = []
			return
		}

		this.$post("/servers/users/plans")
			.params({
				userId: this.userId
			})
			.success(function (resp) {
				this.plans = resp.data.plans
			})
	}

	/**
	 * 证书相关
	 */
	this.findServerNames = function () {
		return this.$refs.serverNameBox.allServerNames()
	}
})