

//=======================================================================================
// JavaScript 公共类
//
// 最后更新: 2009-05-20
//=======================================================================================

var debug = false; //调试

function set_debug( _debug ) {
	debug = _debug;
}

//传入参数：网址（绝对或相对路径）字符串、object参数对象、完成后调用的函数名、调用模式（true同步）
function json_post( str_url, param_obj, fun_onComplete, b_asyn  ) {

	//构造传入的参数
	//param_obj = new Object();
	//param_obj.login_name = $F('key_a');

    //将对象转换为json编码，同时避免特殊HTML符号
	var json = param_obj.toJSONString();
	json = encodeURIComponent( json ); 

	var pars = 'param=' + json; 
	//alert( pars );

	var myAjax = new Ajax.Request(
		str_url,
		{
		method: 'post',
		parameters: pars,
		onComplete: function(t) {
			var tobj = t.responseText.evalJSON(true);
			fun_onComplete( tobj );
		},
		asynchronous:b_asyn, //同步提交
		on404: function(t) {
           alert('错误：访问服务器失败，请稍等再试!');
		},
		onFailure: function(t) {
			alert( '错误：访问服务器错误：' + t.status + ' -- ' + t.statusText );
		}
		}
	);
}

//打开高级查询
//需要传入js文件绝对路径，如 /t/test.js
function openHighQuery( js_file ) {

	var status = 'scrollbars=no; dialogHeight: 500px; dialogWidth: 850px; edge: Raised; center: Yes; help: No; resizable:	Yes; status: No; ';
	var url = "/highquery/highquery.jsp?js=" + js_file;
	
	if( debug ) {
		window.open( url );
		return false;
	}
	else {
		// 必须返回值(由编号和描述组成的数组)
		var re = window.showModalDialog( url, null, status);

		if( debug && re ) {
			alert( re[0] );
			alert( re[1] );
			alert( re[2] );
			alert( re[3] );
		}
		return re;
	}
}


//上传文件，返回上传文件的参数
function upload_file( file_id, file_mutl ) {

	if( file_id == null || file_id == '' ) {
		alert( '附件编号为空，未通过js程序检查!' );
		return false;
	}

	var width = 520;
	var height = 180;

	if( file_mutl == "Y" ) { //多文件上传
		width = 560;
		height = 280;
	}
	else {
		file_mutl = "N";
	}

	var re = openWindow( '上传文件', "/common/upload/upload.jsp?file_mutl=" + file_mutl 
		+ "&file_id=" + file_id, width, height );
	if( re == null ) re = false;

	/*
	if( re && debug ) {
		alert( re.file_name );
		alert( re.save_name );
		alert( re.file_remark );
	}
	*/

	return re;
}

//取文件扩展名
function get_file_ext(s)
{
	var i = s.lastIndexOf(".");
	if(i < 0) return "";
	return s.substring(i+1) ;
}

//判断文件是否为图片
function is_img( fname ) {

	fname = fname.toLowerCase();
	var fext = get_file_ext( fname );
	if( ',jpg,jpeg,gif,bmp,png,ico'.indexOf( fext ) == -1 ) return false;
	return true;

}

//=======================================================================================
// 系统操作
//=======================================================================================

//获取一个对象所在的表格的行下标
function getTableCurRowNo(elm)
{
	var idx;
	try {
		idx = elm.parentNode.parentNode.rowIndex;
		idx --; //从0开始算下标
	}
	catch (e) {
		idx = -1;
	}
	return idx;
}


//查看网页源码
function view_source() {
	clipboardData.setData("text",document.documentElement.outerHTML);
}

//添加系统onload事件
function addOnloadEvent( v ) {
 if(window.onload==null){
	window.onload=v;
 }else{
  eval("wtempfunction="+window.onload.toString());
  window.onload=function(){wtempfunction();v();}
 }
}


//获取当前路径
function getCurrPath() {
	var p = document.location.pathname;
	var ip	= p.lastIndexOf( "/" );
	if (ip != -1 &&	ip < p.length )	{
		p= p.substr( 0, ip+1 );
	}
	return p;
}


//获取网址中的参数
function get_param(url, paras){ 
	var paraString = url.substring(url.indexOf("?")+1,url.length).split("&");  
	var paraObj = {}  
	for (i=0; j=paraString[i]; i++){  
		paraObj[j.substring(0,j.indexOf("=")).toLowerCase()] = j.substring(j.indexOf("=")+1,j.length);  
	}  
	var returnValue = paraObj[paras.toLowerCase()];  
	if(typeof(returnValue)=="undefined"){  
		return "";  
	}else{  
		return returnValue;  
	}  
} 

//获取网址中的参数
function get_url_param(paras){ 
	var url = location.href;  
	var paraString = url.substring(url.indexOf("?")+1,url.length).split("&");  
	var paraObj = {}  
	for (i=0; j=paraString[i]; i++){  
		paraObj[j.substring(0,j.indexOf("=")).toLowerCase()] = j.substring(j.indexOf("=")+1,j.length);  
	}  
	var returnValue = paraObj[paras.toLowerCase()];  
	if(typeof(returnValue)=="undefined"){  
		return "";  
	}else{  
		return returnValue;  
	}  
} 

