var FFSTRING_DEF_ALPHA		= 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
var FFSTRING_DEF_NUMBER		= '1234567890'
var FFSTRING_DEF_TELDIGIT	= '-1234567890'

function FFCheckString( obj , objname, astr, lmin, lmax , showmsg ){
	var i
	var t = obj.value;
	var length = FFGetByteLength(obj);

	if (length < lmin || length > lmax) {
		if(showmsg!=null && showmsg) {
			if (lmin == lmax) alert(objname + 'is ' + lmin + ' aaa');
			else alert(objname + 'is ' + lmin + ' ~ ' + lmax + ' bbb');
			obj.focus()
		}
		return false
	}
	if (astr.length > 1) {
		for (i=0; i < length; i++){
			if(astr.indexOf(t.substring(i,i+1))<0) {
				if(showmsg!=null && showmsg) {
					alert(objname + 'ccc');
					obj.focus()
				}
				return false
			}
		}
	}
	return true
}

function FFCheckBlank( obj , objname , showmsg){
	var returnvalue = true;
	if(obj.value.replace(/ /ig,"")==""){
		if(showmsg == null || showmsg) {
			alert(objname);
			obj.select();
			obj.focus();
		}
		returnvalue = false;
	}
	return returnvalue;
}

function FFAddComma( value ){
	var tmpValue  = "";
	var realValue = "";
	var length;
	var count = 0;
	for(var i=length;i>=0;i--){
		tmpValue += value.substring(i,i+1);
		if((count-1)%3==2 && i>0) tmpValue +=",";
		count++;
	}
	length = tmpValue.length;

	for(var i=length;i>=0;i--){
		realValue += tmpValue.substring(i,i+1);
	}
	return realValue;
}

function FFLTrim( value ){
	if(value==null || value=="") return "";

	var length = value.length;

	var i;
	for(i=0;i<length;i++){
		if(value.charAt(i) != " ") break;
	}
	return value.substring(i);
}

function FFRTrim( value ){
	if(value==null || value=="") return "";
	var length = value.length;
	var i;
	for(i=length-1;i>=0;i--){
		if(value.charAt(i) != " ") break;
	}
	return value.substring(0,i+1);
}

function FFTrim( value ){
	return FFRTrim(FFLTrim(value));
}

function FFFillString(srValue,nCount){
	var temp = "";

	for(var i=0;i<nCount;i++){
		temp += srValue;
	}

	return temp;
}

function FFFillRight(srValue, nCount, fillchar){
	if(srValue==null) return "";

	var temp = "";
	temp += srValue;
	temp += FFFillString(fillchar,nCount - srValue.length);

	return temp;
}

function FFFillLeft(srValue, nCount, fillchar){
	if(srValue==null) return "";

	var len = srValue.length;

	temp = FFFillString(fillchar,nCount-len) + srValue;

	return temp;
}

function isValidEmailAddress(mail){
	var t = mail
	var ValidFlag = false
	var atCount = 0
	var SpecialFlag
	var atLoop
	var atChr
	var BadFlag
	var tAry1
	var UserName
	var DomainName

	if ( t.length > 0 && t.indexOf("@") > 0 && t.indexOf(".") > 0 ) {
		atCount = 0
		SpecialFlag = false

		for( atLoop=1; atLoop<=t.length; atLoop++ ) {
			atChr = t.substring( atLoop, atLoop+1 )
			if ( atChr == "@" ) atCount = atCount + 1

			if ( (atChr >= 32) && (atChr <= 44) ) SpecialFlag = true
			if ( (atChr == 47) || (atChr == 96) || (atChr >= 123) ) SpecialFlag = true
			if ( (atChr >= 58) && (atChr <= 63) ) SpecialFlag = true
			if ( (atChr >= 91) && (atChr <= 94) ) SpecialFlag = true
			if ( atChr == "," ) SpecialFlag = true
		}

		if ( ( atCount == 1 ) && (SpecialFlag == false ) ) {
			BadFlag = false
			tAry1 = t.split("@")
			UserName = tAry1[0]
			DomainName = tAry1[1]
			if ( (UserName.length <= 0 ) || (DomainName.length <= 0 ) ) BadFlag = true
			//if ( DomainName.substring( 1, 2 ) == "." ) BadFlag = true
			if ( DomainName.substring( DomainName.length-1, DomainName.length) == "." ) BadFlag = true
			ValidFlag = true
		}
	}
	if ( BadFlag == true ) ValidFlag = false
	return ValidFlag;
}

