function getOneCharByte(oneChar) {
	var ret;
	if ( oneChar == "" )
		ret = 0;
	else if ( oneChar.length > 1 )
		ret = calStringByte(oneChar);
	else if ( oneChar.charCodeAt(0) < 128 )
		ret = 1;
	else
		ret = 2;
	return ret;
}
function calStringByte(orgStr) {
	var ret,i;
	for(ret=0, i=0;i<orgStr.length;i++)
		ret+=getOneCharByte(orgStr.charAt(i));
	return ret;
}
function subStringByByte(orgStr, iByte) {
	var i, len, ret, oneChar;
	for(i=0, len=0, ret = ""; i < orgStr.length && len < iByte; i++ ) {
		oneChar = orgStr.charAt(i);
		len += getOneCharByte(oneChar);
		if ( len < iByte ) 
			ret += oneChar;
	}
	if ( len >= iByte )
		ret = ret.replace(/[\n\r]$/,"");
	return ret;
}
function calbyte(aquery) {
	return calStringByte(aquery);
}
function setDynamicMaxLength(targObj, maxByte) {
	targObj.setExpression("maxLength","getMaxLength(this.value, "+maxByte+")");
}
function getMaxLength(orgStr, maxByte) {
	var i, n;
	for(i=0, n=0;i<orgStr.length;i++)
		if ( orgStr.charCodeAt(i) > 128 )
			n++;
	return Math.max(maxByte - n, orgStr.length);
}