//获取上传路径中的文件名
function get_path_filename( str1 ){   
	var regstr=/\\/;   
	var regresult=new RegExp(regstr)   
	var sss=str1.split(regresult,'100');   
	var need=sss[sss.length-1];   
	return need;
}  


//毫秒级延时
function delay(gap)	{
	var then,now;
	then=new Date().getTime();
	now=then;
	while((now-then)<gap) {
		now=new Date().getTime();
	}
}

//获取当前文档id 对象
function getObject(	objName	) {
	if(	document.getElementById( objName ) != null )
		return	document.getElementById( objName );
	else
		return	document.all[ objName ];
}

//取鼠标所在位置的对象
function getPointObj()
{
    try{
        oElement = document.elementFromPoint(event.x,event.y);
    }
    catch(e)
    {}
    return oElement;
}

//获取一个表格在页面的绝对坐标值
//例 table border="1" cellpadding="0" cellspacing="0" width="100" id="T1" onclick="alert(getIE(this));">
function getIE(obj){
   var t=obj.offsetTop - obj.parentElement.scrollTop;
   var l=obj.offsetLeft - obj.parentElement.scrollLeft;
   while(obj=obj.offsetParent){
      t+=obj.offsetTop - obj.parentElement.scrollTop;
      l+=obj.offsetLeft - obj.parentElement.scrollLeft;
   }
   return t+','+l;
}




//=======================================================================================
// 字符串操作
//=======================================================================================

//分隔符，用于下拉选择框中，隔开所有的值，与后台JBS类对应
var	G_FG = JS_FG = '○';

//去掉前后空格
function trim(oldStr) {
	return oldStr.replace(/^\s+/,'').replace(/\s+$/,'');
}

//去掉左边的空格
function ltrim(oldStr) {
	return	oldStr.replace(/^\s+/,'');
}

//去掉右边的空格
function rtrim(oldStr) {
	return	oldStr.replace(/\s+$/,'');
}

//去掉所有空格
function delSpace( oldStr ) {
	return oldStr.replace( /[\s]+/g,'' );
}

//去掉指定字符
function delChar( oldStr, Char ) {
	var temp = "";
	oldStr = '' + oldStr;
	splitstring = oldStr.split( Char ); //双引号之间是个空格；
	for(i = 0; i < splitstring.length; i++)
		temp += splitstring[i];
	return temp;
}

//获取字符串长度（一个汉字按两个字符）
function getCnLen(oldStr) {
	return oldStr.replace(/[^\x00-\xff]/g,"**").length;
}

//去掉字符串中含有<a></a>之类的字符
function del_html_str( str ) {
	str=str.replace(/<(\w+)\s[^>]*>/g,"");
	str=str.replace(/<\S[^>]*>/g,"");

    return str;

   //取自keditor.js
   //str = str.replace(/<br[\s\/]{0,2}>/ig, "\r\n");
   //str = str.replace(/<.*?>/ig, "");
   //return str;
}

function del_html_str_five( str ){
	
	str=str.replace(/<(\w+)\s[^>]*>/g,"");
	str=str.replace(/<\S[^>]*>/g,"");

	str=str.substring(0,500);

    return str;

}

//含中文的字符串截取
function cn_left(str, len) {     
	if(!str || !len) { return ''; }      
	//预期计数：中文2字节，英文1字节     
	var a = 0;      
	//循环计数     
	var i = 0;      
	//临时字串     
	var temp = '';      
	for (i=0;i<str.length;i++) {
		if (str.charCodeAt(i)>255) {             
		//按照预期计数增加2             
		a+=2;         
	}         
	else {           
		a++;      
	}        
	//如果增加计数后长度大于限定长度，就直接返回临时字符串
	if(a > len) { return temp; }       
		//将当前内容加到临时字符串     
		temp += str.charAt(i);    
	}   
	//如果全部是单字节字符，就直接返回源字符串 
	return str;
}

//返回字符串最左边的len个字符，且不包含html字符
function cn_left_nohtml( str, len ) {
	var r = del_html_str( str );
	r = cn_left( r, len );
	return r;
}


//判断输入的字符串长度（一个汉字按两个字符）
//oldStr:数据 Strlength:长度
function strLenCheck(oldStr,Strlength, showErr)	{
	var len=getCnLen(oldStr);
	if ( len>Strlength	) {
		if( showErr == true ) {
			Alert( "输入长度不能超过 " + len + "字符,目前为 " + Strlength + "字符,请重新输入" );
		}
		return	false;
	}
	return	true;
}

//警告提示框, 长度大于0才弹出提示框
function Alert(	oldStr ) {
	if( oldStr != null && oldStr.length > 0 )
		alert( oldStr );
}


//设置焦点
function setDefFocus() {
	try
	{
		if(document.forms.length == 0) return;
		setFormDefFocus( document.forms[0] );
	}
	catch (e)
	{
	}

}

