function OpenSearchWindow(searchUrl)
{
	var scrwidth=screen.width;
	var scrheight=screen.height
	var leftmargin=(scrwidth-700)/2;
	var topmargin=(scrheight-600)/2;
	//var w1=window.open(searchUrl,'','toolbar=0,top=' + topmargin + ',left=' + leftmargin + ',menubar=0,width=700,height=600,scrollbars=1,resizable=0');
	var w1=window.open(searchUrl,'','');
	w1.window.focus();
}
function closePage()
{       
	opener=null;
	window.close();
}
function callPage()
{     
	var form = document.forms[0];
	
	if(form != null)
	{      
		form.submit();
		//closePage();
	}
	
}
function resetPage()
{
	var form = document.forms[0];
	if(form != null)
	{
		form.reset();
		setFocus(0);
	}
}
//操控可选可输的Select
function selectKeyPress(obj, size)
{
	alert("key press");
	obj.options[size]=new Option(ok=(obj.options[size])?obj.options[size].innerText+String.fromCharCode(event.keyCode):String.fromCharCode(event.keyCode),"client")
	obj.options[size].value=obj.options[size].innerText;
	obj.selectedIndex=size;
	return true;
}
function selectKeyDown(obj, size)
{
	alert("key down");
	return true;
}

function selectKeyup(obj, size, type)
{
	if(obj.options[size])
	{
		if(event.keyCode==8)
		{
			var str=obj.options[size].innerText;
			var len=str.length;
			obj.options[size].innerText=str.substring(0,len-1);
			if(obj.options[size].innerText=="")
			{
				obj.remove(size);
				return true;
			}
			return true;
		}
		obj.selectedIndex=size;			
		if(event.keyCode==13)
			return true;
		obj.options[size].value=obj.options[size].innerText;
		if(!checkType(obj, type, false))
		{
			var str=obj.options[size].value;
			var len=str.length;
			obj.options[size].innerText=str.substring(0,len-1);
			obj.options[size].value=str.substring(0,len-1);
			if(obj.options[size].innerText=="")
			{
				obj.remove(size);
				return true;
			}
		}
	}
	return true;
}


//objArray数据信息
//name, display, type, lookup, null, value,focus
var NAME    = 0;
var DISPLAY = 1;
var TYPE    = 2;
var OBJECT  = 3;
var LOOKUP  = 4;
var ISNULL  = 5;
var VALUE   = 6;
var FOCUS   = 7;
var NEXT    = 8;

//code编码长度不能大于20
var TCODE    = 1;
//name字符串长度不能大于400
var TNAME    = 2;
//remark备注长度不能大于4000
var TREMARK  = 3;
//num序号必须是不超过20位的整数
var TNUM     = 4;
//count数量必须是不超过16位的整数
var TCOUNT   = 5;
//real质量必须是14位整数加6位小数	
var TREAL    = 6;
//money金额为不超过14位的整数加2位小数
var TMONEY   = 7;
//date日期格式为YYYY-MM-DD
var TDATE    = 8;
//mask权限码必须是xxx.xxx.xxx.xxx的形式
var TMASK    = 9;
//注意：Flag和DateTime没有判断
var TFLAG    = 10;
var TDATETIME = 11;
//预测年数，在0和100之间
var TYEAR    = 12;
//利率 不超过10位的整数加10位小数
var TRATE = 13;