function FFGetByteLength( obj ){
	var msg = obj.value;
	var str = new String(msg);
	var len = str.length;
	var count = 0;

	for (k=0 ; k<len ; k++){
		temp = str.charAt(k);

		if (escape(temp).length > 4) {
			count += 2;
		}
		else if (temp == '\r' && str.charAt(k+1) == '\n') { // \r\n?? ????
			count += 2;
		}
		else if (temp != '\n') {
			count++;
		}
	}
	return count;
}

function FFCutByteString( obj, maxlength) {
	var str,msg;
	var len=0;
	var temp;
	var count;
	count = 0;

	msg = obj.value;
	str = new String(msg);
	len = str.length;

	for(k=0 ; k<len ; k++) {
		temp = str.charAt(k);

		if(escape(temp).length > 4) {
			count += 2;
		}
		else if (temp == '\r' && str.charAt(k+1) == '\n') { // \r\n?? ????
			count += 2;
		}
		else if(temp != '\n') {
			count++;
		}
		if(count > 80) {
			str = str.substring(0,k);
			break;
		}
	}
	obj.value = str;
}

function FFCutByteStringToArray(arTemp, msg, maxlength) {
	var str;
	var len=0;
	var temp;
	var count;
	var srTemp = new String(msg);

	len = srTemp.length;

	for(var i=0;srTemp.length>0;i++){
		count = 0;
		for(k=0 ; k<len ; k++) {
			str = srTemp;
			temp = srTemp.charAt(k);

			if(escape(temp).length > 4) {
				count += 2;
			}
			else if (temp == '\r' && srTemp.charAt(k+1) == '\n') { // \r\n?? ????
				count += 2;
			}
			else if(temp != '\n') {
				count++;
			}
			if(count > maxlength) {
				str = srTemp.substring(0,k);
				break;
			}
		}

		arTemp[i] = str;
		srTemp = srTemp.substring(k);
	}

	return i;
}

function FFValidString( obj , astr, lmin, lmax ){
	var i
	var t = obj.value;
	var length = FFGetByteLength(obj);

	if (length < lmin || length > lmax) {
		obj.focus()
		return -1;
	}
	if (astr.length > 1) {
		for (i=0; i < length; i++){
			if(astr.indexOf(t.substring(i,i+1))<0) {
				obj.focus()
				return -2;
			}
		}
	}
	return 1;
}

function replace( str, oldstr, newstr){
	if(str == null) return "";
	while (str.indexOf(oldstr) >= 0) {
		str = replaceFirst(str, oldstr, newstr);
	}
	return str;
}

function indexOfFromIdx(str, findStr, fromIdx){
	var tmp;
	var tmpIdx;
	tmp = str.substring(fromIdx,str.length);
	return tmp.indexOf(findStr)+fromIdx;
}
function removeFirst(str, oldstr){
	var rmstrSIdx = str.indexOf(oldstr);
	var rmstrEIdx = rmstrSIdx + oldstr.length;
	return (str.substring(0,rmstrSIdx)).concat(str.substring(rmstrEIdx),str.length);
}
function replaceFirst(str, oldstr, newstr){
	var rmstrSIdx = str.indexOf(oldstr);
	var rmstrEIdx = rmstrSIdx + oldstr.length;
	return (str.substring(0,rmstrSIdx)).concat(newstr).concat(str.substring((rmstrEIdx),str.length));
}
function checkKey(){
    if((event.keyCode > 32 && event.keyCode < 48) || (event.keyCode > 57 && event.keyCode < 65)
        || (event.keyCode > 90 && event.keyCode < 97)){
        event.keyCode = 0;
    }
}