function CheckField(oForm, name, check, warning)
{
	if (check.match(/eq\(.+\)/)) {
		return CheckEqual(oForm, name, check, warning);
	} 
	
	//??????????
	var sReg = check;
	//??????,???????
	var field = document.getElementsByName(name)[0];
	if (field.disabled) return false;
	
	var sVal = GetValue(field);
	//???->?????,??????
	var reg = new RegExp(sReg,"i");
	if(!reg.test(sVal))
	{
			//?????,????warning
			alert(warning);
			//?????????,???????
			GoBack(field);
			return true;
	}
	return false;
}

function CheckFieldLen(oForm, name, maxlength, warning)
{
	var field = document.getElementsByName(name)[0];
	var sVal = GetValue(field);
	var length = strlen(sVal);
	if (length > maxlength) {
		alert(warning);
		GoBack(field);
		return true;
	}
	return false;
}

function CheckEqual(oForm, name, check, warning)
{
	//??????????
	var sReg = check.substring(3,check.length - 1);
	//??????,???????
	var field1 = document.getElementsByName(name)[0];
	var field2 = document.getElementsByName(sReg)[0];
	var sVal1 = GetValue(field1);
	var sVal2 = GetValue(field2);
	if(sVal1 != sVal2)
	{
			//?????,????warning
			alert(warning);
			//?????????,???????
			GoBack(field1);
			return true;
	}
	return false;
}

function CheckForm(oForm)
{
	var els = oForm.elements;
	//???????
	for(var i=0;i<els.length;i++)
	{
		//??????
		if(els[i].check)
		{
			//??????????
			var sReg = els[i].check;
			//??????,???????
			var sVal = GetValue(els[i]);
			//???->?????,??????
			var reg = new RegExp(sReg,"i");
			if(!reg.test(sVal))
			{
			//?????,????warning
			alert(els[i].warning);
			//?????????,???????
			GoBack(els[i])
			return false;
			}
		}
	}
	oForm.submit();
}

//?????????????
//?????,????el.value
//???,??????????????????"00"??????
//??????,??????????????????"0"??????
function GetValue(el)
{
//?????????
	var sType = el.type;
	switch(sType)
	{
	case "text":
	case "hidden":
	case "password":
	case "file":
	case "textarea": 
		return el.value;
	case "checkbox":
	case "radio": 
		return GetValueChoose(el);
	case "select-one":
	case "select-multiple": 
		return GetValueSel(el);
	}
}

//??radio,checkbox????,?"0"????????,?????????????0{1,}???????
function GetValueChoose(el)
{
	var sValue = "";
	//????????name,???????
	var tmpels = document.getElementsByName(el.name);
	for(var i=0;i<tmpels.length;i++)
	{
		if(tmpels[i].checked)
		{
		sValue += "0";
		}
	}
	return sValue;
}
//??select????,?"0"????????,?????????????0{1,}???????
function GetValueSel(el)
{
	var sValue = "";
	for(var i=0;i<el.options.length;i++)
	{
		//????????????value=""
		if(el.options[i].selected && el.options[i].value!="")
		{
		sValue += "0";
		}
	}
	return sValue;
}


//??????,??????????.???????
//?????,?????????????
//???,????????
//??????,????
function GoBack(el)
{
	//?????????
	var sType = el.type;
	switch(sType)
	{
	case "text":
	case "hidden":
	case "password":
	case "file":
	case "textarea": 
		el.focus();var rng = el.createTextRange(); rng.collapse(false); rng.select();
	case "checkbox":
	case "radio": 
		var els = document.getElementsByName(el.name);els[0].focus();
	case "select-one":
	case "select-multiple":
		el.focus();
	}
}

function strlen(str) {
	var i;
	var len;
	len = 0;
	for (i=0;i<str.length;i++){
		if (str.charCodeAt(i)>255) len+=2; else len++;
	}
	return len;
}