document.write("<script src='resources/lib/spin/spin.min.js'></script>");
document.write("<link rel='stylesheet' href='resources/css/alert.css'>");

/**
 * 获取链接参数
 * 
 * @param key
 *            参数的键
 * @returns 参数的值
 */
function getParameter(key) {
	var reg = new RegExp("(^|&)" + key + "=([^&]*)(&|$)");
	var r = window.location.search.substr(1).match(reg);
	if (r != null)
		return decodeURI(r[2]);
	return null;
};

/**
 * 休眠一段时间
 * 
 * @param millsecond
 *            休眠时长（毫秒）
 */
function sleep(millsecond) {
	for (var d = Date.now(); Date.now() - d <= millsecond;)
		;
}

// 对Date的扩展，将 Date 转化为指定格式的String
Date.prototype.format = function(fmt) { // author: meizz
	if (!fmt) {
		// 默认格式
		fmt = "yyyy-MM-dd HH:mm:ss:S";
	}
	var o = {
		"M+" : this.getMonth() + 1, // 月份
		"d+" : this.getDate(), // 日
		"H+" : this.getHours(), // 小时
		"m+" : this.getMinutes(), // 分
		"s+" : this.getSeconds(), // 秒
		"q+" : Math.floor((this.getMonth() + 3) / 3), // 季度
		"S" : this.getMilliseconds()
	// 毫秒
	};
	if (/(y+)/.test(fmt))
		fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "")
				.substr(4 - RegExp.$1.length));
	for ( var k in o)
		if (new RegExp("(" + k + ")").test(fmt))
			fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k])
					: (("00" + o[k]).substr(("" + o[k]).length)));
	return fmt;
}

/**
 * 上传文件
 * 
 * @param option
 *            上传选项
 */
function upload(option) {
	// 文件选择框
	var input = document.getElementById("inputFile");
	if (!input) {
		input = document.createElement("input");
		input.setAttribute("id", "inputFile");
		input.setAttribute("type", "file");
		input.setAttribute("name", "file");
		input.setAttribute("hidden", "true");
	}
	if (option.multiple) {
		input.setAttribute("multiple", true);
	}
	document.body.appendChild(input);
	input.click();
	// 选中文件
	input.onchange = function() {
		if (!input.value) {
			return;
		}
		// 验证文件大小
		for (var i = 0; i < input.files.length; i++) {
			var file = input.files[i];
			console.log("selected... " + file.name);
			if (option.maxSize && file.size > option.maxSize * 1024 * 1024) {
				alert(null, "单个文件大小不能超过" + option.maxSize + "MB");
				return;
			}
		}
		// 指定的参数
		var formData = new FormData();
		for (var i = 0; i < input.files.length; i++) {
			formData.append("file", input.files[i]);
		}
		if (option.params) {
			for ( var param in option.params) {
				formData.append(param, option.params[param]);
			}
		}
		var xhr = new XMLHttpRequest();
		xhr.open("POST", option.url);
		xhr.onreadystatechange = function() {
			// 上传完成
			if (xhr.readyState == 4) {
				if (xhr.status == 200) {
					if (option.success instanceof Function) {
						option.success(xhr.responseText);
					}
				} else {
					if (option.error instanceof Function) {
						option.error(xhr);
					}
				}
			}
		}
		// 展示加载动画
		if (option.showLoading) {
			option.showLoading();
		}
		// 上传进度
		xhr.upload.onprogress = function(event) {
			var progress = Math.floor(100 * event.loaded / event.total);
			if (option.onprogress instanceof Function) {
				option.onprogress(progress);
			}
		}
		xhr.send(formData);
		document.body.removeChild(input);
	}
}

/**
 * 显示正在载入的动画
 * 
 * @param spinner
 *            载入的动画
 * @param container
 *            动画所在的容器
 * @returns 动画
 */
function showLoading(spinner, container) {
	if (spinner) {
		return spinner;
	}
	var opts = {
		lines : 9 // The number of lines to draw
		,
		length : 17 // The length of each line
		,
		width : 10 // The line thickness
		,
		radius : 26 // The radius of the inner circle
		,
		scale : 1 // Scales overall size of the spinner
		,
		corners : 1 // Corner roundness (0..1)
		,
		color : '#000' // #rgb or #rrggbb or array of colors
		,
		opacity : 0.5 // Opacity of the lines
		,
		rotate : 0 // The rotation offset
		,
		direction : 1 // 1: clockwise, -1: counterclockwise
		,
		speed : 1 // Rounds per second
		,
		trail : 60 // Afterglow percentage
		,
		fps : 20 // Frames per second when using setTimeout() as a fallback
		// for CSS
		,
		zIndex : 2e9 // The z-index (defaults to 2000000000)
		,
		className : 'spinner' // The CSS class to assign to the spinner
		,
		top : '50%' // Top position relative to parent
		,
		left : '50%' // Left position relative to parent
		,
		shadow : false // Whether to render a shadow
		,
		hwaccel : false // Whether to use hardware acceleration
		,
		position : 'fixed' // Element positioning
	}
	return new Spinner(opts).spin(container);
}

/**
 * 关闭正在载入的动画
 * 
 * @param spinner
 *            载入的动画
 * @returns 动画
 */
function hideLoading(spinner) {
	if (spinner) {
		spinner.stop();
	}
	return null;
}

/**
 * 通知提示
 * 
 * @param container
 *            通知所在的容器
 * @param text
 *            通知的内容
 * @param time
 *            通知存在的时间
 */
function alert(container, text, time) {
	time = time || 3000;
	container = container || document.body;
	var div = document.getElementById('prompt');
	if (div) {
		container.removeChild(div);
	}
	div = document.createElement('div'), // 创建div对象
	span = document.createElement('span'); // 创建span对象
	div.id = 'prompt'; // div设置ID
	div.innerHTML = text; // 写入内容
	div.appendChild(span);
	container.appendChild(div);

	var timerShow = null, timerHide = null, timerRemove = null;

	// 显示提示窗口
	timerShow = setTimeout(function() {
		div.className = 'show'; // 添加show样式，使用CSS3属性显示弹窗
		clearTimeout(timerShow); // 清除定时器

		// 2秒钟后隐藏弹窗
		timerHide = setTimeout(function() {
			div.className = ''; // 清除show样式，使用CSS3属性隐藏弹窗
			clearTimeout(timerHide); // 清除定时器

			// 隐藏后删除对象
			timerRemove = setTimeout(function() {
				container.removeChild(div); // 删除对象
				clearTimeout(timerRemove); // 清除定时器
			}, 400);

		}, time);

	}, 100);

}