////////////////////////////////////////////////////////////////////////////
// 
// Copyright (C) 2007 e-Channels CORPORATION
// 
// ALL RIGHTS RESERVED BY e-Channels CORPORATION, THIS PROGRAM
// MUST BE USED SOLELY FOR THE PURPOSE FOR WHICH IT WAS  
// FURNISHED BY e-Channels CORPORATION, NO PART OF THIS PROGRAM
// MAY BE REPRODUCED OR DISCLOSED TO OTHERS, IN ANY FORM
// WITHOUT THE PRIOR WRITTEN PERMISSION OF e-Channels CORPORATION.
// USE OF COPYRIGHT NOTICE DOES NOT EVIDENCE PUBLICATION
// OF THE PROGRAM
// 
//			e-Channels CONFIDENTIAL AND PROPRIETARY
// 
////////////////////////////////////////////////////////////////////////////
//
//	公共库函数 zhanghao@yuchengtech.com
//
//////////////////////////////////////////////////////////////////////////// 

/**
* 判断客户端浏览器类型的变量
*/
var isIE = (navigator.appName == 'Microsoft Internet Explorer');
var isNetscape = (navigator.appName == 'Netscape');

/**
* 清空页面所有输入框的内容，包括文本和密码
*/
function clearInput()
{
	var allInput = document.getElementsByTagName("input");
	for(var i=0; i<allInput.length; i++)
	{
		var tagBody = allInput[i];
		if (tagBody.getAttribute("type") == "text"||tagBody.getAttribute("type") == "password")
		{
			tagBody.value= "";
		}
	}
}

/**
* 检验字符串是否为空
* @param {String} 字符串
* @return {bool} 是否为空
*/
function isEmpty(e)
{
	if( trim(e) == "" )
		return true;
	else
		return false;
}

/**
* 检查字符串的长度
* @param {String} 字符串
* @param {Integer} 要比较的长度
* @return {bool} true：变量长度<给出的长度；false：变量长度>=给出的长度
*/
function isShorter(str,reqlength)
{
	if( str.length<reqlength )
		return true;
	else
		return false;
}

/**
* 检查字符串是否是整数
* @param {String} 字符串
* @return {bool} 是否是整数
*/
function isInteger( s )
{ 
	var isInteger = RegExp(/^[0-9]+$/);
	return ( isInteger.test(s) );
}

/**
* 判断输入变量是否是浮点数
* @param {String} 要检查的变量值
* @return {bool} 是否为浮点数
*/
function isFloat( s )
{
	var isFloat = RegExp(/^([0-9]+(\.+))[0-9]+$/);
	return ( isFloat.test(s) );
}

/**
* 判断输入变量是否是实数
* @param {String} 要检查的变量值
* @return {bool} 是否为实数
*/
function isDecimal( s )
{
	var isDecimal = RegExp(/^([0-9]+(\.?))?[0-9]+$/);
	return ( isDecimal.test(s) );
}

/**
* 判断输入变量是否是数字或者字母
* @param {String} 要检查的变量值
* @return {bool} 是否为数字或者字母
*/
function isIntChar( s )
{
 	var isIntChar = RegExp(/^[a-zA-Z0-9]+$/);
	return ( isIntChar.test(s) );
 }

