<!-- hide from non-scriptable browsers
var gFrame
var gField
var gMaxLength=0
// general purpose function to see if an input value has been entered at all
function isEmpty(inputStr)
{
	if (inputStr == "" || inputStr == null)
	{
		return true
	}
	return false
}

// general purpose function to see if a suspected numeric input 
// is a positive integer
function isPosInteger(inputStr)
{
	if (inputStr.length>0)
	{
		for (var i = 0; i < inputStr.length; i++)
		{
			var oneChar = inputStr.charAt(i)
			if (oneChar < "0" || oneChar > "9")
			{
				return false
			}
		}
		return true
	}
	return false
}

// general purpose function to see if a suspected numeric input 
// is a integer
function isInteger(inputStr)
{
	if (inputStr.length>0)
	{
		for (var i = 0; i < inputStr.length; i++)
		{
			var oneChar = inputStr.charAt(i)
			if (i==0 && oneChar=="-")
				continue
			if (oneChar < "0" || oneChar > "9")
			{
				return false
			}
		}
		return true
	}
	return false
}

// general purpose function to see if a suspected numeric input 
// is a number ( interger or float )
function isNumber(inputStr)
{
	if (inputStr.length>0)
	{
		var oneDecimal=false
		for (var i = 0; i < inputStr.length; i++)
		{
			var oneChar = inputStr.charAt(i)
			if (i==0 && oneChar=="-")
				continue
			if ( oneChar=="." && !oneDecimal)
			{
				oneDecimal=true
				continue
			}
			if (oneChar < "0" || oneChar > "9")
			{
				return false
			}
		}
		return true
	}
	return false
}

// function to determine if value is in MaxLength range for this application
function inMaxLength(inputStr,maxlength)
{
	var num = 0
	for (var i=0;i<inputStr.length;i++)
	{
		num+=inputStr.charCodeAt(i)>255? 2:1
	}
	if (num > maxlength)
	{
		return false
	}
	return true
}

// function to determine if value is in MaxLength range for this application
function inMinLength(inputStr,minlength)
{
	var num = 0
	for (var i=0;i<inputStr.length;i++)
	{
		num+=inputStr.charCodeAt(i)>255? 2:1
	}
	if (num < minlength)
	{
		return false
	}
	return true
}

// function to determine if Text or TextArea is valid
function validCode()
{
	var inputStr=gField.value
	if (inMinLength(inputStr,gMaxLength))
		return true
	gField.focus()
	gField.select()
	alert("输入内容长度不符！")
	return false
}

// function to determine if Text or TextArea is valid
function validText()
{
	var inputStr=gField.value
	if (inMaxLength(inputStr,gMaxLength))
		return true
	gField.focus()
	gField.select()
	alert("输入内容超出数据库允许的长度！")
	return false
}

// function to determine if Prior is PosInteger or Empty
function validPrior()
{
	var inputStr=gField.value
	if (isEmpty(inputStr) || isPosInteger(inputStr))
		return true
	gField.focus()
	gField.select()
	alert("输入内容应该为正整数或空！")
	return false
}

// function to determine if Price is valid
function validPrice()
{
	var inputStr=gField.value
	if (isEmpty(inputStr) || isNumber(inputStr))
		return true
	gField.focus()
	gField.select()
	alert("输入内容应该为数字或空！")
	return false
}

// function to determine if Email is valid
function validEmail()
{
	var inputStr=gField.value
	if (inputStr.indexOf('@')!=-1)
		return true
	alert("请输入正确的电子邮件地址！")
	gField.focus()
	gField.select()
	return false
}

// function to determine if Number is valid
function validNotEmpty()
{
	var inputStr=gField.value
	if (!isEmpty(inputStr))
		return true
	alert("请输入内容！")
	gField.focus()
	gField.select()
	return false
}
// function to determine if Money is valid
function validMoney()
{
	var inputStr=gField.value
	if (isEmpty(inputStr) || isNumber(inputStr))
		return true
	gField.focus()
	gField.select()
	alert("输入内容应该为数字或空！")
	return false
}
// function to determine if Time is valid
function validTime()
{
	var inputStr=gField.value
	if (inputStr.length>0)
	{
		var varDecimal=false
		for (var i = 0; i < inputStr.length; i++)
		{
			var oneChar = inputStr.charAt(i)
			if ( oneChar==":" && !varDecimal)
			{
				varDecimal=true
				continue
			}
			varDecimal=false
			if (oneChar < "0" || oneChar > "9")
			{
				gField.focus()
				gField.select()
				alert("请按合法格式输入：hh:mm:ss！")
				return false
			}
		}
		return true
	}
	gField.focus()
	gField.select()
	alert("请输入内容！")
	return false
}
// function to determine if Price is valid
function validNumber()
{
	var inputStr=gField.value
	if (isEmpty(inputStr) || isNumber(inputStr))
		return true
	gField.focus()
	gField.select()
	alert("输入内容应该为数字或空！")
	return false
}
// **END DATA VALIDATION FUNCTIONS**
// begin validation dispatching mechanism
function dispatcher(validateFunc)
{
	this.doValidate=validateFunc
}

var dispatchLookup=new Array()
dispatchLookup["isEmpty"]=new dispatcher(isEmpty)
dispatchLookup["isPosInteger"]=new dispatcher(isPosInteger)
dispatchLookup["isInteger"]=new dispatcher(isInteger)
dispatchLookup["isNumber"]=new dispatcher(isNumber)
dispatchLookup["inMaxLength"]=new dispatcher(inMaxLength)
dispatchLookup["validText"]=new dispatcher(validText)
dispatchLookup["validPrior"]=new dispatcher(validPrior)
dispatchLookup["validPrice"]=new dispatcher(validPrice)
dispatchLookup["validNotEmpty"]=new dispatcher(validNotEmpty)
dispatchLookup["validEmail"]=new dispatcher(validEmail)
dispatchLookup["validMoney"]=new dispatcher(validMoney)
dispatchLookup["validTime"]=new dispatcher(validTime)
dispatchLookup["validNumber"]=new dispatcher(validNumber)
dispatchLookup["validCode"]=new dispatcher(validCode)

// main validation function called by form event handlers
function validate(frame,field,method)
{
	gFrame=frame
	if (isEmpty(frame.name))
		gField=eval("window.document.forms[0]."+field.name)
	else
		gField=eval("parent."+frame.name+".document.forms[0]."+field.name)
	var args=validate.arguments
	if (args.length>3)
		gMaxLength=args[3]
//	for (i=2;i<args.length;i++)
//	{
		if (!dispatchLookup[method].doValidate())
			return false
//	}
	return true
}
// end hiding -->
