//****************************************************************************
//【版权所有·尊重他人创作】
// History:
// Created by 郭宝华(bob guo), bhguo@163.com, 2003.12.17 
//****************************************************************************

//数据表树中用于识别哪个部分的变量
var SheetInfor_ID = 1
var SheetStructure_ID = 2
var SheetReport_ID = 3
var SheetRole_ID = 4
var SheetMail_ID = 5
var SheetTable_ID = 6
var SheetRelation_ID = 7

//字典树中用于识别哪个部分的变量
var DictInfor_ID = 1
var DictItem_ID = 2

//数据字段类型常量
var DataType_Command = 0   //非数据，系统命令
var DataType_Number = 1    //数字
var DataType_Text = 2    //文字
var DataType_TextArea = 3    //文字段
var DataType_Date = 4      //日期
var DataType_DateAndTime = 5      //日期和时间
var DataType_Option = 6    //下拉框
var DataType_Email = 7     //email
var DataType_HyperLink = 8 //超链
var DataType_Attach = 9 //附件
var DataType_Counter = 10 //自动编号
var DataType_Checkbox = 11 //勾选框

var NumberMaxLen = 15	//最多允许用户输入的有效位数，如：123456789012.34

//公式选项
var FormulaType_No = 1					//一般字段
var FormulaType_Simple = 2				//简单数值计算
var FormulaType_Condition = 3			//条件数值计算
var FormulaType_SimpleDateDiff = 4		//简单日期间隔
var FormulaType_ConditionDateDiff = 5	//条件日期间隔
var FormulaType_SimpleDateAdd = 6		//简单日期计算
var FormulaType_ConditionDateAdd = 7	//条件日期计算
var FormulaType_SimpleText = 8			//简单文字拼接
var FormulaType_ConditionText = 9		//条件文字拼接
var FormulaType_ConditionOption = 10	//自动推定选项

//公式字串的分隔符
var ConItemSep=String.fromCharCode(5);	
var FormulaSep=String.fromCharCode(3);
var ItemSep=String.fromCharCode(2);
var GroupSep = String.fromCharCode(1)	//group seperator 

//颜色选项
var FieldColorType_No = 1					//未设置
var FieldColorType_Condition = 2			//按条件选用颜色

//尾数处理选项
var HowRound_4Cut5Step = 1					//四舍五入
var HowRound_Cut = 2								//截断
var HowRound_TailStep = 3						//见尾即进

//图表类型
var Chart_Bar = 1
var Chart_Line = 2
var Chart_Pie = 3

//引用字段的引用时机
var RefTime_Always = 1			//始终引用其数据；
var RefTime_CanModify = 2		//引用后可自由修改

//记录数作为一个统计字段呈现在用户设定界面，赋给一个特殊的FieldID
var RecordCount_ID = 207 
var RecordCount_Caption = "记录数"

//各数据类型是否有范围概念
var DataType_HasRange = new Array(1,0,0,1,1,0,0,0,0,0,0);

//各数据类型的本真类型,，只有日期<-->日期和时间认作是相同的类型
var DataType_Core = new Array(1,2,3,4,4,5,6,7,8,2,9);

//各数据类型的标题，应与数据库中的 Option203 一致
var DataType_Caption = new Array("数值","文字","文字段","日期","日期和时间","下拉框","Email","超链","附件","自动编号","勾选框")

var FldMaxSize = 120	//用户可以设定的字段的最大长度


//系统字段、系统表的起始编号,用户字定义的应小于这个数量
var SystemFrom_ID = 201

//数据表操作的最小最大编号
var SheetOperationMin=1
var SheetOperationMax=100

var MaxPageSize = 100	//每页最大记录数

//拼写Javascript 端object名称用的特征字符
var JoinChar = "A"

//页面上不要打印的区域
var	NoPrintStart="<!--NoPrintStart-->";
var	NoPrintEnd="<!--NoPrintEnd-->";

//提醒计划类型
var RemindPlan_OnceOnly = 1
var RemindPlan_PerHour = 2
var RemindPlan_PerDay = 3
var RemindPlan_PerWeek = 4
var RemindPlan_PerMonth = 5
var RemindPlan_BirthDay = 6

//系统内部短信组别
var MsgGroupReceived_ID=1
var MsgGroupSended_ID=2
var MsgGroupDeleted_ID=3

//设置提醒模板时选择用户的“所有用户”
var AllUser_ID = 0
var AllUser_Caption = "所有用户" 

//查询中用到的特殊条件的标记
var EmptyItem = "[空白]"
var NotEmptyItem = "[任何非空]"
var Logic_Is="是"

//来电弹屏
var TEvent_GetFsk=30;	//得到FSK来电
var TEvent_GetDTMF=32;	//得到DTMF码来电

var browser = navigator.appName;

var ErrorMessage;

function MoveListItem(From,To)
{
	var FromIndex,FromCount,ToIndex,ToCount;
	FromIndex=From.selectedIndex
	FromCount=From.length
	if(FromIndex!=-1)
	{
		//获得待移动的项目
		var ValueFrom,TextFrom,ValueTo,TextTo
		ValueFrom=From.options[FromIndex].value
		TextFrom=From.options[FromIndex].text

		//向待插入的list插入待移动项目
		var ToCount=To.length
		To.options[ToCount]=new Option("temp",1)
		for (var i=0;i<ToCount;i++)
		{
			//根据名称寻找正序的插入位置
			TextTo=From.options[i].text
			if(TextFrom<=TextTo)
			{
				var j= ToCount
				while (j>i)
				{
					To.options[j].value=To.options[j-1].value
					To.options[j].text=To.options[j-1].text
					j=j-1
				}
				break
			}			
		}
			
		//插入位置为i
		To.options[i].value=ValueFrom
		To.options[i].text=TextFrom
		To.selectedIndex=i

		//在可选list中去掉选中的项目
		for (var i=FromIndex;i<FromCount-1;i++)
		{
			From.options[i].value=From.options[i+1].value
			From.options[i].text=From.options[i+1].text
		}
		From.length=FromCount-1
		if(From.length>0)
		{
			if(FromIndex>=From.length)
			{
				From.selectedIndex=FromIndex-1
			}
			else
			{
				From.selectedIndex=FromIndex
			}
		}
		else
		{
			From.selectedIndex=-1
		}
	}
	else
	{
		if(FromCount>0)
		{
			alert("您要选择哪个列表项？请选择。"); 
		}
		else
		{
			alert("列表空，没有可选列表项。"); 
		}
	}
}

