/*************************************************************************** 
 * filename : FFString.js<br>
 * Radio button ???? ????????????<br>
 *
 * @version	: 1.0
 * @author	: Copyright (c) 2001 by free270. All Rights Reserved.
****************************************************************************/

/**
 * ??? ???
 * @param id
 * @return true or false
 */
function filterID(obj){
	var vTmp = obj.value;
	vTmp = vTmp.toLowerCase();
	if (vTmp.indexOf("test") > -1 || vTmp.indexOf("admin") > -1
	 || vTmp.indexOf("sfc") > -1 || vTmp.indexOf("webmaster") > -1){
		return false;
	}
	
	return true;
}



/**
 * FFCheckString()???? ?????? ??????????
 * Parameter astr?? ???? ????.
 */
var FFSTRING_DEF_ALPHA		= 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
var FFSTRING_DEF_NUMBER		= '1234567890'
var FFSTRING_DEF_TELDIGIT	= '-1234567890'


/**
 * ?????????? ?????? ?????? ??????
 * @param obj     : input ????
 * @param objname : ?????? (ex) ????
 * @param astr    : ???????? ?????? ????(FFSTRING_DEF_ALPHA,FFSTRING_DEF_NUMBER,FFSTRING_DEF_TELDIGIT?? ???????? ????????)
 *                  ?????? ?? ???? ???????? ??????
 * @param lmin    : ???? ????????(byte ??)
 * @param lmax    : ???? ????????(byte ??)
 * @param showmsg : true?????? ???? ?????? ?????? alert?? ????
 *                   false ???? check???? ?????? true,false?? return ????
 */

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 + '?? ' + lmin + ' ?? ?????? ??????');
			//else alert(objname + '?? ' + lmin + ' ~ ' + lmax + ' ?? ?????? ?????????? ??????');
			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 + '?? ?????? ?? ???? ?????? ??????????????');
					alert(objname + 'ccc');
					obj.focus()
				}
				return false
			}
		}
	}
	return true
}



/**
 * ?????????? ?????? ???????????? ?????? ??????
 * @param obj     : input ????
 * @param objname : ?????? (ex) ????
 * @param showmsg : true?????? ???? ?????? ?????? alert?? ????
 *                   false ???? check???? ?????? true,false?? return ????
 */

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;
}
/**
 * 1000?????? ????~
 * @param value   : ???? ??????
 * @return 1000???????? ???? string,ex) 123456 ===> 123,456
 */
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;
}



/**
 * ???? ?????? ???? ????
 * @param value   : ??
 * @return ???? ?????? ???? ?? , value?? null ?????? "" ???? ""?? return
 */

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);	
}


/**
 * ?????? ?????? ???? ????
 * @param value   : ??
 * @return ?????? ?????? ???? ?? , value?? null ?????? "" ???? ""?? return
 */

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);	
}


/**
 * ????/?????? ?????? ???? ????
 * @param value   : ??
 * @return ?????? ???? ?? , value?? null ?????? "" ???? ""?? return
 */

function FFTrim( value ){
	return FFRTrim(FFLTrim(value));	
}


/**
 * ????????  nCount ???? ???????? ?????? ????.
 * @param  srValue  : ?????????? ???? ??
 * @param  nCount   : ???? ????
 * @return srValue ?? nCount ???? ???????? ???? ??????
 */

function FFFillString(srValue,nCount){
	var temp = "";
	
	for(var i=0;i<nCount;i++){
		temp += srValue;
	}

	return temp;		
}


/**
 * ????????  nCount ?????? ???? fillchar?? ???????? ??????
 * @param  srValue  : ?????????? ???? ??
 * @param  nLength  : 
 * @return srValue ?? nCount ???? ???????? ???? ??????
 */

function FFFillRight(srValue, nCount, fillchar){	
	if(srValue==null) return "";		
	
	var temp = "";
	temp += srValue;
	temp += FFFillString(fillchar,nCount - srValue.length);
	
	return temp;
}


/**
 * ????????  nCount ?????? ???? fillchar?? ?????? ??????
 * @param  srValue  : ?????????? ???? ??
 * @param  nCount   : ???? ????
 * @return srValue ?? nCount ???? ???????? ???? ??????
 */

function FFFillLeft(srValue, nCount, fillchar){	
	if(srValue==null) return "";		

	var len = srValue.length;

	temp = FFFillString(fillchar,nCount-len) + srValue;
	
	return temp;
}


/**
 * ?????? ?????? ???????? ???? ????
 * @param value   : ??
 * @return ?????? ???? ?? , value?? null ?????? "" ???? ""?? return
 */

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;
}


/**
 * ???????? ?????? ???? ????(length?? ???? ?????? ????1?? ???????? ?????? ???? 2?? ????)
 * @param obj   : textfield ,textarea objec
 * @return ?????? ??
 */
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;	
}


/**
 * ???????? ?????? ?????? ??????. ???? ?????? ?????? ???? ????????(?????? ???????? ?????? ??????)
 * maxlength???? ???? ?? obj?? ???? ???? ?????? setting????
 * @param obj       : textfield ,textarea objec
 * @param mexlength : ????????
 */

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 FFStrCutByteString( cutStr, maxlength) {
	var str,msg;
	var len=0;
	var temp;
	var count;
	count = 0;

	msg = cutStr;
	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') { // 
			count += 2;
		}
		else if(temp != '\n') {
			count++;
		}
		if(count > maxlength) {
			str = str.substring(0,k)+"...";
			break;
		}
	}
	return str;
}

function FFStrBlankBrString(varStr, position){
	var strArr = FFRTrim(varStr).split(" ");
	
	var retStr="";
	
	if(strArr.length < position){
		return varStr;
	}
	
	for(var i = 0; i< strArr.length; i++){
		if(i == (position-1)){
			if((position-1) == (strArr.length-1)){
				retStr += strArr[i];
			}else{
				retStr += strArr[i]+"<br>";
			}
		}else{
			if(i == (strArr.length - 1)){
				retStr += strArr[i];
			}else{
				retStr += strArr[i]+" ";
			}
		}		
	}
	
	return retStr;
}



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;
}


/*
??????:
	var arTemp = new Array();
	function cut(){
		var obj;
		FFCutByteStringToArray(arTemp,document.frm_act.CONTENT.value,4000);
		for(var i=0;i<arTemp.length;i++){
			alert(arTemp[i]);
			obj = eval("document.frm_act.CONTENT"+(i+1));
			obj.value = arTemp[i];
		}	
	}
	function goSubmit(){
		
		cut();
		document.frm_act.submit();
	}
*/



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));
}