function setFormDefFocus( formObj ) {
  try
  {
	for(var i=0;i<formObj.elements.length;i++) {
		var oField = formObj.elements[i];
		//除外：只读，隐藏，屏弊
		if( ! oField.readOnly && oField.type != "hidden" && ! oField.disabled ) {
			oField.focus();
			break;
		}
	}
  }
  catch (e)
  {
  }


}


//不允许输入分号、单引号、双引号、逗号
//oldStr: 数据 flag	:是否允许字符串为空，1 可以为空	0 不能为空
function checkStrChar(oldStr,blank_flag,errormsg) {
	var	i=0;
	var chsymbol="\"\',\;";
	var tempStr=oldStr;
	if	((tempStr=="") && (blank_flag==0)) {
		Alert(""+errormsg+"");
		return false;
	}
	for(i=0;i<tempStr.length;i++) {
		if(chsymbol.indexOf(tempStr.charAt(i))>=0) {
			Alert(""+errormsg+"");
			return	false;
		}
	}
	return true;
}

//功能介绍：检查字符串的长度必须在最小与最大长度之内
//OBJ 检测字段名，minLength	最小长度,最大长度，errormsg	错误信息
//返回值：true/false
function checkStrLenArea( oldStr,minLength,maxLength, errormsg ) {
	var i,sum;
	sum=0;
	var strTemp=oldStr;
	for(i=0;i<strTemp.length;i++) {
		if	((strTemp.charCodeAt(i)>=0)	&& (strTemp.charCodeAt(i)<=255))
			sum=sum+1;
		else sum=sum+2;
	}
	if ((sum<minLength)||(sum>maxLength))	 {
		Alert(""+errormsg+"");
		return false;
	}
	return true;
}


//获取下拉菜单文本,noIdx可以为0,1,2用逗号分隔，如果选择该项则返回空
function getSelectText( objName ) {
	var idx = objName.selectedIndex; //选择项
	if( idx != -1 )
		return objName.options[idx].text;
	else
		return "";
}

//获取下拉菜单值,noIdx可以为0,1,2用逗号分隔，如果选择该项则返回空
function getSelectValue( objName, noIdx ) {
	var idx = objName.selectedIndex; //选择项
	noIdx = "," + noIdx;
	var chk = "," + idx;
	if( noIdx.indexOf(chk) == -1 )
		return objName.options[idx].value;
	else
		return "";
}

//清空查询form中的所有参数
function form_param_clear( objForm ) {

	for ( var i=0; i<objForm.elements.length; i++) {

		var oField = objForm.elements[i];

		if( ! oField.readOnly && oField.type != "hidden") {//除外：只读，隐藏
			switch (oField.type) {
				case "select-one":
					oField.selectedIndex = 0;
					break;
				case "select-multiple":
					for ( var j=0; j<oField.length; j++ ) oField.options[j].selected = false;
					break;
				case "checkbox":
				case "radio":
					for ( var j=i; j<objForm.elements.length; j++ ) {
						if ( objForm.elements[j].name == oField.name ) objForm.elements[j].checked = false;
					}
					break;
				case "button":
				case "submit":
					break;
				default:
					oField.value ="";
					break;
			}
		}

	}

	//设置焦点
	setFormDefFocus( objForm );
}

//=======================================================================================
// 数字操作
//=======================================================================================

function Int( num ) {
	if( isNumber( num ) ) {
		return parseInt( num );
	}
	return 0;
}

function Float( num ) {
	if( isNumber( num ) ) {
		return parseFloat( num );
	}
	return 0.0;
}

//保留小数点精度(四舍五入)
//oldData：原数据  precision：保留小数位数
function numFixed(oldData,precision) {
	var t_str = oldData.toString();
	var a = t_str.indexOf(".");
	if(a	>= 0) {
		var	diff=t_str.length-(t_str.lastIndexOf(".")+1);
		if(diff<=precision) {
			for(var	i=0;i<precision-diff;i++) t_str=t_str+"0";
		} else {
			t_str=t_str.substring(0,t_str.indexOf(".")+1+precision+1);
			var lastNum=parseInt(t_str.substring(t_str.length-1,t_str.length));
			t_str=t_str.substring(0,t_str.length-1);
			if(lastNum>=5) {
				var newData=parseInt(t_str.substring(0,t_str.indexOf("."))+t_str.substring(t_str.indexOf(".")+1,t_str.length));
				newData=newData+1;
				t_str=newData.toString();
				t_str=t_str.substring(0,t_str.length-precision)+"."+t_str.substring( t_str.length-precision,t_str.length);
			}
		}
	} else	{
		t_str=t_str+".";
		for(var i=0;i<precision;i++)
			t_str=t_str+"0";
	}
	return t_str;
}

//取一个浮点数的整数部分
function getZhengShu( v1 ) {
	var p1	= v1.indexOf( "." );
	if( p1	== -1 )
		p1 = v1.length;
	return v1.substr( 0, p1	);
}

//取一个浮点数的小数部分
function getXiaoShu( v1	) {
	var	p1 = v1.indexOf( "." );
	if(	p1 == -1 )
		return "";
	return v1.substr(	p1+1, v1.length-p1-1 );
}

