/***************************************/
/***** 값을 초기화해주는 함수 집합 *****/
/***************************************/

// 필수 입력항목 체크 함수( 텍스트 )
// val : 체크하고자 하는 값
// name : 필수입력항목의 명
function checkTextMandatory( name, val ) {
	v_length = reallength(value);
	if( v_length <= 0 ) {
		alert("\""+name+"\" should be entered" );
		return false;
	} else return true;
}

// 필수 입력항목 체크와 길이수 초가 동시체크하는 함수( 텍스트 )
// val : 체크하고자 하는 값
// name : 필수입력항목의 명
// maxLen : 입력창의 최대길이수
function checkTextMandatoryAll(name, value, maxLen) 
{
	v_length = reallength(value);

	if (v_length==0) {
		alert("\""+name+"\" should be entered");
		return false;

	} else if (v_length > maxLen) {
		alert("\""+name+"\" should be less than "+maxLen+" Byte (Current "+v_length+" Byte).");
		return false;
	} 
		return true;
}

function checkTextMandatoryAll2(name, value, maxLen) 
{
	v_length = reallength(value);

	if (v_length > maxLen) {
		alert("\""+name+"\" should be less than "+maxLen+" Byte (Current "+v_length+" Byte).");
		return false;
	} 
		return true;
}


// 필수입력항목 체크 함수( 콤보박스 )
// val : 체크하고자 하는 값
// name : 필수입력항목 콤보박스 명
function checkComboMandatory(name, val) {
	if( val == "" ) {
		alert("Select the \""+name+"\"");
		return false;
	} else return true;
}

// 같은 값을 가지는 년을 선택하는 함수
// combo : document.form이름.콤보박스명
// select : 선택하고자하는 년도
function selectComboBox( combo, select ) {
	for(i=0; i<combo.length; i++) {
		if(combo[i].value == select) {
			combo[i].selected = true;
			break;
		}
	}
}
// 년을 초기화하는 부분
function initYear(sel) 
{
  var time = new Date();
  var year = time.getYear();

  sel.length = 11; //년도갯수늘릴때
  sel[0].text = " ";
  sel[0].value = "";

  for(var i=0;i<10;i++) { //년도갯수늘릴때
    sel[i+1].text = year-i;
    sel[i+1].value = year-i;
  }
  sel[0].selected = true;
}