//参数顺序
//name, display, type, lookup, Null,isFocus, value
function addField()
{
	var args = addField.arguments;
	if(args.length < 3)
		return false;
	objArray = getObjArray();
	if(objArray == null)
		return false;
	var size = objArray.length;
	for(var i=0; i<size; i=i+NEXT)
	{
		if(objArray[i+NAME]==args[0])
			return false;
	}
	objArray[size+NAME]    = args[0];
	objArray[size+DISPLAY] = args[1];
	objArray[size+TYPE]    = args[2];
	if(args[3])
		objArray[size+OBJECT] = args[3];
	else objArray[size+OBJECT] = null;
	
	objArray[size+LOOKUP]  = 'null';
	if(args[4])
		if(args[4] != 'null')
			objArray[size+LOOKUP] = args[4];
	if(args[5])	objArray[size+ISNULL]  = 'y';
	else objArray[size+ISNULL]  = 'n';
	objArray[size+VALUE]   = '';
	if(args[6])
	{
		for(var i=0; i<size; i=i+NEXT)
			objArray[i+FOCUS] = 'n';
		objArray[size+FOCUS] = 'y';
	}
	else if(size == 0) objArray[size+FOCUS] = 'y';
	else objArray[size+FOCUS] = 'n';
	if(objArray[size+FOCUS] == 'y')
		setFocus(size);
	if(args[7])
	{
		objArray[size+VALUE] = args[7];
		obj = getObject(size);
		if(obj != null)
		obj.value = objArray[size+VALUE];
	}
}
function procLookup(obj)
{
	objArray = getObjArray();
	if(objArray == null)
		return false;
	var pos = getObjPosition(obj);
	if(pos < 0)
		return false;
	objName = objArray[pos+LOOKUP];
	if(objName == 'null')
		return false;
	var lookObj = eval("document.all."+objName);
	if(lookObj == null)
		return false;
	lookObj.click();
}
function getObjArray()
{
	return objArray;
}
//用户按下按键，调用此函数，一次长时间按键，可能响应多次
function checkKeyDown()
{
	objArray = getObjArray();
	if(objArray == null)
		return true;
	obj = event.srcElement;
	if(obj == null)
		return true;
	pos = getObjPosition(obj);
	if(pos < 0)
		return true;
	//取出当前输入框的类型
	type = objArray[pos+TYPE];
	//检查当前值是否有效，如果无效则回执为原来的值
	if(!checkType(obj, type))
		obj.value = objArray[pos+VALUE];
	else objArray[pos+VALUE] = obj.value;
	//如果是查询操作
	if(event.keyCode == 17)
	{
		procLookup(obj);
		return false;
	}
	return true;
}
//用户松开按键，调用此函数，一次长时间按键，只响应一次
function checkKeyUp()
{
	objArray = getObjArray();
	if(objArray == null)
		return false;
	obj = event.srcElement;
	if(obj == null)
		return true;
	pos = getObjPosition(obj);
	if(pos < 0)
		return true;
	type = objArray[pos+TYPE];
	if(!checkType(obj, type))
		obj.value = objArray[pos+VALUE];
	else objArray[pos+VALUE] = obj.value;
	//如果是回车，转移焦点或者提交当前页面
	if(event.keyCode == 13)
	{
		//alert(pos);
		//alert(objArray.length);
		if(pos+NEXT == objArray.length)
		{
			var ret = checkAll();
			if(ret.length > 0)
			{
				alert(ret);
				return true;
			}
		}
		else setFocus(pos+NEXT);
	}
	return true;
}
function checkAll()
{
	var ret = '';
	objArray = getObjArray();
	if(objArray == null)
		return ret;
	for(var i=0;i<objArray.length;i+=NEXT)
	{
		obj = getObject(i);
		type = objArray[i+TYPE];
		if(!checkType(obj, type, true))
			ret = ret + objArray[i+DISPLAY] + '类型为'+type+'，与输入不符\n';
		if((obj.value.length == 0)&&(objArray[i+ISNULL] == 'y'))
			ret = ret + objArray[i+DISPLAY] + '不能为空\n';
	}
	return ret;
}
function checkType(obj, type, laskCheck)
{
	if(obj.value.length == 0)
		return true;
	//编码长度不能大于20
	if(type == TCODE)
	{
		return checkString(obj, 20);
	}
	//字符串长度不能大于40
	else if(type == TNAME)
	{
		return checkString(obj, 400);
	}
	//备注长度不能大于1000
	else if(type == TREMARK)
	{
		return checkString(obj, 4000);
	}
	//序号必须是不超过20位的整数
	else if(type == TNUM)
	{
		return checkNum(obj, 20, 0);
	}
	//数量必须是不超过16位的整数
	else if(type == TCOUNT)
	{
		return checkNum(obj, 16, 0);
	}
	//质量必须是14位整数加6位小数	
	else if(type == TREAL)
	{
		return checkNum(obj, 14, 6);
	}
	else if( type == TRATE)
	{
		return checkNum(obj,10,10);
	}
	//金额为不超过14位的整数加2位小数
	else if(type == TMONEY)
	{
		return checkNum(obj, 14, 2);
	}
	//日期格式为YYYY-MM-DD
	else if(type == TDATE)
	{
		if(laskCheck)
			return checkDate(obj);
		else	return formatDate(obj);
	}
	//权限码必须是xxx.xxx.xxx.xxx的形式
	else if(type == TMASK)
	{
		if(laskCheck)
			return checkMask(obj);
		else return formatMask(obj);
	}
	else if(type == TFLAG)	return true;
	else if(type == TDATETIME) return true;
	else if(type == TYEAR)
	{
		return checkNum(obj, 2, 0);
	}	
	else return false;
}
function setFocus(pos)
{
	objArray = getObjArray();
	if(objArray == null)
		return false;
	obj = getObject(pos);
	if(obj != null)
		obj.focus();
	for(var i=0; i<objArray.length; i=i+NEXT)
	{
		if(i == pos)
			objArray[i + FOCUS] = 'y';
		else objArray[i + FOCUS] = 'n';
	}
}
function getObjPosition(obj)
{
	objArray = getObjArray();
	if(objArray == null)
		return -1;
	for(var i=0; i<objArray.length; i=i+NEXT)
	{
		if(objArray[i + NAME] == obj.name)
			return i;
		else continue;
	}
	return -1;
}
function getCurPosition()
{
	var ret = -1;
	objArray = getObjArray();
	if(objArray == null)
		return ret;
	for(var i=0;i<objArray.length;i+=NEXT)
	{
		if(objArray[i+FOCUS] == 'y')
		{
			ret = i;
			break;
		}
	}
	return ret;	
}
function getObject(pos)
{
	objArray = getObjArray();
	if(objArray == null)
		return false;
	if(objArray[pos+OBJECT] != null)
		return objArray[pos+OBJECT];
	return eval("document.all."+objArray[pos+NAME]);
}
function checkNum(obj, l, r)
{
	value = obj.value;
	if(isNaN(value))
		return false;
	var pos = value.indexOf(".");
	if((pos >= 0) && (value.length-pos-1 > r))
		return false;
	if(pos > l)
		return false;
	return true;
}
function checkString(obj, l)
{
	if(obj.value.length > l)
		return false;
	return true;
}
function checkMask(obj)
{
	return false;
}




