/**
 * File:        function.js
 *
 * JS 函数集
 *
 * @package     基础类库
 * @version     1.0 
 */

/**
 * 获取元素句柄
 * @param objName:	元素名称
 * @return	resource
 */
function GetObj(objName){
  var v;
  v = document.getElementById(objName);
  if(v == null)
  {
    var e1 = document.getElementsByName(objName);
    v = e1[0];
    if(v == null)
    {
      v = document.all(objName);
    }
  }
  if(v == null)
  {
    alert( 'cannot find ' + objName + ' ! ' );
  }
  return eval(v);
}

/**
 * 去除字符串前后的空格
 * 使用方法:   str.trim();
 * @return string
 */
String.prototype.trim = function()
{
// 用正则表达式将前后空格
// 用空字符串替代。
	return this.replace(/(^\s*)|(\s*$)/g, "");
}

/**
 * 精确统计字符串字节数
 *
 * return	integer
 */
String.prototype.ByteCount = function()
{
	txt = this.replace(/(<.*?>)/ig,'');
	txt = txt.replace(/([\u0391-\uFFE5])/ig, '11');
	var count = txt.length;
	return count;
}

/**
 * 检测字符串是否满足EMAIL地址格式
 *
 * @param str:	string
 *
 * @return	bool
 */
function is_email(str)
{
	var reg_email = /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/;
	if(!reg_email.test(str.trim()))
	{
		return false;
	}
	return true;
}

/**
 * 检测字符串是否是数字字符串
 *
 * @param str:	string
 *
 * @return	bool
 */
function is_plus(str)
{
	var reg = /^\d+$/;
	return reg.test(str.trim());
}

/**
 * 检测字符串是否是数字
 *
 * @param str:	string
 *
 * @return	bool
 */
function is_number(str, plus)
{
	if(plus)
	{
			var reg = /^\d+(.\d+)?$/;
	}
	else
	{
			var reg = /^-?\d+(.\d+)?$/;
	}
	return reg.test(str);
}

/**
 * 检测字符串是否有效
 *
 * @return	bool
 */
String.prototype.avail = function()
{
	str = this.trim();
	if(str == '' || str == 0)
	{
		return false;
	}
	return true;
}

/**
 * 隐藏/显示某个元素
 * @param itemId: 元素name或者ID
 */
function switch_display(itemId, imgid, open_icon, close_icon)
{
	if(GetObj(itemId).style.display == 'none')
	{
		GetObj(itemId).style.display = "block";
		if(imgid != '' && imgid != null)
		{
			document.images[imgid].src = open_icon;
		}
	}else
	{
		GetObj(itemId).style.display = "none";
		if(imgid != '' && imgid != null)
		{
			document.images[imgid].src = close_icon;
		}
	}
}//end function

/**
 * 精确截取字符串
 * @param start:	开始位置
 * @param offset:	截取的长度
 */
String.prototype.substr = function(start, offset)
{
		var r = '';
		for(i = start; i < this.length; i++)
		{
			if((offset - r.ByteCount() < 2) && this.substring(i, i+1) > '\u0391' && this.substring(i, i+1) < '\uFFE5')
			{
					return r;
			}
			r = r + this.substring(i, i+1);
			if(r.ByteCount() >= offset)
			{
				return r;
			}
		}
}//end function

/**
 * @param item object
 * 
 * 统计复选框被选择的个数
 */
function CheckedCount(item)
{
	var sum = 0;
	for(var i =0; i < item.length; i++)
	{
		if(item[i].checked)
		{
			sum++;
		}
	}
	return sum;
}//end function

/**
 * @param item object
 * 
 * 检查复选框或者单选框是否被选中
 */
function IsChecked(item)
{
	for(var i =0; i < item.length; i++)
	{
		if(item[i].checked)
		{
			return true;
		}
	}
	return false;
}//end function

function getTop(d){
	var s_el=0;
	el=d;
	while(el){
	s_el=s_el+el.offsetTop;
	if(el.offsetParent){s_el-=el.scrollTop;}
	el=el.offsetParent;}
	return s_el;
}
function getLeft(d){
	var s_el=0;
	el=d;
	while(el){
	s_el=s_el+el.offsetLeft;
	if(el.offsetParent){s_el-=el.scrollLeft;}
	el=el.offsetParent;}
	return s_el;
}
