var __milSep = "";	// JavaScript的全局常量：千分位
 //根据指定的URL打开模式窗口
    function showUrlByModalDialog(url,height){
    	
    	paras="dialogHeight:"+ height + "px;dialogWidth:700px;scroll:no;resizable:yes;status:no;";
	   	return window.showModalDialog(url,window,paras);
    }
    
     //根据指定的URL打开模式窗口
    function showUrlByModalDialog(url,height,width){
    	
    	paras="dialogHeight:"+ height + "px;dialogWidth:"+width+"px;scroll:no;resizable:yes;status:no;";
	   	return window.showModalDialog(url,window,paras);
    }
/*
Function: 选择供应商，单选
Document by Lithium 2003-1-2
Last modified by TonyLee 2004-9-27
supplierType: 供应商类型
selectName: 调用该方法的控件名称
other：保留
*/
function selectSupplier(selectName, supplierType, other){
	url="/Honglian/jsp/util/SelectSupplierIframe.jsp?selectName=" + selectName + "&supplierType=" + supplierType + "&other=" + other;
	paras="dialogHeight:500px;dialogWidth:650px;scroll=no;resizable=no;status=no";
	window.showModalDialog(url,window,paras);
}

/*
Function: 选择客户，单选
Document by Lithium 2004-9-27
Last modified by TonyLee 2004-9-27
customerType: 供应商类型
selectName: 调用该方法的控件名称
other：保留
*/
function selectCustomer(selectName, customerType, other){
	url="/Honglian/jsp/util/SelectCustomerIframe.jsp?selectName=" + selectName + "&customerType=" + customerType + "&other=" + other + "&first=1";	
	paras="dialogHeight:500px;dialogWidth:650px;scroll=no;resizable=no;status=no";
	window.showModalDialog(url,window,paras);
}

/*
Function: 选择产品，单选多选可控
Document by Lithium 2004-10-06
Last modified by TonyLee 2004-10-06
selectName: 调用该方法的控件名称
selectType: 选择类型，是单选还是多选
other：保留
*/
function selectProduct(selectName, selectType, other){
	url="/Honglian/jsp/util/SelectProductIframe.jsp?selectName=" + selectName + "&selectType=" + selectType + "&other=" + other + "&first=1";	
	paras="dialogHeight:500px;dialogWidth:650px;scroll=no;resizable=no;status=no";
	window.showModalDialog(url,window,paras);
}

/*
Function: 选择竞争对手
Document by Lithium 2004-10-07
Last modified by TonyLee 2004-10-07
selectName: 调用该方法的控件名称
selectType: 选择类型，是单选还是多选
other：保留
*/
function selectCompetitor(selectName, competitorType, other){
	url="/Honglian/jsp/util/SelectCompetitorIframe.jsp?selectName=" + selectName + "&selectType=" + competitorType + "&other=" + other + "&first=1";	
	paras="dialogHeight:500px;dialogWidth:650px;scroll=no;resizable=no;status=no";
	window.showModalDialog(url,window,paras);
}

/*
Function: 选择用户
Document by Lithium 2004-10-11
Last modified by TonyLee 2004-10-11
selectName: 调用该方法的控件名称
type: 选择类型，是单选还是多选
other：保留
*/
function selectUser(selectName, type, other){
	url="/Honglian/jsp/util/SelectUserIframe.jsp?selectName=" + selectName + "&selectType=" + type + "&other=" + other + "&first=1";	
	paras="dialogHeight:500px;dialogWidth:650px;scroll=no;resizable=no;status=no";
	window.showModalDialog(url,window,paras);
}

/*
	Function: 产品序列号 新增 删除等
	参数：inoutPKID: 出入库单的PK
		 inoutFlag: 出库或入库
		 warehouesID: 仓库
		 flag：出入库类型
		 optFlag :操作标识（新增，修改）
*/
function pdSerial(inoutPKID, inoutFlag, warehouseID, flag,optFlag){
	url="/Honglian/jsp/sto/PdSerialNoRecIFrame.jsp?warehouseInOutID=" + inoutPKID + "&inoutFlag=" + inoutFlag + "&warehouseID=" + warehouseID + "&flag=" + flag + "&optFlag=" + optFlag;
	paras="dialogHeight:500px;dialogWidth:650px;scroll=no;resizable=no;status=0";
	window.showModalDialog(url,window,paras);
}	
	
	

/*
Function: 取字符串字节长度
Document by Lithium 2002-5-13
Last modify by Lithium 2002-5-13
*/
function realLength(str)
{
	var j=0;
	for (var i=0;i<=str.length-1;i++)
	{
		j=j+1;
		if ((str.charCodeAt(i))>127)
		{
			j=j+1;
		}
	}
	return j;
}

/*
Function: 去空格函数
Document by Lithium 2002-5-10
Last modify by Lithium 2002-5-10
*/
function trim(s)
{
	s=_leftTrim(_rightTrim(s)); 
	return s;    
}

function _leftTrim(s)
{
	while(s.charAt(0)==" ")
	{
		s=s.substring(1);
	}
	return s;
}

