

function thisFocus(o_obj,s_className,s_color,b_notSel)
{//当前活动对象得到焦点或鼠标在其上时调用此函数(相反操作为thisBlur函数)
try
	{
	if(o_obj==null)
		return false;

	if(s_className!=null&&s_className!="")
		o_obj.classname=s_className;
	else if(s_color!=null&&s_color!="")
		o_obj.style.background=s_color;
	else if(o_obj.className!=null&&o_obj.className!="")
		{
			var clsname=o_obj.className;
			if(clsname.substring(clsname.length-1)!="1")
				o_obj.className=clsname+"1";
		}
	else
		o_obj.style.background="#ECECE4";

	//对象有select方法并且要求选中文本(notSel只要有值则不选中)
	//if(o_obj.select!=null&&!b_notSel)
	//	o_obj.select();		//暂取消选中

	}
	catch(error)
	{}

}

function thisBlur(o_obj,s_className,s_color)
{//当前活动对象失去焦点或鼠标离开时调用此函数(对应thisFocus,与其作用相反)
try
	{
	if(o_obj==null)
		return false;

	if(s_className!=null&&s_className!="")
		o_obj.classname=s_className;
	else if(s_color!=null&&s_color!="")
		o_obj.style.background=s_color;
	else if(o_obj.className!=null&&o_obj.className!="")
		{
			var clsname=o_obj.className;
			if(clsname.substring(clsname.length-1)=="1")
				o_obj.className=clsname.substring(0,clsname.length-1);
		}
	else
		o_obj.style.background="";
	}
	catch(error)
	{}
}

//格式化数字小数位数(包括用科学计数法数值转化为正常位数显示)函数---
function formatNumStr(number,n,format)	//将数值number保留n位小数,format有值则一定格式为n位
{
	var blxsws=2;					//要保留的小数位数，不传默认为两位
	if(n!=null)	blxsws=n;

	var str=""+number+"";
	var Epos=str.toUpperCase().indexOf("E");	//E的位置
	var E_val=1;								//E后面的指数，默认没有E时值为1
	var Num=str;								//用来保存E前面的数字（没有E则是原数字）
	if(Epos!=-1)			//若有E
	{
		E_val=parseInt(str.substring(Epos+1));
		Num=str.substring(0,Epos);				//用来保存E前面的数字
		var len=Num.length;						//E前面字符的长度
		
		var Em=E_val<0?-E_val:E_val;
		if(E_val>0)			//指数大于0
			for(var i=1;i<=Em;i++)				//根据指数移动小数位，或是没有小数点后则补0
			{
				var docpos=Num.indexOf(".");	//每次移动后小数点的位置(若有的话)
				
				if(docpos==-1)					//无小数点，数字字符串后面补0
					Num+="0";
				else
				{								//有小数点将其向后移位
					Num=Num.substring(0,docpos)+Num.substring(docpos+1,docpos+2)+"."+Num.substring(docpos+2);
					
					if(Num.substring(len-1)==".")	//若移位后最后一位是小数点，则将其去除
						Num=Num.substring(0,len-1);	
				}								
			}	
		else if(E_val<0)	//指数小于0
			for(var i=1;i<=Em;i++)				//根据指数移动小数位，或是没有小数点后则补0
			{
				var firstN=Num.substring(0,1);	//Num的第一个数字字符
				var docpos=1;					//小数点的位置肯定在第1位(实际是第二个字符)
				
				if(firstN!="0")
					Num="0."+firstN+Num.substring(2);	//小数点前面是大于0的数字，将其移至小数点后一位
				else
					Num="0.0"+Num.substring(2);			//第一位已被置为0，则再移位时在小数点后一位插入0
			}	
		
	}
	
	var doc_Pos=Num.indexOf(".");		//数字经过处理后(主要指科学计数法表示的数字，有的话)小数点的位置
	if(doc_Pos!=-1)		//还有小数点存在
	{
		var ws=Num.substring(doc_Pos+1).length;				//数字字符串的小数有几位
		if(ws>blxsws)
			Num=Num.substring(0,Num.length-(ws-blxsws));	//表示保留blxsws位
	}

	if(format)				//要求格式化小数位(即硬小数位，没有后面补0)
		{
			if(doc_Pos!=-1)	//有小数位数，但小于要求保留的位数,再其后补上少的几个0
				{
					if(ws<blxsws)
						for(var i=0;i<blxsws-ws;i++)
							Num+="0";						
				}			
			else			//无小数点,则先加上小数点,再其后补上blxsws个0
				{	
					Num+=".";
					for(var i=0;i<blxsws;i++)
						Num+="0";
				}
		}
		
	return Num
}