//日期的分隔符
var dateSeparator='-';

//输入过程中的格式化
function formatDate(obj) 
{
	var value = obj.value;
	var dateArray = value.split(dateSeparator); 
	//只输入年
	if (dateArray.length == 1) 
	{
		syear = dateArray[0];
		if(syear.length == 0)	return true;
		if(isNaN(syear))	return false;
		if(parseInt(syear) < 0) return false;
		if(syear.length == 4)
			obj.value = value+dateSeparator;
		if(syear.length > 4)	return false;
		return true;
	}
	//输入年月
	else if (dateArray.length == 2)
	{
		syear = dateArray[0];
		smonth = dateArray[1];
		//判断年份
		if(isNaN(syear)) return false;
		if(syear.length > 4)	return false;
		if(parseInt(syear) < 0) return false;
		//判断月份
		if(smonth.length == 0)	return true;
		if(isNaN(smonth))	return false;
		nmonth = parseInt(smonth, 10);
		if(nmonth >12 || nmonth < 1)	return false;
		if(nmonth > 1)	obj.value = value+dateSeparator;
		return true;
	}
	//输入年月日
	else if (dateArray.length == 3)
	{
		syear = dateArray[0];
		smonth = dateArray[1];
		sday = dateArray[2];
			
		//年份未输入，或者在小于等于四位有效
		if(isNaN(syear)) return false;
		if(syear.length > 4)	return false;
		
		//月份未输入，或者在[1..12]之间有效
		if(isNaN(smonth))	return false;
		nmonth = parseInt(smonth, 10);
		if(nmonth >12 || nmonth < 1)	return false;

		if(sday.length == 0)	return true;
		if(isNaN(sday))	return false;
		iday=parseInt(sday,10);
		//如果月份未输入，则天[1..31]之间
		if(smonth.length == 0)
			if(iday > 0 && iday < 32)
				return true;
			else return false;
		if(syear.length == 0)	return true;
		return checkDate(obj);
	}
	else return false; 
} 
//输入日期完成后的校验
function checkDate(obj)
{
	var value =obj.value;
	var dateArray = value.split(dateSeparator); 
	if (dateArray.length != 3) 
		return false;
	syear = dateArray[0]; 
	smonth = dateArray[1]; 
	sday = dateArray[2];
	if(syear.length == 0 || smonth.length == 0 || sday.length == 0)
		return false;
	return validDate(syear,smonth,sday);
}  