function _rightTrim(s)
{
	while(s.charAt(s.length - 1)==" ")
	{
		s=s.substring(0,s.length-1);
	}
	return s;
}          

function _leftTrim0(s)
{
	while(s.charAt(0)=='0')
	{
		s=s.substring(1);
	}
	return s;
}

function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);

// 依据ID查找控件
function MM_findObj(n, d) { //v4.01
	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 && d.getElementById)
		x=d.getElementById(n);
	
	return x;
}

// 当Div显示时置为隐藏，隐藏时置为显示
function MM_showHideLayers() { //v6.0
	var i,p,v,obj,args=MM_showHideLayers.arguments;
	for (i=0; i<(args.length-2); i+=3) 
		if ((obj=MM_findObj(args[i]))!=null) { 
			if (obj.style){
				obj=obj.style;
				v=args[i+2];
				if(v==""){
					if(obj.visibility=='visible'){
						v = 'hidden';
					}else{
						v = 'visible';
					}
				}
			}
			obj.visibility=v; 
		}
}

// 设置控件的属性值
function MM_changeProp(objName,x,theProp,theValue) { //v6.0
	var obj = MM_findObj(objName);
	if (obj && (theProp.indexOf("style.")==-1 || obj.style)){
		if (theValue != "" && parseInt(theValue) != 1 && (theValue == true || theValue == false)){
			eval("obj."+theProp+"="+theValue);}
		else {
			eval("obj."+theProp+"='"+theValue+"'");
		}
	}
}

/*
	document by Tony 2004-10-11
	objName：对象id
	theProp：属性名
	功能：取控件的属性值
*/
function MM_getProp(objName,theProp) { //v6.0
	var obj = MM_findObj(objName);
	if (obj && (theProp.indexOf("style.")==-1 || obj.style)){
		return eval("obj."+theProp);
	}
}

/*
	document by Tony 2004-10-11
	objName：对象id
	功能：使控件取得焦点
*/
function MM_setFocus(objName) { //v6.0
	var obj = MM_findObj(objName);
	obj.focus();
}

/*
	document by Tony 2004-10-11
	objName：对象id
	theValue：待修改册下拉列表框的值
	功能：修改下拉列表框的显示值，显示theValue对应的文本
*/
function MM_changeDisp(objName, theValue){
	var dropTable =objName+'Table';
	var rows = MM_getProp(dropTable, 'rows');
	var item;
	var itemValue;
	var itemText;

	for(i=0; i<rows; i++){
		item = objName+'Td'+i;
		itemValue = MM_getProp(item, 'myValue');
		if(itemValue==theValue){
			itemText = MM_getProp(item, 'myText');
			eval(MM_changeProp(objName+'Disp','','value',itemText));
			eval(MM_changeProp(objName,'','value',theValue));
			break;
		}
	}
}

