/**
 * File:        global_function.js
 *
 * JS 函数集
 *
 * @copyright   SINA.COM
 * @author      shangyong Gao <shangyong@staff.sina.com.cn>
 * @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);
}
$=GetObj;

/**
 * 去除字符串前后的空格
 * 使用方法:   str.trim();
 * @return string
 */
String.prototype.trim = function()
{
	// 用正则表达式将前后空格
	// 用空字符串替代。
	//return this.replace(/(^\s*)|(\s*$)|　/g, "");
	return this.replace(/^(\s|\ue5e5|\u3000)+|(\s|\ue5e5|\u3000)+$/g, "");
}

/**
 * 精确统计字符串字节数
 *
 * return	integer
 */
String.prototype.ByteCount = function(trim)
{
	var text = this.replace(/(<.*?>)/ig,'');
	if(trim == true)
	{
		text = this.replace(/[\s\t\r\n]/g, '');
	}
	text = text.replace(/([\u0391-\uFFE5])/ig, '11');
	return text.length;
}

/**
 * 精确统计字符串字节数
 *
 * return	integer
 */
String.prototype.ByteCountPro = function()
{
	var txt = this.replace(/[\s\r\n　]/ig,'');
	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_mobile(str)
 {
	var reg_mobile = /^1[0-9]\d{9}$/gi;
	if (!reg_mobile.test(str.trim()))
	{
		return false;
	}
	return true;
 }

function is_email(str)
{
	var email = str.trim();
	var reg = /^\w+([\w\-_\.]*)?@\w+([\w\-_]*)?\.\w+([\w\-_\.]*)?\w$/i;
	if(!reg.test(email))
	{
		return false;
	}
	if (email.match(/@/ig).length > 1)
	{
		return false;
	}
	return true;
}

function is_phone(str)
{
	var reg = /^(\+?\d{1,4}[ \-]{0,2})?(\(? ?\d{2,4} ?\)?[ \-]{0,2})?\d{7,8}([ \-]{0,2}\d{1,4})?$/;
	if (!reg.test(str.trim()))
	{
		return false;
	}
	return true;
}


function check_length(item, name, min, max)
{
	var l = item.value.trim().ByteCount();
	if (min !='' && min >0 && l < min)
	{
		alert(name + "的长度不能少于" + min + "个字符");
		item.focus();
		return false;
	}
	if (max !='' && max >0 && l > max)
	{
		alert(name + "的长度不能多于" + max + "个字符");
		item.focus();
		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);
}

/**
 * 检测字符串是否是整数字符串
 *
 * @param str:	string
 *
 * @return	bool
 */
function is_int(str)
{
	var reg = /^[1-9]\d*$/;
	return reg.test(str);
}

/**
 * 检测字符串是否为汉字或字符形式
 *
 * @param str:	string
 *
 * @return	bool
 */
function is_hz_char(str, space)
{
	var reg_char = /^[A-Za-z0-9_\-\|\u4e00-\u9fa5]+$/;
	if(space == true)reg_char = /^[A-Za-z0-9_\s\-\|\u4e00-\u9fa5]+$/;
	//var reg_char = /(\W|[^\u4e00-\u9fa5])+/g;
	if(!reg_char.test(str))
	{
		return false;
	}
	return true;
}

/**
 * 检测字符串是否含有重复长度的字符
 *
 * @param str:	string
 * @param max_length:	int
 *
 * @return	bool
 */
function valid_repeat_chars(str, max_length)
{
	var reg = new RegExp("\\w{" + max_length + ",}");
	if(reg.exec(str) == null)
	{
		return true;
	}
	return false;
}

/**
 * 检测字符串是否有效
 *
 * @return	bool
 */
String.prototype.avail = function()
{
	str = this.trim();
	if(str == '' || str == 0 || str == NULL)
	{
		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 = "";
		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

String.prototype.cn_substr = function(start, len, replace)
{
	var s = this.replace(/([\u4e00-\u9fa5])/g,"\xff\$1");
	if(s.length > len)
	{
		if(s.length == this.length)return this.substring(start, len);
		return (s.substring(start, len).replace(/\xff/g, '') + replace);
	}
	return this;
	//return s.substring(start, len).replace(/\xff/g, '');
}

/**
 * @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 setCheckedAll(name, checked)
{
	var obj = document.getElementsByName(name);
	for(i = 0; i < obj.length; i++)
	{
		obj[i].checked = checked;
	}
}

/**
 * 返回单选按钮的值
 *
 * @param object	object	元素名称
 *
 * @return	none
 */
function get_sel_value(object)
{
	var object = document.getElementsByName(object);
	for(i = 0; i < object.length; i++)
	{
		if(object[i].checked)
		{
			return object[i].value;
		}
	}
	return null;
}

//输入框字数统计
//field,输入框对象， showtext,显示框对象, maxlimit,最大字数限制
function textCounter(field, numtext, maxlimit) {
	if (field.value.length > maxlimit) 
		field.value = field.value.substring(0, maxlimit); 
	
		numtext.innerHTML = maxlimit - field.value.length;
}

function countText(field, numtext, maxlimit) {
	var txt = field.value;
	//txt = txt.replace(/(<.*?>)/ig,'');
	//txt = txt.replace(/[\s\t\r\n]/g, '');
	var len = txt.ByteCountPro();
	/*if (len > maxlimit)
	{
		field.value = field.value.cn_substr(0, maxlimit); 
	}*/
	//document.getElementById(numtext).innerHTML = Math.ceil(len / 2);
	document.getElementById(numtext).innerHTML = len;
}

//过滤特殊字符，标题，名称用
function check_special_chr(val)
{
	if((/>|<|,|\[|\]|\{|\}|\?|\/|\+|=|\||\'|\\|\"|:|;|\~|\!|\@|\#|\*|\$|\%|\^|\&|\(|\)|`/i).test(val))
	{
		return false
	}
	return true;
}

//编码特殊字符，标题，名称用
function encode_special_chr(val)
{
	return val.replace(/>|<|,|\[|\]|\{|\}|\?|\/|\+|=|\||\'|\\|\"|:|;|\~|\!|\@|\#|\*|\$|\^|\&|\(|\)|`/g,function(val){return "%"+(val.charCodeAt(0).toString(16)).toUpperCase();});
}
function html_special_chr(url)
{
	return url.replace(/>|<|\`|\"|\\/g,function(val){return "%"+(val.charCodeAt(0).toString(16)).toUpperCase();});
}

//转化为编码方式
function convert_to_html(str)
{
    //alert(str);
    //单引号、双引号不用进行转义可以直接显示
    //str = str.replace(/\'/g,"&#039;");
    //str = str.replace(/\"/g,"&quot;");
    str = str.replace(/&/g,"&amp;");
    str = str.replace(/</g,"&lt;");
    str = str.replace(/>/g,"&gt;");
    return str;   
}

function addslashes(str)
{
    //str = str.replace(/\'/g,"\\\'");
    str = str.replace(/\"/g,"&quot;");
    return str;
}

function Copy(cont){
	if(window.clipboardData){
		return window.clipboardData.setData("Text", cont);
     }else if(navigator.userAgent.indexOf("Opera") != -1){
		window.location = cont;
     }else if(window.netscape){
          try {
               netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
          } catch (e) {
               alert("如果您想与好友分享，请复制地址栏中链接地址，发送给好友！");
          };
          var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
          if (!clip){return};
          var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
          if (!clip){return};
          trans.addDataFlavor('text/unicode');
          var str = new Object();
          var len = new Object();
          var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
          var copytext = cont;
          str.data = copytext;
          trans.setTransferData("text/unicode",str,copytext.length*2);
          var clipid = Components.interfaces.nsIClipboard;
          if (!clip){return false};
          clip.setData(trans,null,clipid.kGlobalClipboard);
          return true;
     }
}