//无小数点正数值比较大小
function chkNumZhengShu( v1, v2	) {
	var	p1 = v1.length;
	var	p2 = v2.length;
	if(	p1 > p2	)
		return 1;
	if(	p1 < p2	)
		return -1;
	if( v1	> v2 )
		return 1;
	if( v1	< v2 )
		return -1;
	return 0;
}

//无小数点小数比较大小
function chkNumXiaoShu(	v1,	v2 ) {
	var p1 =	v1.length;
	var p2 =	v2.length;
	var len = p1	- p2;
	if( len <	0 )	len	= len *	-1;
	var	k =	"";
	for( var i=0; i<len; i++ ) k +=	" ";
	if( p1	> p2 ) v2 += k;
	if(	p1 < p2	) v1 +=	k;
	if( v1 >	v2 ) return	1;
	if( v1 <	v2 ) return	-1;
	return 0;
}

//判断是否为数字
//参数:	字符串数字
function isNumber( num ) {

	if(	(num==null)	|| (num.length == 0) ) return false;

	var	n =	trim( "" + num );

   //判断另一种可能,像身份证,为18位的数字
   var ValidChars =	"-0123456789.";
   var Char;
   var nd =	0;
   for(	var	i=0; i<n.length; i++) {
		Char = n.charAt(i);
		if(	ValidChars.indexOf(Char) ==	-1 ) {
			return false;
		}
		if(	Char ==	'-'	&& i > 0 ) return false; //减号不在第一位
		if(	Char ==	'.'	) {
			if(	i == 0 || i	== ( n.length -1 ) ) return	false;	//小数点在最前或者最后
			if(	i >	0 && n.charAt(i-1) == '-' )	return false;	//小数点紧跟在-号后面
			nd ++;
		}
	}
	//小数点不唯一
	if(	nd > 1 ) return	false;

	return true;
}

//比较两个数字v1,v2大小
function chkNumberMax( v1, v2 )	{
	if(	! isNumber(	v1 ) ||	! isNumber(	v2 ) ) return 0;
	if(	! isNumber(	v2 ) ) return 1;
	if(	! isNumber(	v1 ) ) return -1;

	v1 = trim( "" +	v1 );
	v2 = trim( "" +	v2 );

	var	f1 = v1.indexOf( '-' );
	var	f2 = v2.indexOf( '-' );

	//正数大于负数
	if(	( f1 ==	-1 ) &&	( f2 !=	-1 ) ) return 1;
	if(	( f1 !=	-1 ) &&	( f2 ==	-1 ) ) return -1;

	v1 = v1.replace( '-', '' );
	v2 = v2.replace( '-', '' );

	//比较整数
	var	a =	chkNumZhengShu(	getZhengShu(v1), getZhengShu(v2) );
	if(	a != 0 ) {
		if(	f1 != -1 ) a = a * -1;	//结果取反
		return a;
	}

	//比较小数
	var	b =	chkNumXiaoShu( getXiaoShu(v1), getXiaoShu(v2) );
	if(	b != 0 ) {
		if(	f1 != -1 ) b = b * -1;	//结果取反
		return b;
	}

	return 0;
}


//判断一个数字是否符合要求
//参数:	都以字符串形式传入
//		数字起始值,	数字终止值,	小数位数的最少位数,	小数位数的最多位数
//		如果传入""值,则对应的判断不起作用
//		例如传入的 min 为"", 则不判断数值的最小限制
//	1. checkNumber(	数字, "", "", 0, 0 );  判断是否整数, 小数位为0
//	2. checkNumber(	数字, "1", "250", 0, 2 ); 判断人的身高,	2位小数, 在1到250之间
//
//返回值: 返回""则表示正确,	否则返回错误信息

function checkNumber( num, min,	max, pointLenMin, pointLenMax )	{

	if(	! isNumber(	num	) )	{	//不是数字
		return "数量请填写数字";
	}

	if(	isNumber( min )	) {	//最小值判断
		if(	chkNumberMax( num, min ) ==	-1 ) {
			return "数值必须大于等于 " + min;
		}
	}
	if(	isNumber( max )	) {	//最小值判断
		if(	chkNumberMax( num, max ) ==	1  ) {
			return "数值必须小于等于 " + max;
		}
	}

	var	pn = trim( "" +	num	);
	var	pLen = getXiaoShu( pn ).length;

	if(	isNumber( pointLenMin )	) {	//最少小数位数判断
		if(	pLen < parseFloat(pointLenMin) ) {
			return "小数位数必须大于等于 " + pointLenMin;
		}
	}

	if(	isNumber( pointLenMax )	) {	//最大小数位数判断
		if(	pLen > parseFloat(pointLenMax) ) {
			return "小数位数必须小于等于 " + pointLenMax;
		}
	}

	return "";
}

//=======================================================================================
// FORM	操作
//=======================================================================================