//查询界面上的数据类型、数值范围合法性判断
function SearchDataCheck(Caption,Type,Value,RangeFrom,RangeTo) 
{
	//对于数值、日期、日期和时间，可以输入特殊查询标记
	if (!isEmpty(Value) && (Type==DataType_Number || Type==DataType_Date || Type==DataType_DateAndTime))
	{
		if(Value==EmptyItem || Value==NotEmptyItem)
			return(true);
		else
		{
			if (FormatToFieldID(Value).indexOf("[Fld")!=-1)	//如果用字段运算表达式作为条件
			{
       			Value=FormatToDummy(Value);
				if (Type==DataType_Number)	//如果是数值表达式，则不需要常规检查，直接eval一下，确定是合法的运算即可
				{
					try
					{
						eval('ret='+Value);
					}
					catch(e)
					{
						alert("字段运算表达式有错误！请检查是否存在无法识别的字段名称、公式语法是否正确。");
						return(false);
					}
					if(isNaN(ret))
					{
						alert("字段运算表达式有错误！请检查是否存在无法识别的字段名称、公式语法是否正确。");
						return(false);
					}
				}
				else
				{
					//如果是日期表达式，目前只能是一个单独的日期字段，不可做运算。因此FormatToDummy后仍需要做常规检查。
					return(DataCheck(Caption,Type,Value,RangeFrom,RangeTo));
				}
			}
			else
			{
				return(DataCheck(Caption,Type,Value,RangeFrom,RangeTo));
			}
		}
	}
}

//数据类型、数值范围合法性判断
function DataCheck(Caption,Type,Value,RangeFrom,RangeTo) 
{
	switch (Type)
	{
		case DataType_Number:
			if (!isEmpty(Value))
			{
				Value=Value.replace(/,/g,''); //去掉逗号
				if(!isNumber(Value))
				{
					alert(Caption + "输入不正确，请输入数字。");
					return(false);	
				}
				else
				{
					if(!isEmpty(RangeFrom))
					{
						RangeFrom=RangeFrom.replace(/,/g,''); //去掉逗号
						if(parseFloat(Value)<parseFloat(RangeFrom))
						{
							alert(Caption + "输入的数值范围不正确，大小颠倒，请更正。");
							return(false);	
						}
					}
					if(!isEmpty(RangeTo))
					{
						RangeTo=RangeTo.replace(/,/g,''); //去掉逗号
						if(parseFloat(Value)>parseFloat(RangeTo))
						{
							alert(Caption + "输入的数值范围不正确，大小颠倒，请更正。");
							return(false);	
						}
					}
					Value=replace(Value,'-',''); //去掉符号
					Value=replace(Value,'+',''); //去掉符号
					Value=replace(Value,'.',''); //去掉小数点
					Value=JTrim(Value)
					if(Value.length>NumberMaxLen)
					{
						alert(Caption + "输入的数值太长，最多容纳" + NumberMaxLen + "位有效数字，请更正。");
						return(false);	
					}
				}
			}
			break;
		case DataType_Date:
			if (!isEmpty(Value))
			{
				if(!isValidDate(Value))
				{
					alert(Caption + "输入不正确。\n" + ErrorMessage);
					return(false);	
				}
				else
				{
					if(!isEmpty(RangeFrom))
					{
						if(isValidDatePeriod(Value,RangeFrom)==1)
						{
							alert(Caption + "输入的日期范围不正确，前后颠倒，请更正。");
							return(false);	
						}
					}
					if(!isEmpty(RangeTo))
					{
						if(isValidDatePeriod(RangeTo,Value)==1)
						{
							alert(Caption + "输入的日期范围不正确，前后颠倒，请更正。");
							return(false);	
						}
					}
				}
			}
			break;
		case DataType_DateAndTime:
			if (!isEmpty(Value))
			{
				if(!isValidDateAndTime(Value))
				{
					alert(Caption + "输入不正确。\n" + ErrorMessage);
					return(false);	
				}
				else
				{
					if(!isEmpty(RangeFrom))
					{
						if(isValidDateAndTimePeriod(Value,RangeFrom)==1)
						{
							alert(Caption + "输入的日期时间范围不正确，前后颠倒，请更正。");
							return(false);	
						}
					}
					if(!isEmpty(RangeTo))
					{
						if(isValidDateAndTimePeriod(RangeTo,Value)==1)
						{
							alert(Caption + "输入的日期时间范围不正确，前后颠倒，请更正。");
							return(false);	
						}
					}
				}
			}
			break;
		case DataType_Email:
			if (!isEmpty(Value))
			{
				if(!isVaildEmail(Value))
				{
					alert(Caption + "输入不正确。\n" + ErrorMessage);
					return(false);	
				}
			}
			break;
		case DataType_Attach:
			break;
	}

	return(true);	
	
}

function isNumber( str )
{
	var num = JTrim( str );
	if ( num == "" || isNaN(num))
	{
		return (false);
	}
	return (true);
}

//将日期型数据转换成适合的格式
//参数：
//ToType，要求的格式，2种：DataType_Date，或 DataType_DateAndTime
//AppendEndTime，当要求的格式为 DataType_DateAndTime且未填写时间时起作用，
//如果为1，补 23:59:59，否则补 00:00:00
//Value，数值
//返回参数：
//History:
//Created by 郭宝华(bob guo) 2004 6 23
function DateConvert(ToType,AppendEndTime,Value)
{
	var OldValue,NewValue;
	var parts;

	Value=Value.replace(/  /g,' ');  //双空格以上的，改为单空格
	OldValue=Value;
	if(ToType==DataType_Date)
	{
		if(isValidDateAndTime(Value))
		{
			parts=strDateAndTime.split(" ");
			NewValue=parts[0];
			return NewValue;
		}
		else
		{
			return OldValue;
		}
	}
	else
	{
		if(isValidDate(Value))
		{
			if(AppendEndTime==1)
				NewValue=Value + " 23:59:59";
			else
				NewValue=Value + " 00:00:00";
			return NewValue;
		}
		else
		{
			return OldValue;
		}
	}
}