/*
	document by Tony 2004-10-16
	objName：对象id
	theValue：待修改的下拉列表框selectedIndex的值
	功能：修改下拉列表框的selectedIndex，通过它来触发下拉列表框值的改变
*/
function MM_changeSelectedIndex(objName, theValue){
	var dropTable =objName+'Table';
	var item;
	var itemValue;
	var itemText;

	item = objName+'Td'+theValue;
	itemValue = MM_getProp(item, 'myValue');
	itemText = MM_getProp(item, 'myText');

	eval(MM_changeProp(objName+'Disp','','value',itemText));
	eval(MM_changeProp(objName,'','value',itemValue));
}
/*
	Document by novell 2004-12-31
	功能：插入一行数据进下拉列表
	selectID：下拉列表对象的名称
	myValue：下拉列表的隐藏值
	myText：下拉列表显示值
*/
function MM_insertItemToSelect(selectID,myValue,myText){
	var tableID = selectID + "Table";
	var tblObj = MM_findObj(tableID);
	var tblHtml = tblObj.innerHTML;
	var trObj = tblObj.insertRow();
	var trHtml = trObj.innerHTML;
	var tdObj = trObj.insertCell();
	var tdAttributes = tdObj.childNodes;	

	tdObj.id =  selectID + "Td" + MM_getProp(tableID,'rows') ; 
	tdObj.setAttribute("myValue",myValue);
	tdObj.setAttribute("myText",myText);
	tdObj.innerText=myText;

	//var tdStr = "<TD id='" +tdObjID + "' myValue='" + myValue + "' myText='" + myText + "' onClick=\"alert('a');DD_changeSelected('" + selectID + "','" +myText + "','" +  myValue + "',0)\">" + myText + "</TD>";
	//tdObj.innerText = tdStr;
	//alert(tblObj.innerHTML);
	
	var rows = parseInt(tblObj.rows) + 1;	
	MM_changeProp(tableID,'','rows',rows);
	var tmpi = rows*15;
	if (tmpi > 250) tmpi = 250;
	MM_changeProp(selectID+"Div",'','style.height',tmpi,'Div');
}
/*
	Document by novell 2004-12-31
	功能：侦听页面事件
	
*/
function MM_listener(){
	var eventSrc = window.event.srcElement;
	var evt = window.event.type;
	
	if (eventSrc.tagName == "TD" && eventSrc.myText!=null){			
		if(evt=='click'){			
			var ids = eventSrc.id.split("Td");			
			var idStr = ids[0];			
			DD_changeSelected(idStr,eventSrc.myText ,eventSrc.myValue);
		}else if(evt=='mouseover'){			
			eval("DD_mouseOver('" + eventSrc.id + "')");
		}else if(evt=='mouseout'){			
			eval("DD_mouseOut('" + eventSrc.id + "')");
		}
	}
}
/*
	Document by novell 2004-12-31
	功能：清除下拉列表显示字段
	selectID：下拉列表对象
*/
function MM_clearItemToSelect(selectID){
	var tableID = selectID + "Table";
	var tblObj = MM_findObj(tableID);
	var rowsNum = parseInt(MM_getProp(tableID, 'rows'));
	var rows = rowsNum;	
	if(rowsNum>=1){
		for(var i=1;i<rowsNum;i++){
			tblObj.deleteRow();	
			rows--;
			MM_changeProp(tableID,'','rows',rows);
			//alert(MM_getProp(tableID, 'rows'));
		}
	}
	var comboBox = tableID.substring(0,tableID.length-5);
	var tmpi = rows*15;
	if (tmpi > 250) tmpi = 250;
	MM_changeProp(selectID+"Div",'','style.height',tmpi,'Div');
	MM_changeSelectedIndex(comboBox,0);
}
/*
	Document by novell 2004-12-31
	功能：判断下拉列表是否改变
	obj：下拉列表对象
*/
function MM_judgeItemIsChange(obj){
	var itemID;	
	var currentID;
	var selectedID ;	
	var itemText;

	itemID = obj.id;
	selectedID = MM_getProp(itemID, 'myValue');
	itemText = MM_getProp(itemID, 'myText');
	
	var arr = itemID.split('ID');
	var currentIDName = arr[0] + 'ID';
	currentID = MM_getProp(currentIDName, 'value');
	if(currentID == selectedID)
		alert('yes');
	else
		alert('no');
}
/*
	document by Tony 2004-12-29
	objName：下拉列表的对象名
	newValue：待修改的下拉列表框的选中值
	flag: 鼠标单击为1，程序直接给下拉列表赋值为0
	功能：修改下拉列表的选中值并判断触发下拉列表框的onchange事件
*/
function DD_changeSelected(objName, newText, newValue, flag){
	var oldValue = MM_getProp(objName, 'value');
	
	MM_changeProp(objName,'','value',newValue);		//改变下拉列表框的选中值
	MM_changeProp(objName+'Disp','','value',newText);
	
	if ((flag != 0) && (oldValue != newValue)){
		var obj = MM_findObj(objName+"Disp")
		obj.fireEvent("onchange");
	}
}

/*
	document by Tony 2004-12-29
	objName：下拉列表的对象名
	功能：鼠标划过下拉列表框的下拉内容时改变其背景和前景色
*/
function DD_mouseOver(objName){
	MM_changeProp(objName,'','style.backgroundColor','#0035AA','TD');
	MM_changeProp(objName,'','style.color','FFFFFF','TD');
}

/*
	document by Tony 2004-12-29
	objName：下拉列表的对象名
	功能：鼠标划过下拉列表框的下拉内容时改变其背景和前景色
*/
function DD_mouseOut(objName){
	MM_changeProp(objName,'','style.backgroundColor','#ffffff','TD');
	MM_changeProp(objName,'','style.color','#000000','TD');
}

/*
	document by Tony 2004-10-18
	expression：计算公式
	功能：根据单价、数量等输入框后的公式计算小计
	说明：赋值元素和计算元素的下标都在前面
*/
function subTotal(expression, precision){
	// 对象名前缀
	var cPrefix = parseInt(event.srcElement.name);

	// 解析传入的公式
	var tmpExp = expression.split("=");
	if(tmpExp.length!=2){
		alert(event.srcElement.name + "的计算公式错误");
		return;
	}

	// 等号左边的被赋值对象
	var leftElement = cPrefix+tmpExp[0];
	if(MM_findObj(leftElement) == null){
		alert('不存在元素‘'+leftElement+'’，请检查！');
		return;
	}

	// 等号右边的计算公式（目前只允许乘法）
	var formula = tmpExp[1];
	var calcElements = formula.split("*");
	var _result = 1;
		
	// 循环进行计算
	for(i=0; i<calcElements.length; i++){
		var _element = cPrefix+calcElements[i];
		if(MM_findObj(_element) == null){
			alert('不存在元素‘'+_element+'’，请检查！');
			return;
		}
		var _value = MM_getProp(_element, 'value');
		_value = removeMilSep(_value);
		_result = _result * _value;
	}
		
	// 格式化并赋值
	if (precision==null)
	{
		precision = 2;
	}
	_result = formatNumStr(_result, precision)
	MM_changeProp(leftElement,'','value',_result);
}