//判断是否为EMAIL地址
function isEmail(aStr, aCanBeNull)
{
  if (isEmpty(aStr))
  {
	if (arguments.length > 1 &&	aCanBeNull == true)
	  return true;
  }
  else
  {
	var	lRegexp	= /\w+@\w+\.([\w\.]+)*\w+/;
	var	lMatchs	= aStr.match(lRegexp);
	if (lMatchs	== null	|| lMatchs.length == 0)
	  return false;
	var	lMatch = lMatchs[0];
	if (lMatch.length == aStr.length)
	  return true;
  }
  return false;
}

//判断网址是否正确
function isHttpURL(aStr, aCanBeNull) {
  if ( isEmpty(aStr)) {
	if (arguments.length > 1 &&	aCanBeNull == true)
	  return true;
  }
  else {
	var	lRegexp	= /http:\/\/[\w\.\%\/\-]+(\?[\w\=\-\%]+)?/i;
	var	lMatchs	= aStr.match(lRegexp);
	if (lMatchs	== null	|| lMatchs.length == 0)
	  return false;
	var	lMatch = lMatchs[0];
	if (lMatch.length == aStr.length)
	  return true;
  }
  return false;
}

//屏弊输入
function disableAllForm() {
	if(document.forms.length == 0) return;
	for( var i=0; i<document.forms.length; i++ )
		disableForm( document.forms[i] );
}


//屏蔽指定form内所有的输入修改
function disableForm( form_obj )
{
	if (document.all ||	document.getElementById) {

		for( var i=0; i<form_obj.length; i++ ) {
			var	eobj = form_obj.elements[i];
			//if( eobj.type == 'button' ) continue;

			if(	eobj.type == 'select-one' )	{
				eobj.disabled =	true;
			}
			else  {
				if(	eobj.length	> 1	) {
					for( var j=0; j<eobj.length; j ++ )
						eobj[j].disabled = true;
				}
				else {
					eobj.disabled =	true;
				}
			}
		}
	}
}

//隐藏页面按钮
function hideBtn( btn_name )
{
	var	sc = "if( document.all."+btn_name+"	!= null	) document.all."+btn_name+".style.display =	'none';";
	eval( sc );
}

//获取单选框用户选择的记录
function getRadioChoose( obj )
{
	var	rid	= "";
	if(	obj	!= null	)	 {
		if(	obj.length > 1 )	{
			for	(var i=0; i<obj.length;	i++	) {
				if ( obj[i].checked	)	{
					rid	= obj[i].value;
					break;
				}
			}
		}
		else  {
			if(	obj.checked	) rid =	obj.value;
		}
	}
	return rid;
}

//获取单选框组的选定值，没选返回""
function getRadioGroupValue(radioName){
    var obj=document.getElementsByName(radioName);
	return getRadioChoose( obj );
}


//获取多选框用户选择的记录
//参数, 窗体元素对象,分隔符(单引,双引,无)
function getCheckBoxChoose( obj, split )
{
	var	rid	= "";

	if(	obj	!= null	)	 {
		if(	obj.length > 1 )	{
			for	(var i=0; i<obj.length;	i++	) {
				if ( obj[i].checked	)	{
					if( rid != "" ) rid += ",";
					rid += split + obj[i].value + split;
				}
			}
		}
		else  {
			if(	obj.checked	) rid =	split + obj.value + split;
		}
	}
	return rid;
	}

//默认点击单选框或者多选框的确认值
function setDefaultClick( obj, defVal )
{
//	alert(obj);
//	alert(defVal);
//	obj.click();
	if(	obj	!= null	)
	{
		if(	obj.length > 1 )
		{
			for	(var i=0; i<obj.length;	i++	)
			{
				if ( obj[i].value == defVal	)
				{
					obj[i].click();
//					alert("1");
				}
			}
		}
		else
		{
			if(	obj.value == defVal	)
			{
				obj.click();
//				alert("2");
			}
		}
	}
}

//设置多选框选择的记录的状态
//参数, 窗体元素对象
//参数, type
//		  = 'select_all'   全选
//		  = 'select_none'  全部取消
//	      = 'select_reverse'  反选
function setCheckBoxChoose( obj, type )
{
	type = "" + type;
	type = type.toLowerCase();
	var	rid	= "";
	if(	obj	!= null	)	 {
		if(	obj.length > 1 )	{
			for	(var i=0; i<obj.length;	i++	) {
				if( type == 'select_all' ) obj[i].checked = true;
				else
				if( type == 'select_none' ) obj[i].checked = false;
				else
				if( type == 'select_reverse' ) obj[i].checked = ! obj[i].checked;
			}
		}
		else  {
			if( type == 'select_all' ) obj.checked = true;
			else
			if( type == 'select_none' ) obj.checked = false;
			else
			if( type == 'select_reverse' ) obj.checked = ! obj.checked;
		}
	}
	return rid;
}

function showChooseAllBtnEx( obj, btn ) {
	if( btn.checked == true ) {
		setCheckBoxChoose( obj, 'select_all' );
	}
	else {
		setCheckBoxChoose( obj, 'select_none' );
	}
}