//格式化数值类型的数据
//参数：
//TypeFormat，要求的格式。从左致右，各位的意义分别是：小数位数，是否使用千分位，尾数处置（1--四舍五入，2--截断，3--见尾即进）
//Value，数值
//返回参数：
//History:
//Created by 郭宝华(bob guo) 2004 2 4
function FormatNumber(TypeFormat, Value)
{
	var strInt,strDecimal;
	var OldValue,NewValue;
	var decimalLength,NeedComma,HowRound
	
	OldValue=Value;
	Value=Value.replace(/,/g,'');  //去掉逗号
	Value=Value.replace(/ /g,'');  //去掉空格
	//如果不是数字，返回原值
	if(isNumber(Value)!=true)
	{
		return(OldValue);
	}
	else
	{
		if(TypeFormat.length != 3 || isNumber(TypeFormat)!=true)
			//如果格式字串无法解释，则不做格式转换，返回原值
			return(OldValue);
		else
		{
			//解析要求的格式信息
			decimalLength=parseInt(TypeFormat.charAt(0))
			NeedComma=parseInt(TypeFormat.charAt(1));
			HowRound=parseInt(TypeFormat.charAt(2));
			
			//获得原整数部分、小数部分
			var parts
			parts=Value.split(".");
			if(parts.length==2)
			{
				strInt=parts[0];
				strDecimal=parts[1];
			}
			else
			{
				if(parts.length==1)
				{
					strInt=parts[0];
					strDecimal="";
				}
			}

			//多余尾数的舍入
			if(strDecimal!="" && strDecimal.length>decimalLength)
			{
				var tempDecimal,Old,OldInt,NewInt;
				tempDecimal="."+strDecimal;
				Old=Math.pow(10,decimalLength) * parseFloat(tempDecimal);
				if(HowRound==HowRound_4Cut5Step)
				{
					NewInt=Math.round(Old);
					if(decimalLength>0)
						strDecimal=NewInt.toString();
					else
					if(NewInt>0)
					{
						strInt=parseInt(strInt)+1;
						strInt=strInt.toString();
					}
				}
				
				if(HowRound==HowRound_Cut)
					if(decimalLength>0)
						strDecimal=tempDecimal.substr(1,decimalLength);
					else
						strDecimal="";

				if(HowRound==HowRound_TailStep)
					if(parseFloat(tempDecimal.substr(decimalLength+1,1))>=1)
					{
						if(decimalLength>0)
						{
							NewInt=parseFloat(tempDecimal.substr(1,decimalLength))+1;
							strDecimal=NewInt.toString();
						}
						else
						{
							strInt=parseInt(strInt)+1;
							strInt=strInt.toString();
						}
					}
			}
			
			//处理整数部分的千分位
			var intLength,strNewInt,strRemain;
			strNewInt=strInt;
			if(NeedComma == 1)
			{
				intLength=strInt.length;
				if(intLength>3)
				{
					strNewInt="";
					for(var i=3;i<intLength;i=i+3)
					{
						strRemain=strInt.slice(0,intLength-i);
						if(isNumber(strRemain)==true)
						{
							strNewInt= "," + strInt.slice(intLength-i,intLength-i+3) + strNewInt;
						}
						else
						{
							strNewInt= strInt.slice(intLength-i,intLength-i+3) + strNewInt;
							break;
						}
					}
					strNewInt=strRemain + strNewInt;
				}
			}
			NewValue=strNewInt;
      
			//处理小数位
			var strNewDecimal;
			strNewDecimal="";
			if(decimalLength>0)
			{
				for(var i=1;i<=decimalLength;i++)
				{
					if(i<=strDecimal.length)
					{
						strNewDecimal=strNewDecimal + strDecimal.charAt(i-1);
					}
					else
					{
						strNewDecimal=strNewDecimal + "0";
					}
				}
				NewValue=NewValue + "." + strNewDecimal;
			}
			return(NewValue);
		}
	}
}

function JTrim(str)    
{
   
	var i = 0;
	var len = str.length;
	if ( str == "" ) return( str );
	j = len -1;
	flagbegin = true;    
	flagend = true;    
	while ( flagbegin == true && i< len) 
	{
	   if ( str.charAt(i) == " " ) 
		{
		  i=i+1;
		  flagbegin=true;
		}
		else
		{
			flagbegin=false;
		}
	} 
	       
	while  (flagend== true && j>=0)
	{
	    if (str.charAt(j)==" ")
		{ 
			j=j-1;
			flagend=true;
		}
		else
		{
			flagend=false;
		}
	}
	
	if ( i > j ) return ("")
	
	trimstr = str.substring(i,j+1);
	return trimstr;
} 

//判断是否有效的闰年
//true
//false
function LeapYear( strYear )
{
	var year;
	year = parseInt(strYear,10);
	if ( ( (year % 4)==0 && (year % 100)!=0 ) || (year % 400)==0 )
		return(true);
	else
		return(false);
}

//判断是否有效的日期格式
//true,格式符合要求
//false,格式不符合要求
//郭宝华，2003-12-15 coding
function isValidDate( strDate )
{
	var parts
	var year, month, day;
	parts=strDate.split("-");
	if(isValidDateAndTime(strDate))
	{
		ErrorMessage="日期格式不对，正确的日期格式为YYYY-MM-DD。其中的时间是多余的，请更正。";
		return (false);
	}
	
	if(parts.length!=3)
	{
		ErrorMessage="日期格式不对，正确的日期格式为YYYY-MM-DD，请更正。";
		return (false);
	}
	else
	{
		year = JTrim(parts[0]);
		month = JTrim(parts[1]);
		day = JTrim(parts[2]);
	}
	if ( year=="" || month==""|| day=="" ) 
	{
		ErrorMessage="日期格式不对，正确的日期格式为YYYY-MM-DD，请更正。";
		return (false);
	}
	if ( isNaN(year) || isNaN(month)|| isNaN(day) ) 
	{
		ErrorMessage="日期的年、月、日都应该是数值型，请更正。";
		return (false);
	}
	else 
	{
		year = parseInt(year,10);
		month = parseInt(month,10);
		day = parseInt(day,10);
	}
	if ( year < 1753 || year > 9999 ) 
	{
		ErrorMessage="日期的有效年份在1753--9999之间，请更正。";
		return (false);
	}
	if ( month < 1 || month > 12 ) 
	{
		ErrorMessage="日期的月份应该在1--12之间，请更正。";
		return (false);
	}
	if ( month==4 || month==6 || month==9 || month==11 ) 
	{
		if ( day < 1 || day > 30 ) 
		{
			ErrorMessage= month + "月份的日应该在1--30之间，请更正。";
			return (false);
		}
	}
	if ( month==1 || month==3 || month==5 || month==7 || month==8 || month==10 || month==12) 
	{
		if ( day < 1 || day > 31 ) 
		{
			ErrorMessage= month + "月份的日应该在1--31之间，请更正。";
			return (false);
		}
	}
	if ( month==2) 
	{
		if (LeapYear(year)==true)
		{
			if ( day < 1 || day > 29 ) 
			{
				ErrorMessage= year + "为闰年、" + month + "月份的日应该在1--29之间，请更正。";
				return (false);
			}
		}
		else
		{
			if ( day < 1 || day > 28 ) 
			{
				ErrorMessage= year + "不是闰年、" + month + "月份的日应该在1--28之间，请更正。";
				return (false);
			}
		}
	}
	return (true);
}