/*
	document by Tony 2004-10-18
	element：待汇总的元素
	功能：汇总给定的元素
	说明：赋值元素和计算元素的下标都在前面
*/
function totalUp(expression, precision){
	// 解析传入的公式
	var tmpExp = expression.split("=");
	if(tmpExp.length!=2){
		alert(event.srcElement.name + "的计算公式错误");
		return;
	}

	// 等号左边的被赋值对象
	var leftElement = tmpExp[0];
	if(MM_findObj(leftElement) == null){
		alert('不存在元素‘'+leftElement+'’，请检查！');
		return;
	}

	// 等号右边的被汇总对象
	var rightElement = tmpExp[1];
	
	// 取出所有被汇总对象
	var elements = document.all(rightElement);
	if(elements == null){
		return;
	}
	
	var _sum = 0;
	var count = elements.length;
	if (count == null)
	{
		_sum = MM_getProp(rightElement, 'value');
	}else{
		for(i=0; i<count; i++){
			var _value = elements[i].value;					// 使用对象数组下标访问
			// var _value = MM_getProp(i+rightElement, 'value');	// 使用对象名访问，下标在前
			_value = removeMilSep(_value);
			if(_value==null || trim(_value)=="" || isNaN(_value)){
				_value = 0;
			}
			_sum = parseFloat(_sum) + parseFloat(_value);
		}
	}

	// 格式化并赋值
	if (precision == null)
	{
		precision = "2";
	}
	_sum = formatNumStr(_sum, precision)
	MM_changeProp(leftElement,'','value',_sum);
}

/*
	document by Tony 2004-11-24
	expression：计算公式
	功能：根据单价、数量等输入框后的公式计算小计
	说明：赋值元素和计算元素的下标都在后面
*/
function subTotal2(expression, precision){
	// 对象名前缀
	var tmp = event.srcElement.name;
	var i = tmp.length;
	var cPrefix;
	while(i>0){
		cPrefix = parseInt(tmp);
		if(!isNaN(cPrefix)){
			break;
		}
		tmp = tmp.substring(1, tmp.length);
		i = tmp.length;
	}

	// 解析传入的公式
	var tmpExp = expression.split("=");
	if(tmpExp.length!=2){
		alert(event.srcElement.name + "的计算公式错误");
		return;
	}

	// 等号左边的被赋值对象
	var leftElement = tmpExp[0]+cPrefix;
	if(MM_findObj(leftElement) == null){
		alert('不存在元素‘'+leftElement+'’，请检查！');
		return;
	}

	// 等号右边的计算公式（目前只允许乘法）
	var formula = tmpExp[1];
	var calcElements = formula.split("*");
	var _result = 1;
		
	// 循环进行计算
	for(i=0; i<calcElements.length; i++){
		var _element = calcElements[i]+cPrefix;
		if(MM_findObj(_element) == null){
			alert('不存在元素‘'+_element+'’，请检查！');
			return;
		}
		var _value = MM_getProp(_element, 'value');
		_value = removeMilSep(_value);
		_result = _result * _value;
	}
		
	// 格式化并赋值
	if (precision==null)
	{
		precision = 2;
	}
	_result = formatNumStr(_result, precision)
	MM_changeProp(leftElement,'','value',_result);
}

/*
	document by Tony 2004-10-18
	element：待汇总的元素
	功能：汇总给定的元素
	说明：赋值元素和计算元素的下标都在后面
*/
function totalUp2(expression, precision){
	// 解析传入的公式
	var tmpExp = expression.split("=");
	if(tmpExp.length!=2){
		alert(event.srcElement.name + "的计算公式错误");
		return;
	}

	// 等号左边的被赋值对象
	var leftElement = tmpExp[0];
	if(MM_findObj(leftElement) == null){
		alert('不存在元素‘'+leftElement+'’，请检查！');
		return;
	}

	// 等号右边的被汇总对象
	var rightElement = tmpExp[1];
	
	// 取出所有被汇总对象
	var elements = document.all(rightElement);
	if(elements == null){
		return;
	}
	
	var _sum = 0;
	var count = elements.length;
	if (count == null)
	{
		_sum = MM_getProp(rightElement, 'value');
	}else{
		for(i=0; i<count; i++){
			// var _value = elements[i].value;					// 使用对象数组下标访问
			var _value = MM_getProp(i+rightElement, 'value');	// 使用对象名访问
			_value = removeMilSep(_value);
			if(_value==null || trim(_value)=="" || isNaN(_value)){
				_value = 0;
			}
			_sum = parseFloat(_sum) + parseFloat(_value);
		}
	}

	// 格式化并赋值
	if (precision == null)
	{
		precision = "2";
	}
	_sum = formatNumStr(_sum, precision)
	MM_changeProp(leftElement,'','value',_sum);
}