//日期合法性判断
function validDate(syear,smonth,sday)
{
	var iyear=parseInt(syear,10);
	var imonth=parseInt(smonth,10);
	var iday=parseInt(sday,10);
	if(imonth > 12 || imonth < 1)
		return false;
  	if (imonth == 1 || imonth == 3 || 
		imonth == 5 || imonth == 7 || 
		imonth == 8 || imonth == 10 || imonth== 12) 
		if(iday > 31 || iday < 1)
			return false; 
	if (imonth == 4 || imonth == 6 || imonth == 9 || imonth == 11) 
		if(iday > 30 || iday < 1)
			return false; 
	if (imonth == 2) 
	{ 
		if (iday < 1) return false; 
		if (LeapYear(iyear)) 
		{
			if (iday > 29) return false; 
		}
		else if (iday > 28) return false;  
   	} 
	return true; 
}
//闰年判断
function LeapYear(iyear) 
{ 
	if(iyear % 100 == 0) 
	{
		if(iyear % 400 == 0)
			return true;
	}
	else if ((iyear % 4) == 0)
		return true;
	return false; 
}
function checkMask(obj)
{
	var value = obj.value;
	var maskArray = value.split('.'); 
	if(maskArray.length < 4)
		return false;
	for(var i=0; i<4; i++)
	{
		var sd = maskArray[i];
		if(isNaN(sd) || sd.length == 0)
			return false;
		var id = parseInt(sd);
		if(id < 0 || id > 255)
			return false;
	}	
	return true;
}
function formatMask(obj)
{
	var value = obj.value;
	var maskArray = value.split('.'); 
	for(var i=0; i<maskArray.length; i++)
	{
		var sd = maskArray[i];
		if(sd.length == 0)	return true;
		if(isNaN(sd))	return false;
		var id = parseInt(sd);
		if(id < 0 || id > 255)
			return false;		
		//如果是当前最后一个且不是第四个
		if((i+1 == maskArray.length) && (i < 3))
			if(id > 25)	obj.value = value + '.';
	}
	return true;
}
function toKiloFormat(str)
{
	//转换为千分位
	//123456-->123,456
	str = str.toString() + "";
	var tailstr="";
	var dotlocation = str.indexOf(".");
	var len = str.length;
	if (dotlocation>0)
	{
		tailstr = str.substr(dotlocation,len - dotlocation);
		str = str.substr(0,dotlocation);
	}
	var s ="";
	
	var diff = str.length % 3;	
	if (diff==1)
	{
		str="##" + str;
	}
	else if(diff==2)
	{
		str="#" + str;
	}
	
	for (j=0;j<str.length;j++)
	{
		if (j%3==0)
		{
			if (j==0)
				s=str.substr(j,3);
			else
				s=s+"," +str.substr(j,3);
		}
	}
	var newstr="";
	for (j=0;j<s.length;j++)
	{
		var subs = s.substr(j,1);
		if (subs!="#")
			newstr=newstr+subs;
	}
	if (tailstr!="") 
	{
		if (tailstr.length>3)
			tailstr = tailstr.substr(0,3); 
		if (tailstr!=".0")
			newstr=newstr+tailstr;
	}
	return newstr;
}