//判断是否有效的时间格式
//true,格式符合要求
//false,格式不符合要求
//郭宝华，2003-12-15 coding
function isValidTime( strTime )
{
	var parts
	var hour, minute, second;
	parts=strTime.split(":");
	if(parts.length!=3)
	{
		if(parts.length==2)
		{
			strTime=strTime + ":00";
			parts=strTime.split(":");
		}
		else
		{
			ErrorMessage="时间格式不对，正确的时间格式为hh:mm:ss，请更正。";
			return (false);
		}
	}
	hour = JTrim(parts[0]);
	minute = JTrim(parts[1]);
	second = JTrim(parts[2]);
	if ( hour=="" || minute==""|| second=="" ) 
	{
		ErrorMessage="时间格式不对，正确的时间格式为hh:mm:ss，请更正。";
		return (false);
	}
	if ( isNaN(hour) || isNaN(minute)|| isNaN(second) ) 
	{
		ErrorMessage="时间的时、分、秒都应该是数值型，请更正。";
		return (false);
	}
	else 
	{
		hour = parseInt(hour,10);
		minute = parseInt(minute,10);
		second = parseInt(second,10);
	}
	if ( hour < 0 || hour > 23 ) 
	{
		ErrorMessage="时间的时应该在0--23之间，请更正。";
		return (false);
	}
	if ( minute < 0 || minute > 59 ) 
	{
		ErrorMessage="时间的分应该在0--59之间，请更正。";
		return (false);
	}
	if ( second < 0 || second > 59 ) 
	{
		ErrorMessage="时间的秒应该在0--59之间，请更正。";
		return (false);
	}

	return (true);
}

//判断是否有效的日期时间格式
//true,格式符合要求
//false,格式不符合要求
//郭宝华，2003-12-15 coding
function isValidDateAndTime( strDateAndTime )
{
	var parts
	var strDate, strTime;
	parts=strDateAndTime.split(" ");
	if(parts.length!=2)
	{
		ErrorMessage="日期时间格式不对，正确的日期时间格式为YYYY-MM-DD hh:mm:ss，请更正。";
		return (false);
	}
	else
	{
		strDate = JTrim(parts[0]);
		strTime = JTrim(parts[1]);
		if(isValidDate(strDate)==true)
		{
			if(isValidTime(strTime)==true)
			{
				return(true);
			}
		}
		return(false);
	}
}

//判断是否有效的起止日期范围
//1---yes,from小于to
//0---from等于to
//-1---from大于to
//郭宝华，2003-12-15 coding
function isValidDatePeriod( strFrom, strTo)
{
  var ret;
	ret=isValidPeriod( strFrom, strTo, "-")
	return(ret)
}

//判断是否有效的起止日期时间范围
//1---yes,from小于to
//0---from等于to
//-1---from大于to
//郭宝华，2003-12-15 coding
function isValidDateAndTimePeriod( strFrom, strTo )
{
  var ret;
  var from,to;
  
  from = strFrom.split(" ")
  to = strTo.split(" ")
  ret=isValidPeriod(from[0],to[0],"-")
  if(ret!=0)
		return(ret)
	else
	{
		from[1]=FormatTime(from[1]);
		to[1]=FormatTime(to[1]);
		ret=isValidPeriod(from[1],to[1],":")
		return(ret) 
	}
}


//判断是否有效的起止范围
//1---yes,from小于to
//0---from等于to
//-1---from大于to
//郭宝华，2003-12-15 coding
function isValidPeriod( strFrom, strTo, strSeperator )
{

  var from,to;
  
  from = strFrom.split(strSeperator)
  to = strTo.split(strSeperator)
     
  if(parseInt( from[0],10 )>parseInt( to[0],10 ))
		return (-1)
  if(parseInt( from[0],10 )<parseInt( to[0],10 ))
     return (1)
  
  if (parseInt( from[1],10 )>parseInt( to[1],10 ))
	return (-1)
  if(parseInt( from[1],10  )<parseInt( to[1],10 ))
     return (1)
  
  if (parseInt( from[2],10 )>parseInt( to[2],10 ))
	return (-1)
  if(parseInt( from[2],10  )<parseInt( to[2],10 ))
     return (1)
  
  return(0)    

}

//格式化日期，过滤掉中间夹杂的空格
//郭宝华，2003-12-15 coding
function FormatDate( strDate )
{
	var parts
	var year, month, day;
	parts=strDate.split("-");
	year = JTrim(parts[0]);
	month = JTrim(parts[1]);
	day = JTrim(parts[2]);
	return(year + "-" + month + "-" + day);
	
}

//格式化时间，过滤掉中间夹杂的空格
//郭宝华，2003-12-15 coding
function FormatTime( strTime )
{
	var parts
	var hour, minute, second;
	parts=strTime.split(":");
	if(parts.length!=3)
	{
		if(parts.length==2)
		{
			strTime=strTime + ":00";
			parts=strTime.split(":");
		}
	}
	hour = JTrim(parts[0]);
	minute = JTrim(parts[1]);
	second = JTrim(parts[2]);
	return(hour + ":" + minute + ":" + second);
}

//取得日期中的年份
//郭宝华，2003-12-16 coding
function getYear( strDate )
{
	var parts
	var year;
	parts=strDate.split("-");
	year = JTrim(parts[0]);
	return (year);
}

//取得日期中的月份
//郭宝华，2003-12-16 coding
function getMonth( strDate )
{
	var parts
	var month;
	parts=strDate.split("-");
	month = JTrim(parts[1]);
	return (month);
}