function moveUpDown(o_name,currRow,o_tar,o_nexttar) //当前焦点向上或向下移动，或到指定对象o_tar
{
	//o_name－ 循环控件名的前缀(不加"_")
	//currRow－当前行数(号),即循环控件名的后缀数字
	//o_tar－　指定对象的控件名，若此参数有值，则忽略前面两个参数，向上时直接将焦点移到此名称的控件上
	//o_nexttar－　指定对象的控件名，若此参数有值，则忽略前面两个参数，向下时直接将焦点移到此名称的控件上

	var direct=event.keyCode;
	if(direct!=38&&direct!=40)	//不是键击上、下箭头，则返回
		return false;

	try
	{
		if(direct==38&&o_tar!=null&&o_tar!=""&&document.all(o_tar)!=null)
		{	//如果有指定向上移动到的对象，则执行
			document.all(o_tar).focus();
			return true;
		}
		if(direct==40&&o_nexttar!=null&&o_nexttar!=""&&document.all(o_nexttar)!=null)
		{	//如果有指定向下移动到的对象，则执行
			document.all(o_nexttar).focus();
			return true;
		}
		
		if(o_name==null||currRow==null)
			return false;

		var tr=currRow;		//存放目标行号
		var min_Row=0;		//允许判断到的最小行号(控件后缀)
		var max_Row=100;	//允许判断到的最大行号(控件后缀)，可更改
		if(direct==38)		//值为38表示向上移动，上箭头的Asscii码
		{
			for(;tr>min_Row;)
				if(document.all(o_name+"_"+(--tr))!=null)
				{
					document.all(o_name+"_"+tr).focus();
					return true;	//找到小于当前行号的最大行号对象(即前一个)，则赋之焦点
				}

			return false;
		}
		else if(direct==40)
		{
			for(;tr<max_Row;)
				if(document.all(o_name+"_"+(++tr))!=null)
				{
					document.all(o_name+"_"+tr).focus();
					return true;	//找到大于当前行号的最小行号对象(即后一个)，则赋之焦点
				}
			
			return false;
		}
		else
			return false;

	}
	catch(error)
	{
		return false;
	}
}

function strim(strObj)
{//去前后空格
	if(strObj==null||strObj=="")
		return "";
	var s_str=""+strObj;

	while (s_str.substring (0, 1) == ' ') 
		s_str = s_str.substring (1, s_str.length);
	while (s_str.substring (s_str.length - 1, s_str.length) == ' ')
		s_str = s_str.substring (0, s_str.length - 1);
	return s_str;
} 

//窗口居中
function winToCenter(o_win,W,H)
{
	if(o_win==null)	return;
			
	var win_w=W;
	var win_h=H;

	if(document.all)
		win_w=win_w+2;	win_h=win_h+20+3;	//isie=true

	o_win.moveTo(Math.ceil((window.screen.width-win_w)/ 2),Math.ceil((window.screen.height-win_h-30)/ 2));
}

function chineseCount(str)
{//返回字符串中文字符的个数
	var c=0;
	for(var i=0;i<str.length;i++)
		if(str.charCodeAt(i)>=10000)
			c++;
	return c;
}

function isChinese(str)
{//单个字符是中文则返回true，若是字符串则只要有一个中文则返回true
	var flag=true;
	for(var i=0;i<str.length;i++)
		if(str.charCodeAt(i)>=10000)
			return true;
	return false;
}

function getByteCount(str)
{//返回字符串的字节数，中文算两个字节
	var c=0;
	for(var i=0;i<str.length;i++)
		if(str.charCodeAt(i)>=10000)
			c+=2;
		else
			c++;
	return c;
}

//返回相对于total字符数的str还需补的空格（数）
function getSpace(total,str)
{
	if(str==null) return "";

	var num=total-getByteCount(str);
	if(num<=0)	return "";

	var space="";
	for(var i=0;i<num;i++)
		space+=" ";
		
	return space;
}