/*
	document by Tony 2004-11-16
	expression：计算公式
	功能：取两个元素的商
	说明：赋值元素和计算元素的下标都在后面
*/
function devide2(expression, precision){
	var tmp = event.srcElement.name;
	var i = tmp.length;
	var cPrefix;
	while(i>0){
		cPrefix = parseInt(tmp);
		if(!isNaN(cPrefix)){
			break;
		}
		tmp = tmp.substring(1, tmp.length);
		i = tmp.length;
	}
	
	// 解析传入的公式
	var tmpExp = expression.split("=");
	if(tmpExp.length!=2){
		alert(event.srcElement.name + "的计算公式错误");
		return;
	}

	// 等号左边的被赋值对象
	var leftElement = tmpExp[0]+cPrefix;
	if(MM_findObj(leftElement) == null){
		alert('不存在元素‘'+leftElement+'’，请检查！');
		return;
	}

	// 等号右边的计算公式（目前只允许两个元素相除）
	var formula = tmpExp[1];
	var calcElements = formula.split("/");
	var _result = 1;
		
	var _element1 = calcElements[0]+cPrefix;
	var _element2 = calcElements[1]+cPrefix;
	var _value1 = MM_getProp(_element1, 'value');
	var _value2 = MM_getProp(_element2, 'value');
	_value1 = removeMilSep(_value1);
	_value2 = removeMilSep(_value2);
	_result = _value1 / _value2;
		
	// 格式化并赋值
	if (precision==null)
	{
		precision = 2;
	}
	_result = formatNumStr(_result, precision)
	MM_changeProp(leftElement,'','value',_result);
}	

/*
	document by Tony 2004-10-18
	fld: 输入框
	precision: 精度（小数位数）
	功能：自动千分位，输入框的onkeypress事件调用
*/
function chkNumInput(fld, precision)
{
	var key = '';
	var strCheck;	// Valid charactors
	var keyCode = event.keyCode;
	var value = fld.value;
	var dotPos;
	var inputPos;

	if(precision>0){
		strCheck = '0123456789.';
	}else{
		strCheck = '0123456789';
	}

	dotPos = value.indexOf(".");	// dot position
	inputPos = getPos(fld);	// input positon
	key = String.fromCharCode(keyCode);  // Get key value from key code

	if (keyCode == 13) return true;  // Enter
	
	if(strCheck.indexOf(key) == -1) event.keyCode = 0;  // Not a valid key
	if(dotPos != -1 && key == ".") event.keyCode = 0;	// repeat enter "."
	if(value == "0"){	// 输入框为0再输入时判断
		if(document.selection.type == "None"){
			if(inputPos==1){
				if(key!=".") event.keyCode = 0;
			}
		}
	}
	
	if(dotPos != -1 && inputPos > dotPos){
		if(document.selection.type == "None"){
			if(value.length-value.indexOf(".")-1 >= precision) event.keyCode = 0;	// exceed the precision
		}
	}
	if(key=="0" && value.length>0){ // 输入0时判断
		if(inputPos==0){	// 在最前面插入
			if(value.charAt(0)!=".") event.keyCode = 0;
		}else if(inputPos==1){
			if(value.charAt(0)=="0") event.keyCode = 0;
		}
	}
}

/*
	document by Tony 2004-10-24
	precision：小数位数
	功能：格式化数值字符串
*/
function formatNumStr(str, precision){
	var i = j = 0;
	var aux='';
	var _value;
	var _dataPart;
	var _integralPart;
	var _decimalPart;
	var decOb;
	
	str = String(str);
	str = trim(str);
	_value = removeMilSep(str);
	
	if(isNaN(_value))
		return "0";

	_dataPart = _value.split(".");

	_integralPart = _dataPart[0];
	if(_integralPart==""){
		_integralPart = "0";
	}
	if(_dataPart.length==1){	// 只有整数部分
		_decimalPart = "";
	}else{
		_decimalPart = _dataPart[1];
	}

	decOb = formatDecimalPart(_decimalPart, precision);
	_integralPart = String(parseInt(_integralPart)+parseInt(decOb.intPart));

	// 加千分位
	for (j = 0, i = _integralPart.length-1; i >= 0; i--) {
		if (j == 3) {
			aux = __milSep + aux;
			j = 0;
		}
		aux = _integralPart.charAt(i) + aux;
		j++;
	}
	_integralPart = aux;

	_value = _integralPart;
	if(decOb.decPart != ""){
		_value = _value + "." + decOb.decPart;
	}
	
	if(str=="" && !isNaN(str) && parseFloat(_value)==0){
		_value = "";
	}	
	return _value;
}

function decFormatRet(intPart, decPart){
	this.intPart = intPart;
	this.decPart = decPart;
}

/*
	document by Tony 2004-10-24
	str：小数部分，不包含小数点
	precision：小数位数
	功能：为小数部分补零
*/
function formatDecimalPart(str, precision){
	var i=0;
	var aux=str;
	var retOb;
	var power = 1;
	var intPart, decPart;
	var tmp = parseFloat("0."+str);

	if(str.length > precision){
		for(i=0; i<precision; i++){
			power = power*10;
		}
		tmp = Math.round(tmp*power);
		aux = String(tmp);
		if(tmp == power){
			intPart = "1";
			decPart = aux.substring(1,aux.length);
		}else{
			intPart = "0";
			if(precision>0){
				for(i=aux.length; i<precision; i++){
					aux = "0"+aux;
				}
				decPart = aux;
			}else{
				decPart = "";
			}
		}

	}else{
		for(i=str.length; i<precision; i++){
			aux = aux+"0";	
		}
		intPart = "0";
		decPart = aux;
	}

	retOb = new decFormatRet(intPart, decPart);
	return retOb;
}

