var dictUtils = {
	// 处理状态
	dealStateStr: {
		0: "尚未处理",
		1: "处理成功",
		2: "处理失败"
	},
	getDealStateStr: function(state) {
		return this.dealStateStr[state]
	}
}

function formatTime(time) {
	if (typeof time !== 'number' || time < 0) {
		return time
	}

	var hour = parseInt(time / 3600)
	time = time % 3600
	var minute = parseInt(time / 60)
	time = time % 60
	var second = time

	return ([hour, minute, second]).map(function(n) {
		n = n.toString()
		return n[1] ? n : '0' + n
	}).join(':')
}

function formatLocation(longitude, latitude) {
	if (typeof longitude === 'string' && typeof latitude === 'string') {
		longitude = parseFloat(longitude)
		latitude = parseFloat(latitude)
	}

	longitude = longitude.toFixed(2)
	latitude = latitude.toFixed(2)

	return {
		longitude: longitude.toString().split('.'),
		latitude: latitude.toString().split('.')
	}
}

var dateUtils = {
	UNITS: {
		'年': 31557600000,
		'月': 2629800000,
		'天': 86400000,
		'小时': 3600000,
		'分钟': 60000,
		'秒': 1000
	},
	humanize: function(milliseconds) {
		var humanize = '';
		for (var key in this.UNITS) {
			if (milliseconds >= this.UNITS[key]) {
				humanize = Math.floor(milliseconds / this.UNITS[key]) + key + '前';
				break;
			}
		}
		return humanize || '刚刚';
	},
	format: function(dateStr) {
		var date = this.parse(dateStr)
		var diff = Date.now() - date.getTime();
		if (diff < this.UNITS['天']) {
			return this.humanize(diff);
		}
		var _format = function(number) {
			return (number < 10 ? ('0' + number) : number);
		};
		return date.getFullYear() + '/' + _format(date.getMonth() + 1) + '/' + _format(date.getDate()) + '-' +
			_format(date.getHours()) + ':' + _format(date.getMinutes());
	},
	parse: function(str) { //将"yyyy-mm-dd HH:MM:ss"格式的字符串，转化为一个Date对象
		var a = str.split(/[^0-9]/);
		return new Date(a[0], a[1] - 1, a[2], a[3], a[4], a[5]);
	}
};

var mobileUtils = {
	// 移动
	isChinaMobile: /^134[0-8][0-9]{7}$|^(13[5-9]|14[4|7|8]|15[0|1|2|4|7|8|9]|16[5]|17[8]|18[2|3|4|7|8]|19[5|8])[0-9]{8}$/,
	// 联通
	isChinaUnion: /^(13[0-2]|14[0|5|6]|15[5-6]|16[6-7]|17[5-6]|18[5-6])[0-9]{8}$/,
	// 电信
	isChinaTelcom: /^(133|14[1|9]|15[3]|16[2]|17[3|7]|18[0|1|9]|19[1|3|9])[0-9]{8}|(1349)[0-9]{7}$/,
	// 虚拟运营商
	isVNO: /^(17[0-1])[0-9]{8}$/,

	checkMobile: function(telphone) {
		if (telphone.length > 0) {
			telphone = telphone.trim();
		} else {
			return this.setReturnJson(false, '请输入手机号');
		}

		if (telphone.length !== 11) {
			return this.setReturnJson(false, '手机号码长度不符');
		}

		if (this.isChinaMobile.test(telphone)) {
			return this.setReturnJson(true, '移动', {
				name: 'ChinaMobile'
			});
		} else if (this.isChinaUnion.test(telphone)) {
			return this.setReturnJson(true, '联通', {
				name: 'ChinaUnion'
			});
		} else if (this.isChinaTelcom.test(telphone)) {
			return this.setReturnJson(true, '电信', {
				name: 'ChinaTelcom'
			});
		} else if (this.isVNO.test(telphone)) {
			return this.setReturnJson(true, '虚拟运营商', {
				name: 'VNO'
			});
		} else {
			return this.setReturnJson(false, '手机号码不正确');
		}
	},
	setReturnJson: function(status, msg, data) {
		if (typeof status !== 'boolean' && typeof status !== 'number') {
			status = false;
		}
		if (typeof msg !== 'string') {
			msg = '';
		}
		return {
			'status': status,
			'msg': msg,
			'data': data
		};
	}
};

export {
	dictUtils,
	formatTime,
	formatLocation,
	dateUtils,
	mobileUtils
}