//取得日期中的月份
//郭宝华，2003-12-16 coding
function getDay( strDate )
{
	var parts
	var day;
	parts=strDate.split("-");
	day = JTrim(parts[2]);
	return (day);
}

//取得当前日期时间
//郭宝华，2009-8-11 coding
function CurrentDateAndTime()
{
	var gdCurDate = new Date();
	var CurYear,CurMonth,CurDay,CurHour,CurMinutes,CurSeconds;
	CurYear=gdCurDate.getFullYear();
	CurMonth=gdCurDate.getMonth()+1;
	CurDay=gdCurDate.getDate();
	CurHour=gdCurDate.getHours();
	CurMinutes=gdCurDate.getMinutes();
	CurSeconds=gdCurDate.getSeconds();
	var DateAndTime = CurYear+"-"+CurMonth+"-"+CurDay+" "+CurHour+":"+CurMinutes+":"+CurSeconds;
	return(DateAndTime);
}

//modify by bob.guo, 2006-11-22. 有的公司采用纯内部的邮件地址,如bob@hr,可能不存在(.)
//所以,去掉对(.)的要求
function isVaildEmail(strEmail)
{
	strEmail=JTrim(strEmail);

	//字符检查
	if ( !AllCharsIsInBag( strEmail, "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.-_@"))
	{
		ErrorMessage="Email地址中只能包含英文字符、阿拉伯数字以及.-_@，请更正。";
		return false;
	}

	//格式检查
	var len = strEmail.length;
	pos1 = strEmail.indexOf("@");
	pos2 = strEmail.indexOf(".");
	pos3 = strEmail.lastIndexOf("@");
	pos4 = strEmail.lastIndexOf(".");
	//check '@' must exist, '@' and '.' is not first or last character
	if ((pos1 <= 0)||(pos1 == len)||(pos2 == 0)||(pos2 == len))  
	{
		ErrorMessage="Email地址的格式有错误，请更正。";
		return false;
	}
	else
	{
		//check @. or .@
		if( (pos1 == pos2 - 1) || (pos1 == pos2 + 1) 
		  || ( pos1 != pos3 ) ) //find two @
		{
			ErrorMessage="Email地址的格式有错误，请更正。";
			return false;
		}
	}
	return true;
}

//判断是否有效的文件名称，文件名中不得包含以下字符：/\:*?"<>|
//注意其中的引号和反斜线在变量中需要使用转义字符\
//true,文件名符合要求
//false,文件名不符合要求
//郭宝华，2007-1-15
function isValidFileName(strCaption,strFileName)
{
	//字符检查
	if (AnyCharsIsInBag( strFileName, "/\\:*?\"<>|"))
	{
		ErrorMessage=strCaption + "中不能包含以下字符：/\\:*?\"<>|，请更正。";
		return false;
	}
		return true;
}

//判断字符串中的所有字符都处于bag范围内
//郭宝华，2003-12-15 coding
function AllCharsIsInBag (s, bag)
{  
  var i;
  // Search through string's characters one by one.
  // If character is in bag, append to returnString.

  for (i = 0; i < s.length; i++)
  {   
      // Check that current character isn't whitespace.
      var c = s.charAt(i);
      if (bag.indexOf(c) == -1) return false;
  }
  return true;
}

//判断字符串中的字符，有任何一个处于bag范围内
//郭宝华，2007-1-16 coding
function AnyCharsIsInBag (s, bag)
{  
  var i;
  for (i = 0; i < s.length; i++)
  {   
      var c = s.charAt(i);
      if (bag.indexOf(c) != -1) return true;
  }
  return false;
}

function isEmpty(s)
{  
	return ((s == null) || (s.length == 0))
}


//判断字符串中是否包含空白，空白是指：空格，制表符，回车换行
//郭宝华，2003-12-15 coding
function hasWhitespace (s)
{  
  var whitespace = " \t\n\r";
  var i;
   for (i = 0; i < s.length; i++)
   {   
       var c = s.charAt(i);
       if (whitespace.indexOf(c) >= 0) 
	   {
		  return false;
	   }
   }
   return true;
}

function QuotedString(varTemp)
{
	if(varTemp=="")
	{
		return( "''");
	}
	else
	{
		var tmp;
		tmp=varTemp.replace("'", "''");
		tmp = "'" + tmp + "'";
		return(tmp);
	}
}

//判断字符串中是否包含汉字
//郭宝华，2003-12-15 coding
function hasChn(str)
{
	var ch, i;
	for ( i=0; i< str.length; i++){
		ch = str.charCodeAt( i );
		if ( ch<0 ) ch = ch + 65536;
		if ( ch>255 ) return(true);
	}
	return (false);
}

//替换字符串中的文字
//郭宝华，2004-2-26 coding
function replace(rgExp,replaceText,toText)
{
	var j=0;
	while(rgExp.indexOf(replaceText)!=-1 && j<100)
	{
		rgExp=rgExp.replace(replaceText,toText);
		j=j+1;
	}
	return(rgExp);
}

//计算字符串的长度，一个英文字符长度为1，一个汉字为2
//郭宝华，2003-12-15 coding
function strLen(str)
{
	var Chinese_OS;
	var strTest, ch, slen, i;
	Chinese_OS = false;
	strTest = "中文";
	if ( strTest.length == 2 )	Chinese_OS = true;
	if ( Chinese_OS ) {
		slen = 0;
		for ( i=0; i< str.length; i++){
			ch = str.charCodeAt( i );
			if ( ch<0 ) ch = ch + 65536;
			if ( ch>255 ) slen = slen +1;
			slen = slen +1;
		}
	}
	else
	{
		slen = str.length
	}
	return (slen);
}

//找出ID在IDs中的位置，以0为基
function GetIndex(ID,IDs)
{
	for (var i=1 ; i<=IDs.length; i++) 
	{
		if(ID==IDs[i-1])
		{
			return (i-1);
		}
	}
	return (-1);
}