/*
	document by Tony 2004-10-24
	功能：格式化数值输入框中的数值，可在页面调用
*/
function formatNumInput(fld, precision){
	var value = fld.value;
	value = formatNumStr(value, precision);
	fld.value = value;
}

/*
	document by Tony 2004-10-24
	功能：取光标位置
*/
function getPos(obj)
{
    obj.focus();//光标位置不变
    var r = document.selection.createRange();
    r.collapse(false);
    r.setEndPoint("StartToStart", obj.createTextRange());
    return r.text.length;
}

/*
	document by Tony 2004-10-24
	功能：设置光标位置
*/
function setPos(obj,n)
{
    obj.focus();
    var r = document.selection.createRange();
    r.collapse(true);
	alert(r.text);
    r.move("character", n);
    r.select();
}

/*
	document by Tony 2004-10-24
	功能：往输入框粘贴时间判断是否是有效的数值，若不是禁止粘贴
*/
function chkNumPaste()
{
    var value = window.clipboardData.getData("Text");
	if(isNaN(value)) event.returnValue = false;
}

/*
	Function: 去千分位函数
	Document by Tony 2002-6-7
*/
function removeMilSep(num)
{
	var value = String(num);
	if(__milSep != ""){
		while(value.indexOf(__milSep)>-1){
			value = value.replace(__milSep, "");
		}
	}
	return value;
}

/*
Function: 支持null的NOT
Document by Lithium 2002-5-10
Last modify by Lithium 2002-5-10
*/
function NOT(b)
{
	if (b==null)
	{
		return null;
	}
	return !b;
}

/*
Function: 判断是否是0-9的数字
Document by Lithium 2002-5-10
Last modify by Lithium 2002-5-10
*/
function isNumber(c)
{
	if (c.length!=1)
	{
		return null;
	}
	if ((c>='0') && (c<='9'))
		return true;
	else
		return false;
}

/*
Function: 判断是否是数字编码
Document by Lithium 2002-5-15
Last modify by Lithium 2002-5-15
*/
function isNumString(s)
{
	if(s.length==0)
	{
		return null;
	}
	
	for(var i=0; i<s.length; i++)
	{
		c=s.charAt(i);
		if (NOT(isNumber(c)))
		{
			return false;
		}
	}
	return true;
}

/*
Function: 判断是否是有效的日期
Document by Lithium 2002-5-10
Last modify by Lithium 2002-5-10
*/
function isDate(s){	

	if(s.length!=10 && s.length!=19)
	{
		return false;
	}else
	{
		if(s.length==10 && s.length==19)
		{
			for(var i=0; i<10; i++)
			{
				if(i==4 || i==7){
					if(s.charAt(i)!='-')
					{
						return false
					}
				}else{
					if(NOT(isNumber(s.charAt(i))))
					{
						return false
					}
				}
			}
		}
		if(s.length==19)
		{
			for(var i=10; i<20; i++)
			{
				if(i==10) {
					if(s.charAt(i)!=' ')
					{
						return false
					}
				}
				else if(i==13 || i==16)
				{
					if(s.charAt(i)!=':')
					{
						return false
					}
				}
				else
				{
					if(NOT(isNumber(s.charAt(i))))
					{
						return false
					}
				}
			}
		}
	}
	year = _leftTrim0(s.substring(0,4));
	month = _leftTrim0(s.substring(5,7));
	day = _leftTrim0(s.substring(8));
    if(year=="" || month=="" || day==""){
    	return false;
    }    
	if(parseInt(year)<1930 || parseInt(year)>2029)
	{  
		return false;
	}
	if(parseInt(month)>12 || parseInt(month)<1) 
	{	
		return false;
	}
	var m=parseInt(month)
	var d=31
	if(m==4 ||m==6 || m==9 || m==11)
	{
		d=30
	}
	if(m==2)
	{
		if(isLeapYear(parseInt(year)))
		{
			d=29
		}else
		{
			d=28
		}
	}
	if(parseInt(day)>d)
	{  
		return false;
	}  
	
	return true;
}

function isLeapYear(argYear) 
{
	return (((argYear%4==0) && !(argYear%100==0)) || (argYear%400==0));
}

/*
Function: 字符串普通检测函数
Document by Lithium 2002-5-13
Last modify by Tony 2004-10-27
*/
function chkInput(str, maxLen, errMsg)
{	
	str=trim(str);	// Remove the blanks
	if(realLength(str)>maxLen)
	{
		alert(errMsg+"中输入了太多文字！")
		return false
	}
	return true
}

/*
Function: 字符串检测函数
Document by Lithium 2002-5-13
Last modify by Lithium 2002-5-13
*/
function chkString(str, mandatory, minLen, maxLen, errMsg)
{	
	str=trim(str);	// Remove the blanks
	if(str.length==0)
	{
		if(mandatory)
		{
			alert(errMsg+"不能为空！")
			return false
		}else
		{
			return true
		}
	}
	
	if(minLen<1)
	{
		minLen=1
	}
	if(realLength(str)<minLen || realLength(str)>maxLen)
	{
		alert(errMsg+"的长度必须在 "+minLen+"－"+maxLen+" 之间！")
		return false
	}
	return true
}



