/* 去除字符串两边的空白字符 */
String.prototype.Trim = function()
{
	return this.replace(/(^\s*)|(\s*$)/g, "");
}


/* 生成重复指定次数的字符串 */
String.prototype.Repeat = function(num)
{
	if (arguments.length == 0)
	{
		alert("必须给 Repeat 函数指定一个参数");
		return;
	}
	if (typeof(num) != "number" || num < 0)
	{
		alert("必须给 Repeat 函数指定一个正整数参数");
		return;
	}

	num = parseInt(num);
	var result = "";
	for (var i = 0; i < num; i++)
		result += this;
	return result;
}

function $(id)
{
	if (typeof(id) == "string")
	{
		var e = document.getElementById(id);
		if (!e)
			e = document.getElementsByName(id)[0];
	}
	else
		return id;
	return e;
}

function $v(id)
{
	return $(id).value;
}


/*
 随机取出 v1 到 v2 之间(包括 v1 和 v2)的一个整数
 v1 -> 正整数
 v2 -> 正整数, 可省略, 默认为 0
*/
Random = function(v1, v2)
{
	var ok = true;
	if (arguments.length == 1)
		if (typeof(v1) != "number" || v1 < 0) ok = false;
	else if (arguments.length == 2)
		if (typeof(v1) != "number" || v1 < 0 || typeof(v2) != "number" || v2 < 0) ok = false;
	else
		ok = false
	if (!ok)
	{
		alert("Random 函数需要一个或两个正整数参数");
		return false;
	}
	if (arguments.length == 1)
	{
		var v2 = v1;
		v1 = 0;
	}
	else
	{
		var temp = Math.max(v1, v2);
		v1 = Math.min(v1, v2);
		v2 = temp;
	}
	return Math.floor(Math.random() * (Math.floor(v2 - v1) + 1)) + v1;
}


/*
 获取元素的绝对坐标
 IE 也可以使用 getBoundingClientRect 函数
 返回结果: {top, left, width, height}
*/
function GetAbsoluteLocation(element)
{
	if (arguments.length != 1 || element == null)
		return null;
	var elmt = element;
	var offsetTop = elmt.offsetTop;
	var offsetLeft = elmt.offsetLeft;
	var offsetWidth = elmt.offsetWidth;
	var offsetHeight = elmt.offsetHeight;
	while(elmt = elmt.offsetParent)
	{
		if (elmt.style.position == 'absolute' || elmt.style.position == 'relative'
			|| (elmt.style.overflow != 'visible' && elmt.style.overflow != '' ))
			break;
		offsetTop += elmt.offsetTop;
		offsetLeft += elmt.offsetLeft;
	}
	return {top: offsetTop, left: offsetLeft, width: offsetWidth, height: offsetHeight};
}


/*
 根据传递的正则表达式验证值
 name -> 被验证的页面元素的名称(应该保证这个名称和所有的id不一样)
 re -> 验证元素值的正则表达式
 description -> 验证失败显示提示信息时对这个元素的称呼
 required -> 是否是必填项

 常用正则表达式
 汉字 [\u4E00-\u9FA5]
 全角字母和数字 [\u0030-\u0039]|[\u0041-\u007A]|[\uFF10-\u0019]|[\uFF21-\uFF5A]
*/
function CheckFormat(name, re, description, required)
{
	if (typeof(name) == "string") var e = $(name);
	if (!e) return true;

	if (typeof(description) == "undefined") description = "此处";
	if (typeof(required) == "undefined") required = true;

	var type = re;
	if (typeof(re) == "string")
	{
		switch (re)
		{
			case "" : re = /^.+$/m; break;
			case "email" : re = /^[\.\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/; break;
			case "zipcode" : re = /^\d{6}$/; break;
			case "telephone" : re = /^[\d\(\)\-,;: ]{7,}$/; break;
			case "date" : re = /^(\d{4})(-|\/)(\d{1,2})\2(\d{1,2})$/; break;
			case "username" : re = /^[a-zA-z][a-zA-z0-9_]{3,}$/; break;
			case "password" : re = /^.{6,}$/; break;
		}
	}

	if (required)
	{
		if (e.value == "")
		{
			alert("必须填写 " + description);
			try {e.focus();} catch(e) {}
			return false;
		}
	}
	else
		if (e.value == "") return true;

	if (!re.test(e.value))
	{
		if (type == "username")
			alert(description + " 必须以字母开始并以字母、数字和下划线组成, 且长度不能小于 4");
		else if (type == "password")
			alert(description + " 长度不能小于 6 个字符");
		else if (type == "date")
			alert(description + " 的格式不正确 (1949-10-01)")
		else
			alert(description + " 不正确");
		try {e.focus();} catch(e) {}
		return false;
	}
	else
		return true;
}

/*
 按比例调整图象的大小
 eImg -> IMG 元素
 width -> 调整后的宽度
 height -> 调整后的高度
 imgBorder -> 图片边框
*/
function AdjustImage(eImg, imgWidth, imgHeight, imgBorder)
{
	var args = arguments.length;
	if (args < 3)
	{
		alert("AdjustImage 的参数不正确, 至少三个参数");
		return;
	}
	if (args >= 4) eImg.style.borderWidth = imgBorder;
	var image = new Image();
	image.onload = function()
	{
		eImg.removeAttribute("width");
		eImg.removeAttribute("height");
		eImg.style.width = "";
		eImg.style.height = "";
		if (this.height / this.width > imgHeight / imgWidth)
			eImg.style.height = Math.min(this.height, imgHeight);
		else
			eImg.style.width = Math.min(this.width, imgWidth);
	}
	image.src = eImg.src;
}


/* 转到指定页 */
function GoToPage(page)
{
	if (/^\d+$/.test(page))
	{
		var h = location.href;
		if (h.indexOf("?") == -1)
			h += "?page=1";
		else
		{
			if(h.indexOf("page=") == -1)
				h += "&page=1";
		}
		location.href = h.replace(/page=[0-9]*/ig, "page=" + page);
	}
	else
		alert("页号不正确");
}


/* 设置下拉列表框的值 */
function SetSelectValue(e, value)
{
	if (typeof(e) == "string")
		e = document.getElementsByName(e)[0];
	if (e && value)
		e.value = value;
}


function CheckSearchInfo()
{
	var key = document.getElementsByName("searchkey")[0];
	if (key.value.Trim() == "")
	{
		alert("请输入搜索内容");
		key.focus();
		return false;
	}
}