function GetNewOrder(strOrderBy,strOldOrderBy)
{
	//支持多级排序，最新的排序需求最优先。
	var arrayOrderBy,strNewOrderBy;
	var OldCount;
	if (JTrim(strOldOrderBy)!="")
	{
		//此前有过排序
		arrayOrderBy=strOldOrderBy.split(",");
		strOldOrderBy="";
		strNewOrderBy="";
		//旧排序，最多借用2个，其它的废弃
		if(arrayOrderBy.length>2)
			OldCount=2;
		else
			OldCount=arrayOrderBy.length;
			
		for (var i = 0; i < OldCount; i++) 
		{
			if(arrayOrderBy[i].indexOf(strOrderBy)!=-1)
			{
				//发现最新字段存在于旧排序中
				if(arrayOrderBy[i].indexOf("desc")==-1)
				{
					//此前排的是正序
					strNewOrderBy=strOrderBy + " desc";
				}
				else
				{
					//此前排的是倒序
					strNewOrderBy=strOrderBy + " asc";
				}
			}
			else
			{
				//改造旧排序
				strOldOrderBy=strOldOrderBy + arrayOrderBy[i] + ",";
			}
		}
		if(JTrim(strNewOrderBy)=="")
		{
			//最新字段不存在于旧排序中
			strNewOrderBy=strOrderBy + " desc";
		}
		if (JTrim(strOldOrderBy)!="")
		{
			//去掉改造后的旧排序中最后一个逗号
			strOldOrderBy=strOldOrderBy.substr(0,strOldOrderBy.length-1);
			strNewOrderBy=strNewOrderBy + "," + strOldOrderBy;
		}
	}
	else
	{
		//此前未排序过
		strNewOrderBy=strOrderBy + " desc";
	}
	return(strNewOrderBy);
}

function OpenAttach(file) {
	try
	{
		window.open (file)		//此处不要设定window名称，用户有可能需要开启多个附件
	}
	catch(e)
	{
		alert('打开附件失败。\n请检查当前浏览器版本，建议使用IE6.0以上版本。')
	}
}

function OpenHyperLink(myLink) 
{
	var FileProtocol,HTTPProtocol;
	myLink=JTrim(myLink);
	if(myLink.length>0)
	{
		var myPro;
		FileProtocol="file:"
		HTTPProtocol="http:"
		myPro=myLink.substr(0,5);
		if(myPro!=FileProtocol && myPro!=HTTPProtocol)
		myLink=FileProtocol + myLink;	//default to be file protocol
		try
		{
			window.open (myLink);		//此处不要设定window名称，用户有可能需要开启多个超链文件
		}
		catch(e)
		{
			alert('打开超链失败。\n请检查当前浏览器版本，建议使用IE6.0以上版本。')
		}
	}
}

function MM_swapImgRestore() 
{ //v3.0
  var i,x;
  a=document.MM_sr;
  for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++)
		x.src=x.oSrc;
}

function MM_preloadImages() 
{ //v3.0
  var d=document; 
  if(d.images)
  { 
		if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; 
    for(i=0; i<a.length; i++)
			if (a[i].indexOf("#")!=0)
			{ 
				d.MM_p[j]=new Image; 
				d.MM_p[j++].src=a[i];
			}
	}
}

function MM_findObj(n, d) { //v4.0
  var p,i,x;
  if(!d) d=document; 
  if((p=n.indexOf("?"))>0&&parent.frames.length)
  {
    d=parent.frames[n.substring(p+1)].document; 
    n=n.substring(0,p);
  }
  if(!(x=d[n])&&d.all) x=d.all[n]; 
  for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n); 
  return x;
}

function MM_swapImage() 
{ //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; 
  document.MM_sr=new Array; 
  for(i=0;i<(a.length-2);i+=3)
		if ((x=MM_findObj(a[i]))!=null)
		{
			document.MM_sr[j++]=x; 
			if(!x.oSrc) x.oSrc=x.src; 
			x.src=a[i+2];
		}
}

function MM_findObj(n, d) { //v3.0
  var p,i,x;
  if(!d) d=document; 
  if((p=n.indexOf("?"))>0&&parent.frames.length) 
  {
    d=parent.frames[n.substring(p+1)].document; 
    n=n.substring(0,p);
  }
  if(!(x=d[n])&&d.all) x=d.all[n]; 
  for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); 
  return x;
}


//listhead.asp 和 list.asp 中用到的一些共性的函数，页面中各元素须符合以下规则：
//1、listHead.asp、list.asp的容器(frame)名称，分别为 RightHead、RightData
//2、RightHead包括：当前排序OrderBy,页号CurPage
//3、RightData包括：行号RowIDs、可删行号CanDeleteRowIDs，各行的checkbox chkxxx，页号CurPage
//郭宝华，2004-2-20
 
function RowSelect() 
{
	var PageIDs,IDs;
	var chk;
	IDs=""
	if(JTrim(RowIDs.value)!="")
	{
		PageIDs=RowIDs.value.split(",");
		if(PageIDs.length>0)
		{
			for (i = 0; i <= PageIDs.length-1; i++)
			{
				eval("chk=chk"+JTrim(PageIDs[i])+".status");
				if(chk==true)
				{
					IDs=IDs + "," + JTrim(PageIDs[i]);
				}
			}
			if(IDs.length>0)
				IDs=IDs.substr(1,IDs.length-1);
		}
	}
	return(IDs);
}

function CheckDelAuth() 
{
	var PageIDs,DeleteAuthIDs,BadIDs;
	var chk;
	BadIDs=""
	if(JTrim(RowIDs.value)!="")
	{
		PageIDs=RowIDs.value.split(",");
		DeleteAuthIDs=CanDeleteRowIDs.value.split(",");
		if(PageIDs.length>0)
		{
			for (i = 0; i <= PageIDs.length-1; i++)
			{
				eval("chk=chk"+JTrim(PageIDs[i])+".status");
				if(chk==true)
				{
					if(DeleteAuthIDs[i]!="1")
					{
						BadIDs=BadIDs + "," + JTrim(PageIDs[i]);
					}
				}
			}
			if(BadIDs.length>0)
				BadIDs=BadIDs.substr(1,BadIDs.length-1);
		}
	}
	return(BadIDs);
}

function CheckAll() 
{
	var PageIDs;
	if(JTrim(RowIDs.value)!="")
	{
		PageIDs=RowIDs.value.split(",");
		if(PageIDs.length>0)
		{
			for (i = 0; i <= PageIDs.length-1; i++)
			{
				eval("chk"+JTrim(PageIDs[i])+".status=true;");
			}
		}
	}
}