/*
Function: 字符串检测函数(邮编)
Document by Lithium 2002-5-13
Last modify by Lithium 2002-5-13
*/
function chkStringtoZip(str, mandatory, minLen, maxLen, errMsg)
{	
	str=trim(str);	// Remove the blanks
	if(str.length==0)
	{
		if(mandatory)
		{
			alert(errMsg+"不能为空！")
			return false
		}else
		{
			return true
		}
	}
	
	if(minLen<1)
	{
		minLen=1
	}
	if(realLength(str)>maxLen || realLength(str)<maxLen)
	{
		alert(errMsg+"的长度必须在 "+minLen+"－"+maxLen+" 之间！")
		return false
	}
	return true
}


/*
Function: 字符串检测函数(电话)
Document by Lithium 2002-5-13
Last modify by Lithium 2002-5-13
*/
function chkStringtoTel(str, mandatory, minLen, maxLen, errMsg)
{	
	str=trim(str);	// Remove the blanks
	if(str.length==0)
	{
		if(mandatory)
		{
			alert(errMsg+"不能为空！")
			return false
		}else
		{
			return true
		}
	}
	
	if(minLen<1)
	{
		minLen=1
	}
	if(realLength(str)>maxLen || realLength(str)<minLen)
	{
		alert(errMsg+"的长度必须在 "+minLen+"－"+maxLen+" 之间！")
		return false
	}
	return true
}

/*
Function: 数值检测函数
Document by Lithium 2002-5-13
Last modify by Lithium 2002-5-13
*/
function chkNumeric(str, mandatory, minValue, maxValue, errMsg)
{
	str=trim(str);	// Remove the blanks
	if(str.length==0)
	{
		if(mandatory)
		{
			alert(errMsg+"不能为空！")
			return false
		}else
		{
			return true
		}
	}
	
	if(isNaN(str))
	{
		alert(errMsg+"输入错误！")
		return false
	}
	if(str<minValue || str>maxValue)
	{
		alert(errMsg+"必须在 "+minValue+"－"+maxValue+" 之间！")
		return false
	}
	return true
}

/*
Function: 整数检测函数
Document by Lithium 2002-6-5
Last modify by Lithium 2002-6-6
*/
function chkInt(str, mandatory, minValue, maxValue, errMsg)
{
	str=trim(str);	// Remove the blanks
	if(str.length==0)
	{
		if(mandatory)
		{
			alert(errMsg+"不能为空！")
			return false
		}else
		{
			return true
		}
	}
	
	if(isNaN(str))
	{
		alert(errMsg+"输入错误！")
		return false
	}
	if(_leftTrim0(str)!="")
	{
		if(parseInt(_leftTrim0(str))!=str || str.indexOf(".") != -1)
		{
			alert(errMsg+"必须为整数！")
			return false
		}
	}
	if(str<minValue || str>maxValue)
	{
		alert(errMsg+"必须在 "+minValue+"－"+maxValue+" 之间！")
		return false
	}
	return true
}

/*
Function: 身份证号检测函数
Document by Lithium 2002-5-13
Last modify by Lithium 2002-5-13
*/
function  chkId(str, mandatory, errMsg)
{
	str=trim(str);	// Remove the blanks
	if(str.length==0)
	{
		if(mandatory)
		{
			alert(errMsg+"不能为空！")
			return false
		}else
		{
			return true
		}
	}
	
	if(realLength(str)!=15 && realLength(str)!=18)
	{
		alert(errMsg+"输入错误！")
		return false
	}
	return true
}

/*
Function: 邮编检测函数
Document by Lithium 2002-5-13
Last modify by Lithium 2002-5-13
*/
function  chkZipCode(str, mandatory, errMsg)
{
	str=trim(str);	// Remove the blanks
	if(str.length==0)
	{
		if(mandatory)
		{
			alert(errMsg+"不能为空！")
			return false
		}else
		{
			return true
		}
	}
	
	if(realLength(str)!=6)
	{
		alert(errMsg+"输入错误！")
		return false
	}
	return true
}

/*
Function: EMail检测函数
Document by Lithium 2002-5-13
Last modify by Lithium 2002-5-13
*/
function  chkEMail(str, mandatory, errMsg)
{
	str=trim(str);	// Remove the blanks
	if(str.length==0)
	{
		if(mandatory)
		{
			alert(errMsg+"不能为空！")
			return false
		}else
		{
			return true
		}
	}
	
	for (i=0; i<str.length; i++)
	{
		c = str.substr(i, 1)
		if(i==0 && c=='@')
		{
			alert(errMsg+"输入错误！")
			return false;
		}else{
			if(c=='@')
			{
				for(j=i; j<str.length; j++)
				{
					d=str.substr(j,1)
					if(d=='.' && j<(str.length-1))
					{
						return true;
					}
				}
			} 
		} 
	}
	alert(errMsg+"输入错误！")
	return false;
}

