function common_message() {
	var data = new Map();

	this.get = function(key) {
		return data.get(key);
	}

	this.put = function(key, value) {
		data.put(key, value);
	}
}

var commonObject = new common_message();
//commonObject.put('', '');

commonObject.put('date.dateRange', '{0}不正确，应该在 {start} 和 {end} 之间！');
commonObject.put('date.dateStyle', '{0}格式不符合yyyy-MM-dd样式！');
commonObject.put('date.empty', '{0}不能为空！');
commonObject.put('date.timeRange', '{0}值不正确，应该在 {start} 和 {end} 之间！');
commonObject.put('date.timeStyle', '{0}格式不符合HH:mm样式！');
commonObject.put('number.empty', '{0}不能为空!');
commonObject.put('number.numberRange', '{0}的值必须大于等于{minValue}且小于等于{maxValue}！');
commonObject.put('number.type', '{0}格式不正确！');
commonObject.put('number.validatebit', '{0}的位数不能小于{min}位,且不能大于{max}位！');
commonObject.put('string.empty', '{0}不能为空！');
commonObject.put('string.length', '{0}的长度不能大于{max}个字符长度！');
commonObject.put('string.style', '{0}格式不正确！');
function showinfo(value) {
	var info= '以下原因导致提交失败：\n';
	info = info + value;
	alert(info);
	
	}
	
	// 通过帐户选择合适的交易类型(除神州行和外卡之外就是人民币)
				var retriDealTypeByMemAccode = function( memberAcctcode )
				{
						var dealTypeNode = document.getElementById( 'dealType' );
						// 清空dealTypeNode下的所有选项
						dealTypeNode.options.length = 0;
						var memberAcctText = memberAcctcode[memberAcctcode.selectedIndex].text;
						var memberAcctValue = memberAcctcode[memberAcctcode.selectedIndex].value;
						// 如果onchange恢复到“请选择帐户”上,则重新按照顺序加载所有的交易类型。
						if( memberAcctValue == '' )
						{
							generateOptionsByMap.call( dealTypeNode, memberAcctcode_dealType_relation['all'] );
						}
						else if( memberAcctText.search( '神州行' ) != -1 )
						{
							generateOptionsByMap.call( dealTypeNode, memberAcctcode_dealType_relation['szx'] );
						}
						else if( memberAcctText.search( '外卡' ) != -1 )
						{
							generateOptionsByMap.call( dealTypeNode, memberAcctcode_dealType_relation['wk'] );
						}
						else
						{
							generateOptionsByMap.call( dealTypeNode, memberAcctcode_dealType_relation['rmb'] );
						}
				}
					
				// 帐户和交易类型的对应关系对象 //去掉了,'4':'账户互转'
				var memberAcctcode_dealType_relation = {
					'rmb':{'0':'所有交易类型','930':'支付网关','970':'快钱链','910':'账户充值','920':'账户提现','955':'批量付款到快钱账户','956':'批量付款到银行账户','950':'网上付款','925':'付款到银行账户','940':'退款','100':'其他'},
					'szx':{'0':'所有交易类型','721':'神州行网关','723':'神州行支付结余','722':'神州行兑换'},
					'wk':{},
					'all':{'0':'所有交易类型','930':'支付网关','970':'快钱链','910':'账户充值','920':'账户提现','955':'批量付款到快钱账户','956':'批量付款到银行账户','950':'网上付款','925':'付款到银行账户','940':'退款','100':'其他','721':'神州行网关','723':'神州行支付结余','722':'神州行兑换'}
				};
				
				// 根据具体帐户组合交易类型的下拉列表
				var generateOptionsByMap = function( map )
				{
					for( var key in map )
					{
						if( map.propertyIsEnumerable( key ) && map.hasOwnProperty( key ) )
						{
							this.add( new Option( map[key], key ) );
						}
					}
				}
				
		// 给出帐户排列顺序(按数字大小顺序进行排列)
		var memberAcctcode_order = {1:'人民币',2:'神州行',3:'外卡'};
				
		/**
		 * added by kevin.qiu on 2007-09-21 
		 *
		 * 其中选择账户为列表框，当只有一个账户时默认读出该账户；如果有2个以上账户，显示请选择（读取顺序是人民币账户，神州行账户，外卡账户的方式，人民币多个账户按账号顺序依次排列，外卡账户按外卡收款账户，外卡账户，保证金账户顺序）。积分账户不需要列出。
		 * 实际结果:人民币账户在神州行收款账户后面
		 */
		var handlememberAcctcode = function()
		{
				var memberAcctcode = document.getElementById( 'memberAcctcode' );
				// 拿到帐户中除“请选择“外其他的选项的数组。
				var resultArray = removeNullValueFromSelectNode( memberAcctcode ).call( null );
				if( typeof resultArray == 'object' && resultArray.constructor == Array )
				{
						// 当只有一个账户时默认读出该账户
						if( resultArray.length == 1 )
						{
								memberAcctcode.value = resultArray[0].value;
								retriDealTypeByMemAccode.call( null, memberAcctcode );
								memberAcctcode.parentNode.insertBefore( document.createTextNode( resultArray[0].text ), memberAcctcode );
								memberAcctcode.style.display = 'none';
						}
						// 如果有2个以上账户，显示请选择（读取顺序是人民币账户，神州行账户，外卡账户的方式，人民币多个账户按账号顺序依次排列，外卡账户按外卡收款账户，外卡账户，保证金账户顺序）。
						else
						{
								ordermemberAcctcode.call( null, memberAcctcode );
						}
				}
		}
		
		// 剔除一个select下拉框中除了空值的保留其他选项的options数组。
		// added by kevin.qiu on 2007-09-21
		var removeNullValueFromSelectNode = function( selectNode )
		{
				var resultArray = new Array();
				for( var i = 0; i < selectNode.options.length; i++ )
				{
						var innervalue = selectNode.options[i].value;
						if( innervalue == '' )
						{
								continue;
						}
						resultArray.push( selectNode.options[i] );
				}
				return function()
				{
						return resultArray;
				}
		}
		
		// 如果有2个以上账户，显示请选择（读取顺序是人民币账户，神州行账户，外卡账户的方式，人民币多个账户按账号顺序依次排列，外卡账户按外卡收款账户，外卡账户，保证金账户顺序）。
		// added by kevin.qiu
		var ordermemberAcctcode = function( memberAcctcode )
		{
				if( typeof memberAcctcode == 'undefined' )
				{
						return false;
				}
				// 临时数组，存放按照模板顺序排列好后的options选项。
				var tempArrayObj = {'rmb':[],'szx':[],'wk':[]};
				var optionsArray = memberAcctcode.options;
				for( var i = 0; i < optionsArray.length; i++ )
				{
					// 请选择帐户去掉。
					if( optionsArray[i].value == '' )
					{
							continue;
					}
					if( optionsArray[i].text.indexOf( '神州行' ) != -1 )
					{
						tempArrayObj['szx'].push( optionsArray[i] );
					}
					else if( optionsArray[i].text.indexOf( '外卡' ) != -1 )
					{
						tempArrayObj['wk'].push( optionsArray[i] );
					}
					// 积分的去掉不显示了continue跳出这次循环
					else if( optionsArray[i].text.indexOf( '积分' ) != -1 )
					{
						continue;
					}
					else
					{
						tempArrayObj['rmb'].push( optionsArray[i] );
					}
				}
				// 确定加载
				memberAcctcode.options.length = 0;
				memberAcctcode.add( new Option( '请选择帐户', '' ) );
				generateOptionsByArray( memberAcctcode, tempArrayObj['rmb'] );
				generateOptionsByArray( memberAcctcode, tempArrayObj['szx'] );
				generateOptionsByArray( memberAcctcode, tempArrayObj['wk'] );
		}

		// 根据具体的options产生下拉框。
		var generateOptionsByArray = function( memberAcctcode, tempArray )
		{
				for( var i = 0; i < tempArray.length; i++ )
				{
						memberAcctcode.add( tempArray[i] );
				}
		}