function ClearAll() 
{
	var PageIDs;
	if(JTrim(RowIDs.value)!="")
	{
		PageIDs=RowIDs.value.split(",");
		if(PageIDs.length>0)
		{
			for (i = 0; i <= PageIDs.length-1; i++)
			{
				eval("chk"+JTrim(PageIDs[i])+".status=false;");
			}
		}
	}
}

function PrePage() 
{
	frmData.CurPage.value=parseInt(window.parent.RightData.CurPage.value)-1
	GotoPage()
}

function PageSelect() 
{
	frmData.CurPage.value=SelectPage.selectedIndex+1
	GotoPage()
}

function NextPage() 
{
	frmData.CurPage.value=parseInt(window.parent.RightData.CurPage.value)+1
	GotoPage()
}

function GotoPage() 
{
	document.frmData.target ="RightData";
	document.frmData.action="list.asp";
	document.frmData.submit();
}

function ChgOrder(strOrderBy)
{
	var strOldOrderBy;
	if (JTrim(frmData.CurPage.value)!="")
	{
		frmData.CurPage.value=1
		strOldOrderBy=document.frmData.OrderBy.value;
		frmData.OrderBy.value=GetNewOrder(strOrderBy,strOldOrderBy);
		frmData.target ="RightData";
		frmData.action="list.asp";
		frmData.submit();
	}
}

function SelectAll()
{
	if (frmData.CurPage.value>0)
	{
		if(chkAll.status==true)
			window.parent.RightData.CheckAll();
		else
			window.parent.RightData.ClearAll();
	}
}

//弹出主表记录选择页面
function fPopRef(SheetID,RefSheetID,btnCtrl)
{
	var strRefText,BasicLimit;
	var IDAndValues;
	var Args=new Array(2);

	IDAndValues=SheetID+JoinChar+RefSheetID;
	strRefText=document.all(btnCtrl.sourceIndex-1).value;
	if(!isEmpty(strRefText))
	{
		IDAndValues=IDAndValues+JoinChar+JoinChar+strRefText;
	}	
	try	//GetBasicLimit是在expandcheck.js中实现的,要防备此函数不存在,该文件可由用户自定义.
	{	
		BasicLimit=GetBasicLimit(SheetID,RefSheetID);
	}
	catch(e)
	{
	}	
	if(!isEmpty(BasicLimit))
	{
		IDAndValues=IDAndValues+JoinChar+JoinChar+JoinChar+BasicLimit;
	}
	IDAndValues=escape(IDAndValues);
	para="scroll:no;status:no;center:yes;unadorned:no;dialogHeight:265px;dialogWidth:280px;resizable=1;"
	Args[0]=btnCtrl.sourceIndex-1;
	Args[1]=btnCtrl;
	if(window.showModalDialog("viewframe2.asp?Target=refbasic.asp?IDAndValues="+IDAndValues,Args,para)==true)
	{
		HasChange();
		var curLocation,curRefreshPage,RefFieldCount;
		curLocation=window.location.pathname;
		curRefreshPage="";
		if(curLocation.indexOf("new.asp")>0)
			curRefreshPage="new.asp?RefreshByBaseSheet="+RefSheetID;
		else if(curLocation.indexOf("newsub.asp")>0)
			curRefreshPage="newsub.asp?RefreshByBaseSheet="+RefSheetID;
		else if(curLocation.indexOf("edit.asp")>0)
			curRefreshPage="edit.asp?RefreshByBaseSheet="+RefSheetID;
		RefFieldCount=document.frmData.RefFieldCount.value;
		if(curRefreshPage!="" && RefFieldCount>0)
		{
			//刷新编辑页面前，需要做的处理工作
			ClearAttachList();		//先清理掉上传的附件。所以，用户需要养成习惯，先选主表记录，再选附件。
			GetCheckboxValue();		//获取checkbox值，以便能还原
			document.frmData.action =curRefreshPage;
			document.frmData.target ="_self";
			document.frmData.submit();
		}
	}
}

//去掉页面上不需打印的内容。
function RemoveNoPrint(PrintBody)
{
	var Pos1,Pos2;
	
	for (i = 0; i < 10; i++)
	{
		Pos1=PrintBody.indexOf(NoPrintStart);
		if(Pos1>0)
		{
			Pos2=PrintBody.indexOf(NoPrintEnd);
			if(Pos2>0)
				PrintBody=PrintBody.substr(0,Pos1) + PrintBody.substr(Pos2+NoPrintEnd.length);
			else
				break;			
		}
		else
			break;
	}
	return PrintBody;
}

function UrlEncode(str)
{ 
	var ret=""; 
	var strSpecial="!\"#$%&'()*+,.-_/:;<=>?@[\\]^`{|}~%";
	for(var i=0;i<str.length;i++)
	{ 
		var chr = str.charAt(i); 
		var c=str2asc(chr); 
		if(parseInt("0x"+c) > 0x7f)
		{ 
			ret+="%"+c.slice(0,2)+"%"+c.slice(-2); 
		}
		else
		{ 
			if(chr==" ") 
				ret+="+"; 
			else if(strSpecial.indexOf(chr)!=-1) 
			{
				if(parseInt("0x"+c) < 0x10)
					ret+="%0"+c.toString(16); 
				else
					ret+="%"+c.toString(16); 
			}
			else 
			  ret+=chr; 
		} 
	} 
	return ret; 
} 

function UrlDecode(str)
{ 
	var ret=""; 
	for(var i=0;i<str.length;i++)
	{ 
		var chr = str.charAt(i); 
		if(chr == "+")
		{ 
			ret+=" "; 
		}
		else if(chr=="%")
		{ 
			var asc = str.substring(i+1,i+3); 
			if(parseInt("0x"+asc)>0x7f)
			{ 
				ret+=asc2str(parseInt("0x"+asc+str.substring(i+4,i+6))); 
				i+=5; 
			}
			else
			{ 
				ret+=asc2str(parseInt("0x"+asc)); 
				i+=2; 
			} 
		}
		else
		{ 
			ret+= chr; 
		} 
	} 
	return ret; 
} 

function TV_Initialize()
{
	try
	{
		TmA4drvmOle.ITma4drv_DLL_Version("http://www.quanova.com");
		TmA4drvmOle.ITV_Initialize();
	}catch(e)
	{
	}
}

function TV_Disable()
{
	try
	{
		TmA4drvmOle.ITV_Disable();
	}catch(e)
	{
	}
}