//显示全选/取消全选按钮, 传入对象名称字符串
//显示反选按钮, 传入对象名称字符串
function showChooseAllBtn( objName ) {
	var s = "全选<input type=checkbox onClick='showChooseAllBtnEx(" + objName + ", this)'>";
	s += "反选<input type=checkbox onClick='setCheckBoxChoose(" + objName + ", \"select_reverse\")'>";
	document.write( s );
}

//给页面控件赋值
function setVal( obj, val )
{
	if(	val	== null	) val =	'';
	if(	obj	!= null	&& obj != undefined ) obj.value	= val;
}


//检查某控件数组是否全部为空，即都没有输入数据
//只要有一个控件有输入，则返回false，否则返回true
function check_input_ary_all_is_null( obj ) {
	
	var re = true;

	//非空判断
	if(	obj	!= null	)	 {
		if(	obj.length > 1 )	{
			for	(var i=0; i<obj.length;	i++	) {
				if ( obj[i].value != ""	)	{
					re = false;
					break;
				}
			}
		}
		else  {
			if(	obj.value != ""	) re = false;
		}
	}
	return re;
}

//=======================================================================================
// 窗口操作
//=======================================================================================

//必须在文档下载完成后才能够调用
//beforeBegin，afterBegin，beforeEnd，afterEnd
function insertHtml( position, html	) {
	document.body.insertAdjacentHTML( position,	html )
}

//获取程序的最终路径
//供对话框使用
function getRealPath( url )	{
	//alert( url.toUpperCase() );
	if(	url.indexOf( "/" ) != 0	&& url.toUpperCase().indexOf( "HTTP://"	) != 0 ) {
		url	= getCurrPath()	+ url;
	}

	return url;
}

/*
* 打开非模式窗口,并等到该窗口关闭时才往下执行
*
* 子窗口如此获取父窗口中对象的值
*	var	win	= window.dialogArguments;	//获取父窗口的句柄
*	alert( "姓名是:	" +	win.document.all.name.value	); //获取表单的值
*
* 返回值: 子窗口关闭时,	依照下面方式设置返回值
*
*	window.returnValue = "张三峰";	//返回字符串
* 或者
*	window.returnValue = 13;	   //返回数值
* 或者
*	function Point() {
*		this.left=0;
*		this.top=0;
*		this.width=0;
*		this.height=0;
*	}
*	var	p =	new	Point();
*	window.returnValue = p;		   //返回对象
* 设置完成后关闭窗口
*	window.close();				   //关闭窗口
*/

function getWindow() {
	return window.opener;	//获取父窗口的句柄
}

function dlgOpen( aTitle, aUrl, status )
{
  var param	= new Object;
  param.title = aTitle;
  param.url	= getRealPath( aUrl	);


	//最后面加个随机数，避免缓存太严重了
	/*
	var rnd = 'wlb=' + Math.random();
	if( param.url.indexOf("?") == -1 )
		param.url = param.url + '?' + rnd;
	else
		param.url = param.url + '&' + rnd;
	*/
  var rnd = '';

  param.win	= window;
  var lRetval =	window.showModalDialog("/js/dialog.html?"+ rnd, param, status);
  return lRetval;
  /*
  return window.showModalDialog( aUrl, param, status);
  */
}

function openWindow( aTitle, url, left, top, width, height )	{

	if( debug ) {
		window.open( url );
		return;
	}

	var	re = "";
	var	status = "";

	//指定 left, right,	width, height
	if(	isNumber( left	) && isNumber( top ) && isNumber( width )	&& isNumber( height ) ) {
		status = 'dialogTop: ' + top + 'px;	dialogLeft:	' +	left + 'px;	dialogHeight: '	+ height + 'px;	dialogWidth: ' + width + 'px; edge:	Raised;	center:	No;	help: No; resizable: Yes; status:YES; ';
		re = dlgOpen( aTitle, url, status );
	}
	//指定 left, right 没指定width,height>> left 当 width, right 当 height 处理, 窗口居中显示
	else if( isNumber( left ) && isNumber( top ) ) {
		width =	left;
		height = top;
		if(	width == -1	|| height == -1	) {
			width =	document.body.clientWidth;
			height = document.body.clientHeight;
		}
		status = 'dialogHeight:	' +	height + 'px; dialogWidth: ' + width + 'px;	edge: Raised; center: Yes; help: No; resizable:	Yes; status: YES; ';
		re = dlgOpen( aTitle, url, status );
	}
	//没有指定	left, right, width,	height,	当全屏
	else {
		width =	screen.availWidth;
		height = screen.availHeight;
		status = 'dialogHeight:	' +	height + 'px; dialogWidth: ' + width + 'px;	edge: Raised; center: Yes; help: No; resizable:	Yes; status: YES; ';
		re = dlgOpen( aTitle, url, status );
	}

	return re;
}


//打开普通IE窗口
function openWin( aUrl,	aWidth,	aHeight)
{
	var	xMax = screen.width, yMax =	screen.height;
	var	xOffset	= (xMax	- aWidth)/2, yOffset = (yMax - aHeight)/2;
	var	win	= window.open( aUrl	,'pub_001',	'status=yes, width=' + aWidth +	',height=' + aHeight + ',screenX='+xOffset+',screenY='+yOffset+', top='+yOffset+',left='+xOffset+'');
	win.focus();
	return win;
}