function subToEnd(ss,rr)
{//返回字符串，ss中从第一个rr后的部分
	var subs="";
	var pos=ss.indexOf(rr);
	if(pos!=-1)
		subs=ss.substring(pos+1);
	return subs;
}
//--导出到Excel文件----
function exportToExcel(filename,filepath)
{
	try
	{			
		var a="";
		var b="";
		if(filename!=null&&filename!="")
			a=filename;
		if(filepath!=null&&filepath!="")
			b=filepath;
		var result=vbsExportToExcel(a,b);
	}
	catch(error)
	{
		if(error.description.indexOf("EexportRecordTable")!=-1)
			alert("没有可以导出的数据，请求被中止！");
		else
			functionError(error,"错误：[ExportToExcelError]\n导出Excel文件时出错，请求被中止！");
	}

}
//--执行其他框架页中的函数--
function execOtherFrameJS(funcName,fObj)
{
	try
	{
		if(funcName==null)
			return false;
		var frameObj=parent.mContentFrame;
		if(fObj!=null&&fObj.location!=null)
			frameObj=fObj;

		var exeStr="if(frameObj."+funcName+"!=null)";
		exeStr+="frameObj."+funcName+"();";
		exeStr+="else{alert('未知操作，当前不可执行此操作！');}";
		eval(exeStr);
	}
	catch(error)
	{
		functionError(error,"错误：[ExecOtherFrameJS]");
		return false;
	}
}
//--全部复选框全部选中与全不选中函数----
function selectCheckboxAll(s_count,s_prefix)
{
	try
	{
		var cnt=parseInt(s_count)
		for(var i=1;i<=cnt;i++)
			if(document.all(s_prefix+i)&&!document.all(s_prefix+i).disabled)
				document.all(s_prefix+i).checked=true;
	}
	catch(error)
	{
		functionError(error,"错误：[SelecteCheckboxAllError]");
	}
}
function unselectCheckboxAll(s_count,s_prefix)
{
	try
	{
		var cnt=parseInt(s_count)
		for(var i=1;i<=cnt;i++)
			if(document.all(s_prefix+i)&&!document.all(s_prefix+i).disabled)
				document.all(s_prefix+i).checked=false;
	}
	catch(error)
	{
		functionError(error,"错误：[UnSelecteCheckboxAllError]");
	}
}
//----

//********************状态栏处理函数********************
function setSysStatus(stateText,imgUrl)
{//设置系统状态栏文本
	try
	{
		if(stateText!=null&&top.main&&top.main.StatusFrame)
			top.main.StatusFrame.SysStatusText.innerText=stateText;
		if(imgUrl!=null&&imgUrl!=""&&top.main&&top.main.StatusFrame)
			top.main.StatusFrame.SysStatusText.innerHTML=stateText+"<img src='"+imgUrl+"' align='absmiddle' width='15' height='15'>";
	}
	catch(error)
	{
		functionError(error,"错误：[SetSysStatusError]");
	}
}

//********************框架隐藏显示函数******************
function viewQueryForm(url)
{//显示查询框架时
	try
	{
		if(url!=null&&url!="")
			top.main.QueryFormFrame.location.href=url;

		top.main.Content_MAIN_SET.rows="22,26,*,0";	//"22,0,*,0";
		top.main.SMALL_MAIN_SET.cols="*,0";
	}
	catch(error)
	{
		alert("错误：[QueryFrame-JS0001]");
	}
}
function quitQueryForm()
{//提交或取消查询框架时
	try
	{
		parent.Menu_MAIN_SET.cols="159,*";  //显示系统菜单
		top.main.Content_MAIN_SET.rows="22,26,*,0";
		top.main.SMALL_MAIN_SET.cols="0,*";
		top.main.NEW_SMALL_MAIN_SET.rows="0,0,*";
	}
	catch(error)
	{
		alert("错误：[QueryFrame-JS0002]");
	}
}

function viewListForm()
{//显示列表框架
	try
	{
		top.main.SMALL_MAIN_SET.rows="40%,*";
		top.main.SMALL_MAIN_SET.cols="*";
		top.main.ContentFrame.location.href="about:blank";
	}
	catch(error)
	{
		alert("错误：[viewListForm-JS0001]");
	}
}

function quitListForm()
{//退出列表框架
	try
	{
		top.main.SMALL_MAIN_SET.cols="0,*";
		top.main.SMALL_MAIN_SET.rows="*";
		
	}
	catch(error)
	{
		alert("错误：[viewListForm-JS0001]");
	}
}
//********************错误处理函数******************
function functionError(errObj,mess)
{//执行函数时出错处理函数mess为传来的消息，有则替换默认消息
try
	{
		var ms="错误：[ExcuteJSError]";
		if(mess!=null&&mess!="")
			ms=mess;
		if(errObj!=null)
		{
			ms+="\n描述："+errObj.description;
			alert(ms);
		}		
	}
	catch(error)
	{
		alert("错误：[FunctionError's Error]");
	}
}

function formCheckError(errObj,mess)
{//表单验证出现Error时通用提示,mess为传来的消息，有则替换默认消息
try
	{

		var ms="错误：[表单验证时出错，请仔细检查后再操作]";
		if(mess!=null&&mess!="")
			ms=mess;	
		if(errObj!=null)
		{
			ms+="\n描述："+errObj.description;
			alert(ms);
		}
		return false;
	}
	catch(error)
	{
		alert("错误：[FormCheckError's Error]");
		return false;
	}
}

function redirect(url,frameObj)
{//重定向函数，可指定框架对象，缺省frameObj则将前面重定向，url为空则转到空白页
try
	{
		if(url==null||url=="")
			url="about:blank";
		if(frameObj==null)
			document.location.href=url;
		else
		{
			if(frameObj.location!=null)
				frameObj.location.href=url;
		}
	}
	catch(error)
	{
		functionError(error,"错误：[RedirectError-JS]");
	}
}