function  T_GetEvent()
{
	try
	{
		var uEventType,uResult,uRet;
		var uID;
		var vStr;
		var i=0;
		for ( var i = 0 ;i<TmA4drvmOle.ITV_GetChannels(); i++)
		{
			var vValueArray=TmA4drvmOle.ITV_GetEvent(i);
			var vValueEvent = vValueArray.split(","); 
			uRet=Number(vValueEvent[0]);
			uEventType=Number(vValueEvent[1]);
			uResult=Number(vValueEvent[2]);
			vStr=vValueEvent[3];
			if(uRet != 0)
			{
				uID=i+1;
				switch(uEventType)
				{
					case TEvent_GetFsk:
					case TEvent_GetDTMF:
						var SerialNo=TmA4drvmOle.ITV_GetSerial(0);
						window.showModalDialog ("../sheet/viewframe4.asp?Target=viewcustomer.asp?PhoneAndSerialNo="+vStr+JoinChar+SerialNo,"","dialogwidth:640px;dialogheight:480px;Status:0;center:1;resizable=1;");
						break;
				}
			}
		}
	}catch(e)
	{
	}
}

//判断数值型、日期型字段输入的From、To的合法性，即：From<=to
function CheckFromTo() 
{
	var ID;
	var FieldDataFrom,FieldDataTo;
	if (FieldCount>0)
	{
		for (var i=1 ; i<=FieldID.length; i++) 
		{
			if(typeof(frmData.all[FieldID[i-1]])!="undefined")
			{
				if(FieldType[i-1]==DataType_Number || FieldType[i-1]==DataType_Date || FieldType[i-1]==DataType_DateAndTime)
				{
					if(FieldID[i-1].substr(0,2)=='To')
						ID=FieldID[i-1].substr(2)
					else
						ID=FieldID[i-1].substr(4)
					FieldDataFrom=JTrim(frmData.all["From" + ID].value);
					FieldDataTo=JTrim(frmData.all["To" + ID].value);
					if(FieldDataFrom!=EmptyItem && FieldDataFrom!=NotEmptyItem)
						if(DataCheck(FieldCaption[i-1].substr(0,FieldCaption[i-1].length-3),parseInt(FieldType[i-1]),FieldDataFrom,"",FieldDataTo)==false)
							return(false);	
				}
			}
		}
		return(true);	
	}
	else
	{
		return(true);	
	}
}

//选择型字段是多选的情况下，需检查多选的个数，最多不得超过30个
function CheckMultiSelect() 
{
	var MaxCount=30;
	var ListCount,SelectedCount;
	var FieldData;
	if (FieldCount>0)
	{
		for (var i=1 ; i<=FieldID.length; i++) 
		{
			if(typeof(frmData.all[FieldID[i-1]])!="undefined")
			{
				if(FieldType[i-1]==DataType_Option || FieldType[i-1]==DataType_Checkbox)
				{
					ListCount=frmData.all[FieldID[i-1]].length;
					if(ListCount>0)
					{
						SelectedCount=0;
						for (var j=1 ; j<=ListCount; j++) 
						{
							if(frmData.all[FieldID[i-1]].options[j-1].selected==true)
							{
								SelectedCount=SelectedCount+1;
							}
						}
						if(SelectedCount>MaxCount)
						{
							alert(FieldCaption[i-1]+"选择的列表项太多，最多选"+MaxCount+"项，请适当减少。");
							return(false);	
						}
					}
				}
			}
		}
		return(true);	
	}
	else
	{
		return(true);	
	}
}

//处理数值型、日期型字段输入的特殊查询标记
function CheckEmptyItem() 
{
	var ID;
	var FieldDataFrom,FieldDataTo;
	if (FieldCount>0)
	{
		for (var i=1 ; i<=FieldID.length; i++) 
		{
			if(typeof(frmData.all[FieldID[i-1]])!="undefined")
			{
				if(FieldType[i-1]==DataType_Number || FieldType[i-1]==DataType_Date || FieldType[i-1]==DataType_DateAndTime)
				{
					if(FieldID[i-1].substr(0,2)=='To')
						ID=FieldID[i-1].substr(2)
					else
						ID=FieldID[i-1].substr(4)
					FieldDataFrom=JTrim(frmData.all["From" + ID].value);
					FieldDataTo=JTrim(frmData.all["To" + ID].value);
					if(FieldDataFrom==EmptyItem || FieldDataTo==EmptyItem)
					{
						frmData.all["From" + ID].value=EmptyItem;
						frmData.all["To" + ID].value=EmptyItem;
					}
					else if(FieldDataFrom==NotEmptyItem || FieldDataTo==NotEmptyItem)
					{
						frmData.all["From" + ID].value=NotEmptyItem;
						frmData.all["To" + ID].value=NotEmptyItem;
					}
				}
			}
		}
	}
}

//根据界面上用户的输入，获取条件限制，按结构要求拼接
//结构：Fldxxx ConItemSep Value GroupSep Fldxxx ConItemSep Value
function GetResult() 
{
	var strResult;
	var ID;
	var FieldData;

	strResult="";
	if (FieldCount>0)
	{
		for (var i=1 ; i<=FieldID.length; i++) 
		{
			if(typeof(frmData.all[FieldID[i-1]])!="undefined")
			{
				if(FieldType[i-1]==DataType_Number || FieldType[i-1]==DataType_Date || FieldType[i-1]==DataType_DateAndTime)
				{
					FieldData=FormatToFieldID(JTrim(frmData.all[FieldID[i-1]].value));
				}
				else if(FieldType[i-1]==DataType_Option)
				{
					var ListCount;
					ListCount=frmData.all[FieldID[i-1]].length;
					if(ListCount>0)
					{
						FieldData="";
						for (var j=1 ; j<=ListCount; j++) 
						{
							if(frmData.all[FieldID[i-1]].options[j-1].selected==true)
							{
								if(FieldData=="")
									FieldData=frmData.all[FieldID[i-1]].options[j-1].value;
								else
									FieldData=FieldData + "," + frmData.all[FieldID[i-1]].options[j-1].value;
							}
						}
					}
				}
				if(!isEmpty(FieldData))
				{
					if(strResult=="")
						strResult=FieldID[i-1] + ConItemSep + FieldData;
					else
						strResult=strResult + GroupSep + FieldID[i-1] + ConItemSep + FieldData;
				}
			}
		}
	}
	return strResult;
}