//打开普通IE窗口
function openWin2( aUrl, aName )
{
	var	win	= window.open( aUrl	,aName,	'toolbar =no, menubar=no, scrollbars=no, resizable=yes, location=no, status=no');
    win.moveTo(0,0);
    win.resizeTo(screen.availWidth,screen.availHeight);
	win.focus();
	return win;
}

/*
//根据菜单表的menu_key跳到菜单
function gomenu_bykey( menu_key ) {
	
	if( top.frm_menu )
		top.frm_menu.do_goto_bykey( menu_key );
	else {
		
		if( window.opener.top.frm_menu ) {
			window.opener.top.frm_menu.do_goto_bykey( menu_key );
		}
	}
}
*/

//关闭当前弹出子窗口
function closeOpenWindow( retuVal ) { window.returnValue=retuVal;window.close(); }

//关闭父窗口
function closeParentWindow() {
	parent.location.href = '/sysmanage/main_welcome.jsp';
	return true;
}
//关闭当前窗口
function closeWindow() {
	location.href = '/sysmanage/main_welcome.jsp';
	return true;
}
//刷新父窗口
function reloadParentWindow() {
	parent.location.reload();
	window.close();
	return true;
}


//=======================================================================================
// 以下为JBS专用
//=======================================================================================


//在表格在添加一条新记录，返回新行号
function jbs_table_appendRow() {

	//判断表格有多少行
	var	r =	0;
	while (	eval( 'document.all.tr'	+ r	) != undefined )
	{
		r ++;
	}
	var	cpy	= r	% 2; //复制第一行或者第二行，要求表格不能少于2行
	var	ctr	= eval(	'document.all.tr' +	cpy	);

	//克隆行
	var	newTR =	ctr.cloneNode(true);
	newTR.id = "tr"+r;
	newTR.name="tr"+r;
	ctr.parentNode.insertAdjacentElement("beforeEnd",newTR );

	return r;
}




function jbs_isExist( obj )	{
	if(	obj	== null	) {
		alert( "JBS	FORM 对象未定义" );
		return false;
	}
	return true;
}

//提示框
function jbs_alert( obj, msg ) {
	/*
	if( confirm( msg ) ) {
		obj.focus();
		obj.select();
	}
	*/
	alert( msg );
	obj.focus();
	obj.select();
}

//检查非空
function jbs_form_notNull( obj ) {
	if(	! jbs_isExist( obj ) ) return false;

	var f = true;

	switch (obj.type) {
		case "select-one":
		case "select-multiple":

			if( obj.selectedIndex == -1
				|| obj.options[ obj.selectedIndex ].value == '' ) {
				f = false;
				alert( "下拉字段必须选择,不能为空" );
			}
			break;
		case "checkbox":
		case "radio":
			break;
		default:
			if (obj.value == '') {
				f = false;
				jbs_alert( obj, "带*号字段必须填写,不能为空" );
			}
			break;
	}

	return f;

}


//判断一个数字是否符合要求
//参数:	都以字符串形式传入
//		数字起始值,	数字终止值,	小数位数的最少位数,	小数位数的最多位数,   allowNULL
//		如果传入""值,则对应的判断不起作用
//		例如传入的 min 为"", 则不判断数值的最小限制
//	1. checkNumber(	数字, "", "", 0, 0 );  判断是否整数, 小数位为0
//	2. checkNumber(	数字, "1", "250", 0, 2 ); 判断人的身高,	2位小数, 在1到250之间
//
//返回值: 返回""则表示正确,	否则返回错误信息
function jbs_form_checkNumber( obj,	min, max, pointLenMin, pointLenMax, isNull ) {
	if(	! jbs_isExist( obj ) ) return false;
	if( isNull == '1' && obj.value == '' ) return true;
	var	s =	checkNumber( obj.value,	min, max, pointLenMin, pointLenMax );
	if(	s != ""	) {
		jbs_alert( obj, s );
		return false;
	}
	return true;
}


//JS: 检查输入长度, 允许为空，如果要检查非空，使用非空事件
function jbs_form_checkValueLength( obj, len ) {
	if(	! jbs_isExist( obj ) ) return false;
	if( isNumber( len ) ) {
		var l = getCnLen( obj.value );
		if( l > len )  {
			jbs_alert( obj, "输入长度不能超过 " + len + "字符,目前为 " + l + "字符" );
			return false;
		}
	}
	return true;
}


//JS: 检查输入长度, 允许为空，如果要检查非空，使用非空事件
function jbs_form_checkValueArea( obj, min, max ) {
	if(	! jbs_isExist( obj ) ) return false;

	if( isNumber( min ) ) {
		var l = getCnLen( obj.value );
		if( l < min )  {
			jbs_alert( obj, "输入长度不能小于 " + min + "字符,目前为 " + l + "字符" );
			return false;
		}
	}

	if( ! jbs_form_checkValueLength( obj, max ) ) return false;	//检查长度

	return true;
}