/**
* 判断输入变量是否是数字或者字母或者特殊字符
* 特殊字符：|_ - * & % $ # @ ! ~ ^ ( )
* @param {String} 要检查的变量值
* @return {bool} 是否为数字或者字母或者特殊字符
*/
function isIntCharSpecial( s )
{
	var isIntCharSpecial = RegExp(/^[a-zA-Z0-9(\|)(\_)(\-)(\*)(\&)(\%)(\$)(\#)(\@)(\!)(\~)(\^)(\()(\))]+$/);
	return ( isIntCharSpecial.test(s) );
}

/**
* 判断输入变量是否包含数字或者字母
* @param {String} 要检查的变量值
* @return {bool} 是否包含数字或者字母
*/
function containIntChar( s )
{
	var containIntChar = RegExp(/[a-zA-Z0-9]+/);
	return ( containIntChar.test(s) );
}  

/**
* 判断输入变量是否包含特殊字符
* 特殊字符：~ ! @ # $ % ^ & * ( ) - _ + = [ ] { } | \ ; : ' " , . / < > ? <
* @param {String} 要检查的变量值
* @return {bool} 是否包含特殊字符
*/
function containSpecial( s )
{
	var containSpecial = RegExp(/[(\ )(\~)(\!)(\@)(\#)(\$)(\%)(\^)(\&)(\*)(\()(\))(\-)(\_)(\+)(\=)(\[)(\])(\{)(\})(\|)(\\)(\;)(\:)(\')(\")(\,)(\.)(\/)(\<)(\>)(\?)(\)]+/);
	return ( containSpecial.test(s) );
}

/**
* 登录名设置时，需要剔除下划线以外的特殊字符，本函数用来检查除下划线以外的特殊字符
* 判断输入变量是否包含特殊字符
* 特殊字符：~ ! @ # $ % ^ & * ( ) -  + = [ ] { } | \ ; : ' " , . / < > ? <
* @param {String} 要检查的变量值
* @return {bool} 是否包含特殊字符
*/
function containSpecial2( s )
{
	var containSpecial = RegExp(/[(\ )(\~)(\!)(\@)(\#)(\$)(\￥)(\～)(\！)(\……)(\*)(\+)(\=)(\%)(\^)(\&)(\*)(\()(\))(\-)(\+)(\=)(\[)(\])(\{)(\})(\|)(\\)(\;)(\:)(\')(\")(\,)(\.)(\/)(\<)(\>)(\?)(\)]+/);
	return ( containSpecial.test(s) );
}

/**
* 检查字符串是否为合法email地址
* @param {String} 字符串
* @return {bool} 是否为合法email地址
*/
function isEmail(s) 
{
	var isEmail = RegExp(/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/);
	return ( isEmail.test(s) );
}

/**
* 检查字符串是否为合法的金额
* @param {String} 字符串
* @return {bool} 是否为合法金额
*/
function isMoney(s) 
{
	var isMoney = RegExp(/^[0-9]*\.?[0-9]{0,2}$/);
	return ( isMoney.test(s) );
}

/**
* 判断是否为双币卡
* @param {String} 字符串
* @return {bool} 是否为为双币卡
*/
function  isTwoCurrency(s){
	if(s.indexOf('512431')==0 ||s.indexOf('520194')==0){
		return true;
	}
	return false;
}

/**
* 若为null则替换为指定的字符串
* @param {String} 要测试的字符串
* @param {String} 为空时替换的字符串
* @return {String} 
*/
function nvl(s,replaceString)
{
	if ( s == null || isEmpty(s) )
		return replaceString;
	else
		return s;
} 

/**
* 将页面中或指定表格ID的所有checkbox置为选中状态或全不选状态
* @param {bool} choose: true选中；false不选
* @param {string} tableID:要指定的表格ID
*/
function selectAll(choose,tableID)
{
	var allCheck;
	if (arguments.length == 1) {
       allCheck =  document.getElementsByTagName("input");
    }else{
	   allCheck =  document.getElementById(tableID).getElementsByTagName("input");
    }
	 
	for(var i=0; i<allCheck.length; i++){
		var tagBody = allCheck[i];
		if (tagBody.getAttribute("type") == "checkbox")
		{
			tagBody.checked= choose;
		}
	}
}

/**
* 取得页面中的所有选中的checkbox的id列表
* @return {String} 以'|'分隔的选中id，如果没有选中任何checkbox则返回空串
*/
function getCheckList()
{	
	var checkList = '';
	var allCheck = document.getElementsByTagName("input");
	for(var i=0; i<allCheck.length; i++)
	{
		var tagBody = allCheck[i];
		if (tagBody.getAttribute("type") == "checkbox")
		{
			if ( tagBody.checked && !isEmpty(tagBody.id) )
			{
				checkList += tagBody.id  + '|';
			}
		}
	}
	return checkList;
}

/**
* 取得指定的radio按钮的选中值
* @param {String} radio按钮ID
* @return {String} radio按钮的选中值
*/
function getRadioValue(radioName)
{	
	var radioList = document.getElementsByName(radioName);
	for (var i = 0; i < radioList.length; i++)
	{
		if( radioList[i].checked == true )
		{
			return radioList[i].value;
		}
	}
}
/**
* 去掉指定的数据前面的0
* @param {String} 指定数据
* @return {String} 去0后的值
*/
function removeZero(t){
	var a=t;
	if(parseInt(t)!='0'){
		for(i=0;i<t.length;i++){
			if(t.substring(i,i+1)=='0'){
				a=t.substring(i+1,t.length);
			}
			else{
				return parseInt(a);
			}
			
		}
	}
	else{
		return	parseInt(t);
	}
}
/**
* 检验日期是否符合YYYYMMDD的格式，是否合法
* @param {String} 日期字符串
* @return {bool} 是否是合法日期
*/
function isDate(param) {
	var pattern = /^\d+$/;
	if ( param.length != 8 ) {
		return false;
	}
	if(!pattern.test(param)) {
		return false;
	}
	sYear = param.substring( 0, 4 );
	sMonth = param.substring( 4, 6 );
	sDay = param.substring( 6, 8 );
	if ( ( eval( sMonth ) < 1 ) || ( eval( sMonth )  > 12 ) ) {
		return false;
	}
	var leapYear = ((( sYear % 4 == 0 ) && ( sYear % 100 != 0 )) || ( sYear % 400 == 0 )) ? true : false;
	var monthDay = new Array(12);
	monthDay[0] = 31;
	monthDay[1] = leapYear ? 29 : 28;
	monthDay[2] = 31;
	monthDay[3] = 30;
	monthDay[4] = 31;
	monthDay[5] = 30;
	monthDay[6] = 31;
	monthDay[7] = 31;
	monthDay[8] = 30;
	monthDay[9] = 31;
	monthDay[10] = 30;
	monthDay[11] = 31;
	if ( ( eval( sDay ) < 1 ) || ( eval( sDay )  > monthDay[eval(sMonth)-1] ) ) {
		return false;
	}
	return true;
}

/**
* 去掉字符串前后的空格
* @param {String} 字符串
* @return {String} 去除空格后的字符串
*/
function trim(param) {
	if ((vRet = param) == '') { return vRet; }
	while (true) {
		if (vRet.indexOf (' ') == 0) {
			vRet = vRet.substring(1, parseInt(vRet.length));
		} else if ((parseInt(vRet.length) != 0) && (vRet.lastIndexOf (' ') == parseInt(vRet.length) - 1)) {
			vRet = vRet.substring(0, parseInt(vRet.length) - 1);
		} else {
			return vRet;
		}
	}
}

/**
* 检查时间间隔是否在规定间隔之内
* @param {String} 开始日期
* @param {String} 结束日期
* @param {Integer} 间隔，单位为天
* @return {bool} 是否在规定间隔之内
*/
function dateInterval(startDate,endDate,interval) {
	var date1 = new Date(eval(startDate.substring(0,4)),eval(startDate.substring(4,6))-1,eval(startDate.substring(6,8)));
	var date2 = new Date(eval(endDate.substring(0,4)),eval(endDate.substring(4,6))-1,eval(endDate.substring(6,8)));
	if ( ( date2 - date1 ) / 86400000 > eval(interval) - 1 )
		return false;
	return true;
}

/**
* 控制text域的最大输入长度
* 用法：onblur="checkLength(this,要控制的长度);"
* @param {Object} text对象
* @param {Integer} 要控制的长度
*/
function checkLength(v,l){
	var s = v.value;
	var len = 0;
	
	for(i=0;i<s.length;i++)
	{
		var c = s.substr(i,1);
		var ts = escape(c);
		if(ts.substring(0,2) == "%u") 
		{
			len+=2;
		} else {
			len+=1;
		}
	}
	if(l>=len)
	{
		return true;
	}
	else
	{
		var len2=Math.floor(l/2);
		alert("该输入项插入值过长！最多"+l+"个字符或"+len2+"个汉字。");
		v.focus();
		return false;
	}
}

/**
* 控制textarea域的最大输入长度
* 用法：onblur="checkAreaLength(this,要控制的长度);"
* @param {Object} textarea对象
* @param {Integer} 要控制的长度
*/
function checkAreaLength(v,l){
	var s= v.value;
	var temlen=0;
	var len = 0;
	
	for(i=0;i<s.length;i++)
	{
		var c = s.substr(i,1);
		var ts = escape(c);
	
		if(ts.substring(0,2) == "%u")
		{
			len+=3;
			len+=temlen;
			temlen=0;
		}
		else if(ts.substring(0,3) == "%0D"){
			temlen+=1;
		}
		else if(ts.substring(0,3) == "%0A"){
			temlen+=1;
		}
		else if(ts.substring(0,3) == "%20"){
			temlen+=1;
		}
		else{
			len+=1;
			len+=temlen;
			temlen=0;
		}
	}
	
	if(len>l){
		var aaa=Math.floor(l/3);
		alert("该输入项插入值过长！最多"+l+"个字符或"+aaa+"个汉字。");  	
		v.value = "";
		v.focus();
		return false;
	}
	return true;
}

/**
 * 检查值的长度，汉字为2个字符
 * lengthCheck(字符串，检查的长度！)
 *
 */
function lengthCheck(v,l)
{
	var s = v;
	var len = 0;
		
	for(i=0;i<s.length;i++)
	{
		var c = s.substr(i,1);
		var ts = escape(c);
		if(ts.substring(0,2) == "%u") 
		{
			len+=2;
		} else {
			len+=1;
		}
	}
	if(l>len)
	{
		return false;
	}else
	{
		return true;		
	}	
}


/**
* 对金额进行转换，将金额转换为以元为单位，小数点后有两位
* 例：输入域1234，转换后隐含域为1234.00
* @param {String} 表单名称
* @param {String} 要转换的金额输入框名称
* @param {String} 金额隐藏域名称
*/
function convertToMoney(formName,txtmoney,hidmoney){
    var tonumber;
    var re = /,/g;
    var txt_money = eval("document."+formName+"."+txtmoney);
    var hid_money = eval("document."+formName+"."+hidmoney);
    if(isEmpty(txt_money.value)) {
    	alert("请输入正确的金额");
    	hid_money.value = '';
    	return;
    }
   	var temp = trim(txt_money.value);

   	if(temp<=0)
   	{
   		alert("请输入正确的金额!");
   		return;
   	}
   	if (temp == ""){
   		alert("请输入正确的金额！!");
   		txt_money.value="";
			hid_money.value="";
			txt_money.focus();
   		return;
   	}
    tonumber = addZero((trim(txt_money.value)).replace(re,""));

    txt_money.value = "";
    hid_money.value = "";
   if (tonumber !="" && tonumber!=null){
   	rep = / /g;
		var amt = tonumber.replace(rep,"");
		
		for(var j = 0; j < amt.length; j++){
			if(isNaN(parseInt(amt.charAt(j),10)) && amt.charAt(j)!="," && amt.charAt(j)!=".") {
				alert("请输入正确的金额!");
				txt_money.value="";
				hid_money.value="";
				txt_money.focus();
				return;
			}
		}
		if(amt.indexOf(".")!=amt.lastIndexOf(".")){
			alert("请输入正确的金额!");
			txt_money.focus();
			return;
		}
	
		re = /,/g;
		var amt1 = amt.replace(re,"");

		var amt2=parseFloat(amt1);		
		if(amt2<0){
			alert("输入的金额小于零,请重新输入!");
			txt_money.focus();
			return;
		}else{		//大于0的正数;
			if(amt1.indexOf(".")!=-1){				
				var str = amt1.substr(amt1.indexOf(".")+1);				
				if(str.length>2){
					alert("输入的金额小数点后只能保留两位,请重新输入!");
					txt_money.focus();
					return;
				}else if(str.length==1){
					amt1=amt1 + "0";
				}else if(str.length<1){
					amt1=amt1 + "00";
				}
			}else{
				amt1=amt1 + ".00";
			}
			if(amt1.charAt(0)=='0' && amt1.indexOf(".")!=1){
			alert("请输入正确的金额!");
			txt_money.focus();
			return;
			}
			//hid_money.value=amt1;
			hid_money.value=(amt1.indexOf(".00")>0)?amt1.substring(0,amt1.indexOf(".")):amt1;
			var temp=amt1.substring(0,amt1.indexOf("."));
			if (temp.length > 10){
			    alert("输入的金额太大，请重新输入!");
			    txt_money.focus();
			    return;
			}
			txt_money.value=comma(temp) + amt1.substring(amt1.indexOf("."));
			return;							
		}
    }
}

/**
* 对金额进行转换，将金额转换为以分为单位
* 例：输入域1234，转换后隐含域为123400
* @param {String} 表单名称
* @param {String} 要转换的金额输入框名称
* @param {String} 金额隐藏域名称
*/
function convertToMoney2(formName,txtmoney,hidmoney){
    var tonumber;
    var re = /,/g;
    var txt_money = eval("document."+formName+"."+txtmoney);
    var hid_money = eval("document."+formName+"."+hidmoney);
    tonumber = txt_money.value.replace(re,"");

    txt_money.value = "";
    if (tonumber !="" && tonumber!=null){
   	rep = / /g;
		var amt = tonumber.replace(rep,"");
		
		for(var j = 0; j < amt.length; j++){
			if(isNaN(parseInt(amt.charAt(j),10)) && amt.charAt(j)!="," && amt.charAt(j)!=".") {
				alert("请输入正确的金额!");
				txt_money.value="";
				txt_money.focus();
				return;
			}
		}
		if(amt.indexOf(".")!=amt.lastIndexOf(".")){
			alert("请输入正确的金额!");
			txt_money.focus();
			return;
		}
	
		re = /,/g;
		var amt1 = amt.replace(re,"");

		var amt2=parseFloat(amt1);		
		if(amt2<0){
			alert("输入的金额小于零,请重新输入!");
			txt_money.focus();
			return;
		}else{		//大于0的正数;
			if(amt1.indexOf(".")!=-1){				
				var str = amt1.substr(amt1.indexOf(".")+1);				
				if(str.length>2){
					alert("输入的金额小数点后只能保留两位,请重新输入!");
					txt_money.focus();
					return;
				}else if(str.length==1){
					amt1=amt1 + "0";
				}else if(str.length<1){
					amt1=amt1 + "00";
				}
			}else{
				amt1=amt1 + ".00";
			}
			if(amt1.charAt(0)=='0' && amt1.indexOf(".")!=1){
			alert("请输入正确的金额!");
			txt_money.focus();
			return;
			}
			hid_money.value=amt1.substring(0,amt1.indexOf(".")) + amt1.substr(amt1.indexOf(".")+1);
			var temp=amt1.substring(0,amt1.indexOf("."));
			if (hid_money.value.length > 18){
			    alert("金额太大");
			    txt_money.focus();
			    return;
			}
			txt_money.value=comma(temp) + amt1.substring(amt1.indexOf("."));
			return;							
		}
    }
}

/**
* 表现形式增加逗号，只对整数部分做处理，由convertToMoney，convertToMoney2调用。
* @param {Integer} 需转换数值	
* @return {String} 转换后的字符串
*/
function comma(number) {
	number = '' + number;
	if (number.length > 3) {
		var mod = number.length % 3;
		var output = (mod > 0 ? (number.substring(0,mod)) : '');
		for (i=0 ; i < Math.floor(number.length / 3); i++) {
			if ((mod == 0) && (i == 0))
				output += number.substring(mod+ 3 * i, mod + 3 * i + 3);
			else
				output += ',' + number.substring(mod + 3 * i, mod + 3 * i + 3);
		}
		return (output);
	}
	else return number;
}

/**
* 去除字符串中的","和"."，转换金额时使用
* @param {Integer}： 需转换数值
* @return {String} 转换后的字符串          	
*/
function uncomma(number){
	
	var pos = number.indexOf(",");
	while(pos!=-1){
		number = number.substring(0,pos)+number.substring(pos+1,number.length);
		pos = number.indexOf(",");
	}
	
	pos = number.indexOf(".");
	while(pos!=-1){
		number = number.substring(0,pos)+number.substring(pos+1,number.length);
		pos = number.indexOf(".");
	}
	
	var pos = number.indexOf("0");
	while(pos==0){
		number = number.substring(1,number.length);
		pos = number.indexOf("0");
	}
	return number;
}
/**
* 修改指定tag的样式
* @param {String} tag的id
* @param {String} 新的样式
*/
function changeClass(tagId,newClassName)
{
	document.getElementById(tagId).className = newClassName;
}

/**
* 打开一个弹出窗口
* @param {String} 要打开页面的url
* @param {String} 新窗口名称
* @param {String} 新窗口属性，如果为null则使用默认属性
*/
function openWindow(url,name,property)
{
	var printtop=(screen.height-600)/2;
	var printleft=(screen.width-500)/2;
	var theproperty;
	
	if ( property == null )
		theproperty= 'width=600,height=450,center=yes,help=no,status=no,scrollbars=yes,resizable=yes,left='+printleft+',top="'+printtop+',screenx='+printleft+',screeny='+printleft;	
	else
		theproperty = property;
	
	window.open(url,name,theproperty);
}

/**
* 清空一个表的内容
* @param {String} 表体的ID
*/
function cleanTableBody(tbodyName)
{
	var tbody  = document.getElementById(tbodyName);
	var rows=tbody.getElementsByTagName("TR");
	var size = rows.length;
	for(var i=0;i<size;i++)
	{
		tbody.deleteRow(0);
	}
}

/**
* 更改一个对象的选中状态，可以用于radio和checkBox
* @param {String} 对象的ID
*/
function doCheck(objectID)
{
	var checkObj = document.getElementById(objectID);
	if(checkObj.checked){
		checkObj.checked = false;
	}else{
		checkObj.checked = true;
	}
}

/**
* 将yyyymmddhhmiss方式显示的日期转为中文显示
* @param {String} yyyymmddhhmiss格式的时间
*/
function getChineseDateTime(dateTime)
{
	var returnDate = dateTime.substr(0,4)+"年"+dateTime.substr(4,2)+"月"+dateTime.substr(6,2)+"日";
	var returnTime = dateTime.substr(8,2)+":"+dateTime.substr(10,2)+":"+dateTime.substr(12,2);
	
	return  returnDate+returnTime; 
}

/**
* 检验日期是否符合YYYYMM的格式，是否合法
* @param {String} 日期字符串
* @return {bool} 是否是合法日期
*/
function isYearMonth(param) {
	var pattern = /^\d+$/;
	if ( param.length != 6 ) {
		return false;
	}
	if(!pattern.test(param)) {
		return false;
	}
	sYear = param.substring( 0, 4 );
	sMonth = param.substring( 4, 6 );
	if ( ( eval( sMonth ) < 1 ) || ( eval( sMonth )  > 12 ) ) {
		return false;
	}
	return true;
}
/**
* 页面链接去掉点击的虚框
*/
function linkblur() {
	var linka = document.getElementsByTagName("a");
	if(linka!=null) {
		for(i=0;i<linka.length;i++){
			linka[i].onfocus=ablur;
		}
	}
}

function ablur(evt) {
	evt = evt?evt:(window.event?window.event:null);
	var srcElement = evt.srcElement? evt.srcElement : evt.target;
	srcElement.blur();
}
/**
* 在小数点后面自动补0(例如：".25" 自动转换成"0.25")
* @param {String} 需要转换的字符串
*/
function addZero(txtmoney) {
	if(txtmoney.charAt(0) == ".") {
		txtmoney = "0" + txtmoney;
	}
	return txtmoney;
}

/**
* 高亮关键字
* @param {String} 搜索结果字符串
* @param {String} 搜索关键字
* @return {String} 关键字高亮的html字符串
*/
function highLightKeyword(content,key)
{
	var SPAN_BEGIN_TAG = '<span class="highLight">';
	var SPAN_END_TAG = '</span>';
	var htmlString = '';
	var searchStartPos = 0;
	while(true)
	{ 
		var keyStartPos = content.indexOf(key,searchStartPos);
		if( keyStartPos<0 )
		{
			htmlString += content.substring(searchStartPos);
			return htmlString;
		}
		var keyEndPos = keyStartPos+key.length;
		htmlString += content.substring(searchStartPos,keyStartPos);
		htmlString += SPAN_BEGIN_TAG;
		htmlString += key;
		htmlString += SPAN_END_TAG;
		searchStartPos = keyEndPos;
	}
}

/**
* 区域显示/隐藏
* @param {string} 区域id
*/
function changeDisplay(areaId)
{
	var spanObject = document.getElementById(areaId);
	if ( spanObject.style.display == 'none'){
		spanObject.style.display = '';
	}else{
		spanObject.style.display = 'none';
	}
}



/**
* 生成Excel文件并保存
* @param {String} 要生成的数据所在的表单名称
* @param {String} 要生成的数据所在的table名称	
*/
function exportexcel(formName,tableName){
  	var oXL = new ActiveXObject("Excel.Application");
  	oXL.Visible = true;
  	var oWB = oXL.Workbooks.Add();
  	var oSheet = oWB.ActiveSheet;
  	var div1=$(formName);
  	var table1=$(tableName);
  	var table=new Array();

	var retArr = getTableRowsCols(table1);
  	var rlen=retArr[0];
  	var clen=retArr[1];

  	var flagTable=new Array(rlen);
  	for(var i=0;i<rlen;i++){
  		flagTable[i]=new Array(clen);
  		for(var j=0;j<clen;j++){
  			flagTable[i][j]=0;
  		}
  	}

	var rowBegin=1, colBegin=1;		//导出的表格的起始位置

  	var c1=oSheet.Cells(rowBegin,colBegin);
  	var c2=oSheet.Cells(rlen+rowBegin-1,clen+colBegin-1);
  	
  	oSheet.Range(c1,c2).VerticalAlignment = -4108;
  	oSheet.Range(c1,c2).HorizontalAlignment =  -4108;
  	
  	exportTable(oSheet, flagTable, table1, rowBegin, colBegin);    	
    	      	
   	oSheet.Range(oSheet.Cells(rowBegin,colBegin),oSheet.Cells(rlen+rowBegin-1,clen+colBegin-1)).EntireColumn.AutoFit();
  	oXL.UserControl = true;
  	oXL.Quit();
}

/**
* 返回当前表格的行数和列数
* 被exportexcel调用
* @param {Object} 表格对象
* @param {Array} 数组retArr, retArr[0], 行数；retArr[1], 列数	
*/
function getTableRowsCols(objTable)
{
	var rowCnt=0, colCnt=0;
	for (var i=0; i<objTable.rows.length; i++) {
		var row = objTable.rows[i];	//当前行
		var rowRows=1, rowCols=0;	//当前行的初始行数和列数
		for (var j=0; j<row.cells.length; j++) {
			var cell = row.cells[j];	//当前单元格
			if (cell.firstChild !=null && cell.firstChild.tagName == "TABLE") {
				var inRetArr = getTableRowsCols(cell.firstChild);
				rowCols +=inRetArr [1];
				rowRows = rowRows<inRetArr[0] ? inRetArr[0] : rowRows;
			} else {	//不是表格
				rowCols += parseInt(cell.colSpan);
				rowRows = rowRows<parseInt(cell.rowSpan) ? parseInt(cell.rowSpan) : rowRows;
			}
		}
		colCnt = colCnt<rowCols ? rowCols : colCnt;
		rowCnt += rowRows;
	}
	var retArr = new Array();
	retArr[0] = rowCnt;
	retArr[1] = colCnt;
	
	return retArr;
}

/**
* 导出表格
* 被exportexcel调用
*/
function exportTable(oSheet, flagTable, objTable, rowBegin, colBegin){
	var flagRow=0, flagCol=0;		//跟踪当前的表示表中的相对位置
	for(var i=0; i<objTable.rows.length; i++) {
		var row = objTable.rows[i];	//当前行
		flagCol = 0;
		var subTableRows = 1;		//当前行若有表格，则记录其中最大的行数
		for (var j=0; j<row.cells.length; j++) {
			while (flagTable[rowBegin-1+flagRow][colBegin-1+flagCol]==1) {
				flagCol++;
			}
			var cell=row.cells[j];	//当前单元格
			if (cell.firstChild !=null && cell.firstChild.tagName == "TABLE") {
				var retArrRows = getTableRowsCols(cell.firstChild)[0];
				subTableRows = subTableRows<retArrRows ? retArrRows : subTableRows;
				exportTable(oSheet, flagTable, cell.firstChild, rowBegin+flagRow, colBegin+flagCol);
			} else {
				
				oSheet.Cells(rowBegin+flagRow, colBegin+flagCol).Font.Bold=1;
	               	 				
				var rs=parseInt(cell.rowSpan);
	               	 	var cs=parseInt(cell.colSpan);
	               	 	oSheet.Cells(rowBegin+flagRow, colBegin+flagCol).NumberFormatLocal="@";
	               	 	oSheet.Cells(rowBegin+flagRow, colBegin+flagCol).Value = cell.innerText;
	               	 	oSheet.Range(oSheet.Cells(rowBegin+flagRow, colBegin+flagCol),oSheet.Cells(rowBegin+flagRow+rs-1,colBegin+flagCol+cs-1)).MergeCells = 1;  
				
				//填写当前单元格在标志表格中的标志
				for(var k=0; k<rs; k++) {
					for(var l=0; l<cs; l++) {
						flagTable[rowBegin-1+flagRow+k][colBegin-1+flagCol+l]=1;
					}
				}
			}
				
			flagCol =flagCol + cs - 1;	//加速标志表格的列的移动，因为当前表格已经标识了cs个标志单元  			              		
		}
		flagRow += subTableRows;
	}	
}

/**
* 调用isDate方法，检验输入的日期是否合法
* @param {object} 日期输入框
*/
function checkDate(obj) {
	if (!(obj.value == '' || isDate(obj.value)))
	{
		alert("日期格式不正确!");
		obj.focus();
	}	
}

/**
* 检查起始和结束日期是否合法
* @param {object} 起始日期输入框
* @param {object} 结束日期输入框
*/
function checkDateArea(beginDateObj,endDateObj) {
	var beginDateValue = beginDateObj.value;
	var endDateValue = endDateObj.value;
	
	if (beginDateValue != '') {
		if (!isDate(beginDateValue)) {
			alert("起始日期格式不正确!");
			beginDateObj.focus();
			return false;
		}
		
		if(endDateValue == '') {
			alert('请输入结束日期');
			endDateObj.focus();
			return false;
		}
	}
	if (endDateValue != '') {
		if (!isDate(endDateValue)) {
			alert("结束日期格式不正确!");
			endDateObj.focus();
			return false;
		}
		
		if(beginDateValue == '') {
			alert('请输入起始日期');
			beginDateObj.focus();
			return false;
		}
	}
	if ( beginDateValue != '' && endDateValue != '' && 
			( parseInt(beginDateValue)  >  parseInt(endDateValue) ) ) {
			alert('起始日期不能大于结束日期');
			beginDateObj.focus();
			return false;
	}
	return true;
}

/**
* 检查起始和结束金额域是否合法
* @param {object} 起始金额输入框
* @param {object} 结束金额输入框
*/
function checkMoneyArea(beginAmtObj,endAmtObj) {
	var beginAmtValue = beginAmtObj.value;
	var endAmtValue = endAmtObj.value;
	if (beginAmtValue != '') {
		if(endAmtValue == '') {
			alert('请输入结束金额');
			endAmtObj.focus();
			return false;
		}
	}
	if (endAmtValue != '') {
		if(beginAmtValue == '') {
			alert('请输入起始金额');
			beginAmtObj.focus();
			return false;
		}
	}
	if ( beginAmtValue != '' && endAmtValue != '' && 
			( parseFloat(beginAmtValue)  >  parseFloat(endAmtValue) ) ) {
		alert('起始金额不能大于结束金额');
		beginAmtObj.focus();
		return false;
	}
	return true;
}