//월을 초기화 하는 부분
function initMonth(sel) {
  var time = new Date();
  var month = time.getMonth()+1;

  sel.length = 13;
  sel[0].text = " ";
  sel[0].value = "";
  for(var i=1;i<=12;i++) {
    sel[i].text = i;
    sel[i].value = i;
  }
  sel[0].selected = true;
}
//일을 초기화 하는 부분
function initDay(sel,year,month) 
{
  if(month == 0 || month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
    sel.length = 32;
  else if(month == 2 && ((year%4) == 0)) sel.length = 30;
  else if(month == 2 && ((year%4) != 0)) sel.length = 29;
  else sel.length = 31;

  sel[0].text = " ";
  sel[0].value = "";

  for(var i=1 ; i<sel.length ; i++) {
    sel[i].text = i;
    sel[i].value = i;
  }
  sel[0].selected = true;
}

// 숫자인지를 체크하는 부분
function checkNumber(value) {
    if (/\D/.test(value)) return false;
    else if(value < 0) return false;
    else return true;
}

//금액에 콤마(,) 지워주는 함수
function dotErase(name) {
	var str = "";
	var val = name.value;

	for(var i=0; i<val.length ; i++) {
		if( checkNumber(val.charAt(i)) ) str += val.charAt(i);
	}
	name.value = str;
}

//금액에 콤마(,) 찍어주는 함수
function dotStamp(name) {
	var str = "";
	var val = name.value;

	for(var i=0; i<val.length ; i++) {
		if( checkNumber(val.charAt(i)) ) str += val.charAt(i);
	}
	name.value = dotMark(str, str.length);
}

// 점찍기
function dotMark(money, LastLen) {
	var dotCount = money.length - LastLen;

	if( LastLen <= 0 ) return "";

	else if( LastLen == 1 ) return money.substring(0,1);	// 문자열의 처음일때
	// 점을 표시해야될때
	else if( dotCount % 3 == 2 ) return dotMark( money, LastLen-1 ) +","+ money.charAt(LastLen-1);
	// 점을 표시하지 않을때
	else return dotMark( money, LastLen-1 ) + money.charAt(LastLen-1);
}
// 문자열의 왼쪽 공백을 제거하는 함수
function lefttrim(a) {
	var b = "";
	i=0;

	while(a.charAt(i) == " ") i++;

	for ( ; i < a.length; i++)
	   b =  b + a.charAt(i);

	return b;
}
// 문자열의 오른쪽 공백을 제거하는 함수
function righttrim(a) {
	var b = "";
	i = a.length-1;

	while(a.charAt(i)  == " ") i--;

	for( ;i >= 0 ; i--)
	   b = a.charAt(i) + b;

	return b;
}
// 문자열의 공백을 제거해주는 함수
function trim(a) {
	return righttrim(lefttrim(a));
}
/*// 문자열의 공백을 제거해주는 함수
function trim(a) {
	b = "";

	for (i = 0 ; i < a.length; i++) {
	 if (a.charAt(i) != " ") {
	   b =  b + a.charAt(i);
	   }
	}
	return b;
}*/

// 문자열의 길이 체크
function calcLength(value) {
    var len = value.length;
    for (i = 0; i < value.length; i++)
        if (value.charCodeAt(i) > 127)
            len++;
	return len;
}

//영문 체크, 특수문자 허용
function EngCheck( val ) {
	for( i=0; i<val.length; i++) {
		if( val.charCodeAt(i) > 127 ) {
			return false;
		}
	}
	return true;
}

//영문 체크하는 경우
function OnlyEngCheck( val ) {
	var str = "";
	for( i=0; i<val.length; i++) {
		str = val.charCodeAt(i);
		if( str < 32 || str > 126 ) {
			return false;
		}
	}
	return true;
}

// 공백-> &nbsp; 엔터 ->\r\n 으로 변경해주는 함수
function specialCharChange( special ) {
	var str = "";

	for( i=0; i<special.length;i++)  {
		if( special.charCodeAt(i) == 10 ) str += "\r\n";

		else str += special.charAt(i);
	}
	return str;
}

//빈공간 체크
function Trim(strings) {
    var retString = "";
    var c;
    var i;
    for(i=0;i<strings.length;i++) {
        c = strings.charAt(i) ;
        if(c != ' '){
           retString += c;
        }
    }
    return(retString);
}

function chop(t_str) {
	var i;
	var startpos = 0;
	var len = t_str.length;
	var endpos = t_str.length-1;

	for (i = 0; i < len; i++) {
		if (t_str.charAt(i) == " ")
			startpos++;
		else
			break;
	}

	for (i = endpos; i >= 0; i--) {
		if (t_str.charAt(i) == " ")
			endpos--;
		else
			break;
	}

	if (startpos > endpos)
		return "";
	else
		return t_str.substr(startpos, endpos-startpos+1);
}

function reallength(t_str) {
	var i, len;
	new_str = chop(t_str);

	for(i = len = 0; i < new_str.length; i++) {
		ch = new_str.substring(i, i+1);
		if (ch > '|')
			len += 2;
		else
			len++;
	}
	return len;
}


function isalpha(value) {
	if(("a" <= value && value <= "z") || ("A" <= value && value <= "Z"))
		return true;
	else
		return false;
}//isalpha

function isloweralpha(value) {
	if("a" <= value && value <= "z")
		return true;
	else
		return false;
}

function isdigit(value) {
	if( "0" <= value && value <= "9")
		return true;
	else
		return false;
}

function isalphadigit(value) {
	var algi = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
		for(var i = 0; i < algi.length; i++) {
		var chr = algi.substr(i,1);
			if (chr == value) {
				return true;
			}
		}
	return false;
}


function ishan(value) {
	var not_hanchr = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ`1234567890-=\[];\',./~!@#$%^&*()_+|{}:\"<>?';

	for(var i = 0; i < not_hanchr.length; i++) {
	var chr = not_hanchr.substr(i,1);
		if(chr == value) {
			return false;
		}
	}
	return true;
}

function is_alphadigit_str(value) {
	for(var i = 0; i < value.length; i++) {
	var chr = value.substr(i,1);
		if(!isalphadigit(chr)) {
			return false;
		}
	}
	return true;
}

function is_blank_str(value) {
	for(var i = 0; i < value.length; i++) {
	var chr = value.substr(i,1);
		if(chr == " ") {
			return true;
		}
	}
	return false;
}

function is_digit_str(value) {
	for(var i = 0; i < value.length; i++) {
	var chr = value.substr(i,1);
		if(chr < "0" || chr > "9") {
			return false;
		}
	}
	return true;
}

function is_han_str(value) {
	for(var i = 0; i < value.length; i++) {
	var chr = value.substr(i,1);
		if(!ishan(chr)) {
			return false;
		}
	}
	return true;
}

function is_date(yearval, monval, dayval) {
	var chkyear, chkmon, chkday;
		if (yearval == "" || monval == "" || dayval == "" || 
		yearval.length != 4 || monval.length > 3 || dayval.length > 3) {
			return false;
		}

	inputdate = new Date(yearval, monval-1, dayval);
	chkyear = inputdate.getFullYear();
	chkmon = inputdate.getMonth()+1;
	chkday = inputdate.getDate();

	if (yearval != chkyear || monval != chkmon || dayval !=  chkday) {
		return false;
	}
	return true;
}


/**
 * 입력값이 사용자가 정의한 포맷 형식인지 체크
 * 자세한 format 형식은 자바스크립트의 'regular expression'을 참조
 */
function isValidFormat(input,format) {
	if (input.value.search(format) != -1) {
        return true; //올바른 포맷 형식
    }
    return false;
}
 
/**
 * 입력값이 이메일 형식인지 체크
 * ex) if (!isValidEmail(form.email)) {
 *         alert("올바른 이메일 주소가 아닙니다.");
 *     }
 */
function isValidEmail(input) {
//    var format = /^(\S+)@(\S+)\.([A-Za-z]+)$/;
    var format = /^((\w|[\-\.])+)@((\w|[\-\.])+)\.([A-Za-z]+)$/;
	return isValidFormat(input,format);
}