//循环检查FORM元素
//例：if( ! jbs_check_form( document.form_main ) ) return false;
function jbs_check_form( form_obj )
{
	if (document.all ||	document.getElementById) {

		for( var i=0; i<form_obj.length; i++ ) {
			var	eobj = form_obj.elements[i];
			var n = trim(eobj.name);
			var exec = true;
			var cmd = "if(window.JS_" + n + "){ exec=JS_" + n + "(eobj); }";
			eval( cmd );
			if( ! exec ) return false;
		}
	}
	return true;
}

//循环检查某个对象数组是否都输入数字
function jbs_check_ary_num( obj ) {

  if( obj == null ) return true;

  if( obj.length == 0 ) {
	return false;
  }

	//检测输入的数字是否合要求
 /* if( obj.length == 1 ) {
	if( obj.value != '' ) {
		var str = checkNumber( obj.value, "", "", 0, 3 );
		if( str != '' ) {
			alert( str );
			obj.focus();
			return false;
		}
	}
  }
*/

  if( obj.length > 1 ) {
	for( var i=0; i<obj.length; i++ ) {
		if( obj[i].value != '' ) {
			var str = checkNumber( obj[i].value, "", "", 0, 3 );
			if( str != '' ) {
				alert( str );
				obj[i].focus();
				return false;
			}
		}
	}

  }
  else
	 if( obj.value != '' ) {
		var str = checkNumber( obj.value, "", "", 0, 3 );
		if( str != '' ) {
			alert( str );
			obj.focus();
			return false;
		}
	}

  return true;
}


//=======================================================================================
// 以上为JBS专用
//=======================================================================================


//按了回车后，可以跳转到指定输入框nextobj_name里，如果不存在，则跳到invalid_obj_name
//传入字符串形式的对象名字
function gonext_def(nextobj_name, invalid_obj_name) {
	
	try
	{
		var aobj = eval( 'document.all.' + nextobj_name );
		if (aobj!=null && aobj != undefined && ! aobj.readOnly && aobj.type != "hidden" && ! aobj.disabled) {
			gonext( aobj );
			return;
		}
	}
	catch (e)
	{
	}
	
	try
	{
		var aobj = eval( 'document.all.' + invalid_obj_name );
		if( aobj != null && aobj != undefined ) {
			gonext( aobj );
			return;
		}
	}
	catch (e)
	{
	}

}


//按了回车后，可以跳转到指定输入框里
//传入对象
function gonext(nextobj) {
	
	if(event.keyCode==13)
	{
		if(nextobj==null)//如传入的参数为null，即是直接跳到下一个。
		{
			event.keyCode=9;
		}
		else if (nextobj!=null && nextobj != undefined && ! nextobj.readOnly && nextobj.type != "hidden" && ! nextobj.disabled)
		{
				event.returnValue = false;

				nextobj.focus();	

				//如果是以下类型的控件，放弃按键事件
				//if( nextobj.type=="button" || nextobj.type=="submit" || nextobj.type=="image" ) {
				//	event.returnValue = false;
				//}
		}
	}
}


//清空select下拉框的内容
function select_clear( obj ) {

	/*
	//清空select
	for( var i=obj.length-1; i>=0; i-- ) {
		obj.options[i]=null;
	}

	obj.click; //刷新
	*/

	obj.length = 0;
}

//select下拉框追加内容
function select_append( obj, val, txt ) {

	obj.options[obj.length]=new Option( txt, val );

}

//可执行html中的js
function InnerHTML(ele,innerHtml) {
	var nA=navigator.appVersion;
	if(nA.indexOf('MSIE')>=0)var curIE=nA.substr(nA.indexOf('MSIE')+5,3);
	if (curIE){
		innerHtml=innerHtml.replace(/<script([^>]*)>/gi,"<script$1 defer=\"true\">");
		var reStartScript=/^(\s*<script)/gi;
		if (reStartScript.test(innerHtml)){
			innerHtml="<span style=\"display:none;\">Hack IE</span>"+innerHtml;
			ele.innerHTML=innerHtml;
			ele.removeChild(ele.firstChild);
		}else{
			ele.innerHTML=innerHtml;
		}

	}else{
		var newObj=document.createElement(ele.tagName);
		newObj.id=ele.id;
		newObj.className=ele.className;
		newObj.innerHTML = innerHtml;
		ele.parentNode.replaceChild(newObj,ele);
	}
}

//只允许录入数字与字母
function myKeyDown()
{
    var    k=window.event.keyCode;   

    if ((k==46)||(k==8)||(k==189)||(k==109)||(k==190)||(k==110)|| (k>=48 && k<=57)||(k>=96 && k<=105)||(k>=37 && k<=40))
    {}
    else if(k==13){
         window.event.keyCode = 9;}
    else{
         window.event.returnValue = false;}
}


//图片缩小
function AutoAdjustAtchImgSize(e,maxWidth){
if(e.width>maxWidth){
e.width=e.width*(maxWidth/e.width);
}
}