function defineJSFuncList(s_funcname)
{//通知操作按钮页，本页(调用此函数的页)定义了哪些可用功能按钮,s_funcname为逗号分隔的函数名，没有可以不传
try
	{
		var funcname="";
		if(s_funcname!=null)
			funcname=s_funcname;

		var arrObj=new Array();
		arrObj=funcname.split(",");

		var arrBt=null;
		if(top.main&&top.main.OperateFrame)
			arrBt=top.main.OperateFrame.btArr;			//操作按钮页的所有按钮调用函数名数组对象

		for(var i=0;arrBt!=null&&i<arrBt.length;i++)
		{
			if(arrBt[i]!=""&&arrBt[i]!="queryForm")	//有函数名且不是'查询'按钮
			{
				for(var c=0;c<arrObj.length;c++)
				{
					if(arrBt[i]==arrObj[c])		//找到在此页中有对应的定义，启用按钮并退出子循环
					{
						top.main.OperateFrame.document.all("opbutton_"+i).disabled=false;
						break;
					}
					if(c==arrObj.length-1)		//循环到最后一个没找到定义的函数名数组中有此按钮函数，则禁用
						top.main.OperateFrame.document.all("opbutton_"+i).disabled=true;
				}
			}
		}
	}
	catch(error)
	{
		functionError(error,"错误：[DefineJSFuncListError-JS]");
	}
}

function defineJSFuncList1(s_funcname)
{//通知操作按钮页，本页(调用此函数的页)定义了哪些可用功能按钮,s_funcname为逗号分隔的函数名，没有可以不传
try
	{
		var funcname="";
		if(s_funcname!=null)
			funcname=s_funcname;

		var arrObj=new Array();
		arrObj=funcname.split(",");

		var arrBt=null;
		if(top.main&&top.main.OperateFrameNew)
			arrBt=top.main.OperateFrameNew.btArr;			//操作按钮页的所有按钮调用函数名数组对象

		for(var i=0;arrBt!=null&&i<arrBt.length;i++)
		{
			if(arrBt[i]!=""&&arrBt[i]!="queryForm")	//有函数名且不是'查询'按钮
			{
				for(var c=0;c<arrObj.length;c++)
				{
					if(arrBt[i]==arrObj[c])		//找到在此页中有对应的定义，启用按钮并退出子循环
					{
						top.main.OperateFrameNew.document.all("opbutton_"+i).disabled=false;
						break;
					}
					if(c==arrObj.length-1)		//循环到最后一个没找到定义的函数名数组中有此按钮函数，则禁用
						top.main.OperateFrameNew.document.all("opbutton_"+i).disabled=true;
				}
			}
		}
	}
	catch(error)
	{
		functionError(error,"错误：[DefineJSFuncList1Error-JS]");
	}
}

//完成一些操作后调用的公用函数，用于通用系统状态栏提示--
function queryStartProcess(mess)
{
	try
	{
		var me="查询处理中......";
		if(mess!=null&&mess!="")
			me=mess;
		setSysStatus(me,"/system/images/tip/turn.gif");
	}
	catch(error)
	{
		functionError(error,"错误：[QueryStartProcessError]");
	}
}
function queryListLoaded(mess)
{
	try
	{
		var me="查询已完成";
		if(mess!=null&&mess!="")
			me=mess;
		setSysStatus(me);
	}
	catch(error)
	{
		functionError(error,"错误：[QueryListLoadedError]");
	}
}
function addRecordPageLoaded(mess)
{
	try
	{
		var me="添加新记录";
		if(mess!=null&&mess!="")
			me=mess;
		setSysStatus(me);
	}
	catch(error)
	{
		functionError(error,"错误：[AddRecordPageLoadedError]");
	}
}
function editRecordPageLoaded(mess)
{
	try
	{
		var me="查看编辑记录";
		if(mess!=null&&mess!="")
			me=mess;
		setSysStatus(me);
	}
	catch(error)
	{
		functionError(error,"错误：[EditRecordPageLoadedError]");
	}
}
function doNotWait()
{
	try
	{
		if(WaitPage!=null)
			WaitPage.style.visibility="hidden";
	}
	catch(error)
	{
		if(WaitPage!=null)
			WaitPage.style.visibility="hidden";
		functionError(error,"错误：[DoNotWaitError]");
	}
}

//********默认事件处理*********
/*
document.oncontextmenu=new Function("return false;");
document.onselectstart=new Function("return false;");
document.ondragstart=new Function("return false;");
document.onkeydown=new Function("if(event.keyCode==78&&event.ctrlKey) return false;");
*/