/*
Function: 日期检测函数
Document by Lithium 2002-5-13
Last modify by Lithium 2002-5-13
*/
function  chkDate(str, mandatory, errMsg)
{
	str=trim(str);	// Remove the blanks
	if(str.length==0)
	{
		if(mandatory)
		{
			alert(errMsg+"不能为空！")
			return false
		}else
		{
			return true
		}
	}
	
	if(!isDate(str))
	{
		alert(errMsg+"输入错误！")
		return false
	}
	return true
}


function  chkDates(str, mandatory, errMsg)
{
	str=trim(str);	// Remove the blanks
	if(str.length==0)
	{
		if(mandatory)
		{
			alert(errMsg+"不能为空！")
			return false
		}else
		{
			return true
		}
	}
	
	/* if(!isDate(str))
	{
		alert(errMsg+"输入错误！")
		return false
	}
	*/
	return true
}

/*
Function: 电话号码检测函数
Document by Lithium 2002-5-13
Last modify by Lithium 2002-5-13
*/
function  chkPhone(str, mandatory, errMsg)
{
	str=trim(str);	// Remove the blanks
	if(str.length==0)
	{
		if(mandatory)
		{
			alert(errMsg+"不能为空！")
			return false
		}else
		{
			return true
		}
	}
	
	if(realLength(str)>15)
	{
		alert(errMsg+"输入超长！")
		return false
	}
	return true
}

/*
Function: 下拉列表框检测函数
Document by Lithium 2004-10-27
Last modify by Tony 2004-10-27
*/
function chkCombo(str, mandatory, errMsg)
{	
	str=trim(str);	// Remove the blanks
	if(str=="" || str=="none")
	{
		if(mandatory)
		{
			alert("请选择一个"+errMsg+"！")
			return false
		}else{
			if(str=="none")
			{
				alert("请选择一个有效的"+errMsg+"！")
				return false;
			}else{
				return true;
			}
		}
	}
	return true
}

	
/*
Function: 单击List的页面的列表标题调用，实现单击列排序。
Document by Tony 2004-12-15
*/
function myTrClickForOrder(){
	var orderField = event.srcElement.name;
	var oldOrderField = document.formName.myOrderFields.value;
	var i = oldOrderField.indexOf(" ");
	if(i != -1){
		oldOrderField = oldOrderField.substring(0, i);
	}
	
	if(orderField != oldOrderField){
		parent.myOrderDirection = "desc";
	}
	
	if (orderField == null || orderField == ""){
		return;
	}
	
	if (parent.myOrderDirection == "desc"){
		parent.myOrderDirection = "asc";
	}else{
		parent.myOrderDirection = "desc"
	}
	document.formName.myOrderFields.value = orderField + " " + parent.myOrderDirection;
	
	submitForm('','OptQueryCondition','');
}
function myTrClickForOrder2(optKind){
	var orderField = event.srcElement.name;
	var oldOrderField = document.formName.myOrderFields.value;
	var i = oldOrderField.indexOf(" ");
	if(i != -1){
		oldOrderField = oldOrderField.substring(0, i);
	}
	
	if(orderField != oldOrderField){
		parent.myOrderDirection = "desc";
	}
	
	if (orderField == null || orderField == ""){
		return;
	}
	
	if (parent.myOrderDirection == "desc"){
		parent.myOrderDirection = "asc";
	}else{
		parent.myOrderDirection = "desc"
	}
	document.formName.myOrderFields.value = orderField + " " + parent.myOrderDirection;
	
	submitForm('',optKind,'');
}
/*
Function: 用于设置排序列的排序图标。
Document by Tony 2004-12-15
*/
function setOrderDirectionFlag(){
	var orderField = document.formName.myOrderFields.value;
	if (orderField == null || trim(orderField).length == 0){
		return;
	}
	
	var x = orderField.indexOf(",");
	if(x != -1){
		return;
	}
	
	var i = orderField.indexOf(" ");
	if(i != -1){
		orderField = orderField.substring(0, i);
	}
	orderField = orderField.replace('.', '_');
	
	var o_orderField = MM_findObj(orderField);
	if (o_orderField == null){
		return;
	}

	var myOrderFlag = document.createElement("img");
	eval(orderField + ".insertBefore(myOrderFlag)");
	
	var srcPath;
	
	if (parent.myOrderDirection == 'desc'){
		srcPath = "/Honglian/images/down.gif";
	}else if(parent.myOrderDirection == 'asc'){
		srcPath = "/Honglian/images/up.gif";
	}else{
		srcPath = "/Honglian/images/aaa.gif";
	}
	
	myOrderFlag.src = srcPath;
}

/*
Function: 判断是否有分页信息，若有将“gotoPage”和“currentPage”置为零。
Document by Tony 2005-1-14
*/
function resetPagination(){
	var oGotoPage = document.all.item("gotoPage");
	var oCurrentPage = document.all.item("currectPage");
	
	if (oGotoPage != null && oCurrentPage != null){
		oGotoPage.value = 1;
		oCurrentPage.value = 1;
	}
}