/**
 * 등록하려는 파일의 수 계산.
 */
function countFiles(f, cnt) {
	var insfile = 0;
	var delfile = 0;
	var extfile = 0;
	for(var i = 0; i < 10; i++) {
		var objfile = document.getElementById("file" + i);
		if (objfile != null) {
			if (objfile.value.length > 0)
				insfile = insfile + 1;
		}
	}
	if (f.deletefiles != null) {
		if (f.deletefiles[0] != null) {
			extfile = f.deletefiles.length;
			for(var i = 0; i < f.deletefiles.length; i++) {
				if (f.deletefiles[i].checked == true)
					delfile = delfile + 1;
			}
		} else {
			extfile = 1;
			if (f.deletefiles.checked == true)
				delfile = delfile + 1;
		}
	}
	if (cnt < insfile - delfile + extfile) {
		alert('등록할 수 있는 파일의 수는 ' + cnt + '개 입니다.\n기존의 파일을 삭제 체크하십시요!');
		return false;
	}
	return true;
}

/**
 * 문자열의 공백을 없앤다.
 */
function trim(obj) {
	var count;
	var str;
	if (typeof(obj) == "object") {
		str = obj.value;
		count = obj.value.length;
	} else {
		str = obj;
		count = obj.length;
	}
 	var len = count;
	var st = 0;
	while ((st < len) && (str.charAt(st) <= ' ')) {
		st++;
	}
	while ((st < len) && (str.charAt(len - 1) <= ' ')) {
		len--;
	}
	return ((st > 0) || (len < count)) ? str.substring(st, len) : str ;
} 
 
/**
 * 숫자인지 검사한다.
 *
 */
function isNum(num) {
	return (num.toString() && !/\D/.test(num));
}

/**
 * 문자열(str) 을 포맷(mask)로 변경한다.
 *
 */
function mask(str, mask)
{
	var sStr = str.replace( /(\/|\$|\^|\*|\(|\)|\+|\.|\?|\\|\{|\}|\||\[|\]|-|:)/g,"");
	var tStr="";
	var i;
	var j=0;

	for(i=0; i < sStr.length; i++) {
		j++;
		while (j <= mask.length && mask.charAt(j - 1) != "9") {
			tStr += mask.charAt(j - 1);
			j++;
		}

		tStr += sStr.charAt(i);
	}

	return tStr;
}

/**
 * 문자열(str) 이 해당 filter 양식에 맞는지 체크한다.
 *
 */
function filter(str, filter)
{
	var re = new RegExp(filter);
	if( !re.test(str) ) return false;
	
	return true;
}
/**
 *
 * 공백이 있는지검사한다.
 */
function isEmpty(str)
{
	for ( var i = 0 ; i < str.length ; i++ ) {
		if ( str.substring( i, i+1 ) != " " ) { return false; }
	}
	return true;
}

function isEmptyObj(obj)
{
	if (isEmpty(obj.value))
		return true;
	return false;
}

/**
 * 문자열(str) 이 null, undefined, NaN, 공백("") 이면 true
 */
function isNull(str)
{
	if (str+"" == "undefined" || str+"" == "NaN" || str+"" == "null" || str+"" == "")
 		return true;
	return false;
}

function isNullObj(obj)
{
	if (isNull(obj.value))
 		return true;
	return false;
}

/**
 * 숫자 누른경우 무시
 */

function HanStr() {
	if (event.keyCode > 48 || event.keyCode < 57) {
		event.returnValue = false;
	}
}

/**
 * 숫자만입력가능
 */
function checkNumber() {
	if (event.keyCode < 48 || event.keyCode > 57) {
		event.returnValue = false;
	}
}

/**
 * 숫자만입력가능(소숫점포함)
 */
function checkNumberF() {
	if (event.keyCode < 48 || event.keyCode > 57) {
		if ((event.keyCode != 46))
			event.returnValue = false;
	}
}

/**
 * 숫자, "-", 백스페이스 , 화살표, DELETE입력가능
 */
function checkDate() {
	if (event.keyCode < 48 || event.keyCode > 57) {
		if ((event.keyCode == 45)) {

		} else {
			event.returnValue = false;
		}
	}
}
function checkPhone() {
	if (event.keyCode < 48 || event.keyCode > 57) {
		if ((event.keyCode == 45)) {

		} else {
			event.returnValue = false;
		}
	}
}


/**
 * 숫자 를 한글금액으로..   objname에 넣어준다.
 */
function convMoneyToKor(obj, objname) {
	var s = obj.value;
	document.getElementById(objname).value = Number(s).toReadString() + "원";
}
Number.prototype.toReadString = function() {
  return (this == 0) ? "영" : unitRead(String(this));
  function unitRead(str, uidx) {
    var units = ["","만","억","조",
      "경","해","시","양","구","간","정","재","극","항하사","아승지","나유타","불가사의","무량대수"];
    if (uidx == undefined) uidx = 0;
    var re = /^(\d+)(\d{4})$/;
    if (!re.test(str))
      return tinyRead(str) + units[uidx];
    else
      return str.replace(re,
        function(str,p1,p2) { return unitRead(p1, uidx+1) + tinyRead(p2); }
      ) + units[uidx];
    function tinyRead(str) {
      var digits1000 = ["","천","이천","삼천","사천","오천","육천","칠천","팔천","구천"];
      var digits100 = ["","백","이백","삼백","사백","오백","육백","칠백","팔백","구백"];
      var digits10 = ["","십","이십","삼십","사십","오십","육십","칠십","팔십","구십"];
      var digits = ["","일","이","삼","사","오","육","칠","팔","구"];
      var re = /^(((\d){0,1}(\d)){0,1}(\d)){0,1}(\d)$/;
      return str.replace(re,
        function (str,_p1,_p2,p1,p2,p3,p4) {
          return [
            (p1 != undefined) ? digits1000[parseInt(p1)] : "",
            (p2 != undefined) ? digits100[parseInt(p2)] : "",
            (p3 != undefined) ? digits10[parseInt(p3)] : "",
            digits[parseInt(p4)]
          ].join("");
        }
      );
    }
  }
}
//	document.getElementById(objname).value="";


/**
 * num길이만큼 입력시 다음 toform으로 포커스 이동
 */
function moveFocus(num,fromform,toform){
	var str = fromform.value.length;

	if(str == num)
		if ((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 96 && event.keyCode <= 105)) {
			toform.focus();
		}
}

// INPUT 이 공백인지 검사
function isNullInput(item, name) {
	var filter = /[^ ]+/;
	if(item.value == '' || !filter.test(item.value)) {
		alert(name + '을(를) 입력해주세요');
		item.focus();
		return true;
	}
	return false;
}

// 주민번호 검사
function check_juminno(obj1, obj2) {
	if (isNullInput(obj1, '주민번호')) return false;
	if (isNullInput(obj2, '주민번호')) return false;
	if (obj1.value.length != 6) {
		alert("주민등록번호 입력이 잘못되었습니다. 다시입력하십시오..");
		obj1.focus();
		return false;
	}
	if (obj2.value.length != 7) {
		alert("주민등록번호 입력이 잘못되었습니다. 다시입력하십시오....");
		obj1.focus();
		return false;
	}
	if (!isNum(obj1.value)) {
		alert("주민등록번호  앞자리를 숫자로 입력하세요.");
		obj1.focus();
		return false;
	}
	if (!isNum(obj2.value)) {
		alert("주민등록번호  뒷자리를 숫자로 입력하세요.");
		obj2.focus();
		return false;
	}	
	var jumin1 = obj1.value;
    var jumin2 = obj2.value;
    var yy = jumin1.substr(0,2);
    var mm = jumin1.substr(2,2);
    var dd = jumin1.substr(4,2);
    var genda = jumin2.substr(0,1);
    var msg, ss, cc;

    if (yy < "00" || yy > "99" ||
		mm < "01" || mm > "12" ||
		dd < "01" || dd > "31") {
		alert("주민등록번호 앞자리를 다시 입력하세요.");
		obj1.focus();
		return false;
    }

    if (!isNum(jumin2)) {
		alert("주민등록번호 뒷자리를 숫자로 입력하세요.");
		obj2.focus();
		return false;
    }

    if (jumin2.length != 7) {
		alert("주민등록번호 뒷자리를 다시 입력하세요.");
		obj2.focus();
		return false;
    }
    if (genda < "1" || genda > "4") {
		alert("주민등록번호 뒷자리를 다시 입력하세요.");
		obj2.focus();
		return false;
    }
    cc = (genda == "1" || genda == "2") ? "19" : "20";
    if (isYYYYMMDD(parseInt(cc+yy), parseInt(mm), parseInt(dd)) == false) {
		alert("주민등록번호 앞자리를 다시 입력하세요.");
		obj1.focus();
		return false;
    }
    if (!isSSN(jumin1, jumin2)) {
		alert("입력한 주민등록번호를 검토한 후, 다시 입력하세요.");
		obj1.focus();
		return false;
    }
    
//	if (Jumin_chk(obj1.value + obj2.value)) {
//		alert("주민등록번호 입력이 잘못되었습니다. 다시입력하십시오.");
//		obj1.focus();
//		return false;
//	}
	return true;
}

function isSSN(s1, s2) {
    n = 2;
    sum = 0;
    for (i=0; i<s1.length; i++)
            sum += parseInt(s1.substr(i, 1)) * n++;
    for (i=0; i<s2.length-1; i++) {
            sum += parseInt(s2.substr(i, 1)) * n++;
            if (n == 10) n = 2;
    }
    c = 11 - sum % 11;
    if (c == 11) c = 1;
    if (c == 10) c = 0;
    if (c != parseInt(s2.substr(6, 1))) return false;
    else return true;
}

function isYYYYMMDD(y, m, d) {
    switch (m) {
    case 2:
            if (d > 29) return false;
            if (d == 29) {
                    if ((y % 4 != 0) || (y % 100 == 0) && (y % 400 != 0))
                            return false;
            }
            break;
    case 4:
    case 6:
    case 9:
    case 11:
            if (d == 31) return false;
    }
    return true;
}
function Jumin_chk(it) {
	IDtot = 0;
	IDAdd="234567892345";
	for(i=0;i<12;i++) {
		IDtot=IDtot+parseInt(it.substring(i,i+1))*parseInt(IDAdd.substring(i,i+1));
	}
	IDtot=11-(IDtot%11);
	if(IDtot==10) {
		IDtot=0;
	} else if (IDtot==11) {
		IDtot=1;
	}
	if(parseInt(it.substring(12,13))!=IDtot) return true;
} 

/**
 * KeyUp 이벤트 발생 시  입력 필드를 날짜 포맷(9999-99-99)으로 변경한다.
 *
 */
function date(format)
{
	if(format == null || format=='undefined') format = "yyyy-MM-dd";
	var keyVal=escape(event.keyCode);
	var obj = event.srcElement;
	
	if ( (keyVal >= 48 && keyVal <= 57) || (keyVal >= 96 && keyVal <= 105) )
	{
		var dateVal = obj.value;
		dateVal = mask(dateVal, "9999-99-99");
		obj.value = dateVal;
	} else if( keyVal == 37 || keyVal == 39)
	{
		obj.select();
	}
}

/**
 * 날자 유효성 검사
 *
 */
function isValidDateObj(obj) {
	var dateVar = obj.value;
	dateVar = dateVar.replace(/(\/)/g,"");
	dateVar = dateVar.replace(/(\-)/g,"");
	
	if( dateVar.length != 8 )
	{
		alert("잘못된 날짜 형식입니다.");
		obj.focus();
		return false;	
	}

	var year  = dateVar.substring(0,4);
	var month = dateVar.substring(4,6);
	var day   = dateVar.substring(6,8);

	if (parseInt(year,10) < 1900  || 
		!isValidMonth(month) ||
		!isValidDay(year,month,day) ) {
		
		alert("잘못된 날짜 형식입니다.");
		obj.focus();
		return false;
		
	}
	
	if( !isNextDay(year,month,day) ) {
		obj.focus();
		return false;
	}
	
	return true;
}

/**
 * 유효한(존재하는) 월(月)인지 확인.
 *
 * @param 월
 * @return true / false
 */
function isValidMonth(mm) {
	var m = parseInt(mm,10);
	return (m >= 1 && m <= 12);
}

/**
 * 유효한(존재하는) 일(日)인지 확인.
 *
 * @param yyyy 년
 * @param mm 월
 * @param dd 일
 * @return true / false
 *
 */
 
function isValidDay(yyyy, mm, dd) {
	var m = parseInt(mm,10) - 1;
	var d = parseInt(dd,10);

	var end = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	if ((yyyy % 4 == 0 && yyyy % 100 != 0) || yyyy % 400 == 0) {
		end[1] = 29;
	}

	return (d >= 1 && d <= end[m]);
}

/** 
 * 컨트롤(obj) 의 값이  null, undefined, NaN, 공백("") 이면 메시지 return false
 * 컨트롤 이 없으면 TRUE 
 */
function isValidObj(obj, msg) {
	try {
		if (obj != null) {
			if (isNull(trim(obj.value)) || obj.value==msg) {
				if (msg != "") {
					alert(msg + '(을)를  입력하십시요.');
					if ((obj.style.backgroundColor == "") || (obj.style.backgroundColor == "#FFFFFF")) {
						obj.focus();
					} else {
						//window.status = "control can't focus!";
					}
				}
				return false;
			}
		} 
		return true;
	} catch (e) {
		alert(e.number + " : " + e.description);
	}
}
/** 
 * 컨트롤(obj) 의 값이  null, undefined, NaN, 공백("") 이면 메시지 return false
 * 컨트롤 이 없으면 TRUE 
 */
function isValidNumObj(obj, msg) {
	if (obj != null) {
		if (isNaN(obj.value) || isNull(obj.value) || obj.value==msg) {
			if (msg != "") {
				alert(msg + '(을)를  숫자로 입력하십시요.');
				if ((obj.style.backgroundColor == "") || (obj.style.backgroundColor == "#FFFFFF")) {
					obj.focus();
				} else {
					//window.status = "control can't focus!";
				}
			}
			return false;
		}
	} 
	return true
}

/**
 * Select Box의 경우 지정한 value값이 선택되면 선택하라면  alert표시
 **/
function isValidSelect(obj, msg, val){
	if (obj.value == val){
		alert(msg + '(을)를 선택하세요.');
		if ((obj.style.backgroundColor == "") || (obj.style.backgroundColor == "#FFFFFF")) {
			obj.focus();
		} else {
			//window.status = "control can't focus!";
		}
		return false;
	}
	return true;
}

/**
 *  이메일(email) 체크
 */

function isValidEmailObj(obj) {
	var reg = /^((\w|[\-\.])+)@((\w|[\-\.])+)\.([A-Za-z]+)$/
	if(obj != null){
		if ( obj.value.search(reg) == -1){
			alert("전자우편 주소의 패턴과 일치하지 않습니다.");
			if ((obj.style.backgroundColor == "") || (obj.style.backgroundColor == "#FFFFFF")){
				obj.focus();
			}else{
				//window.status = "control can't focus!";
			}
			return false;
		}
	}
	return true;
}

function isValidEmail(str) {
	var reg = /^((\w|[\-\.])+)@((\w|[\-\.])+)\.([A-Za-z]+)$/
	if(str != ""){
		if ( str.search(reg) == -1){
			alert("전자우편 주소의 패턴과 일치하지 않습니다.");
			return false;
		}
	}
	return true;
}

/**
 *  전화번호 번호 체크
 */
function isValidTelno(obj) {
	var reg = /^\d{2,3}-\d{3,4}-\d{4}$/
	if(obj != null){
		if ( obj.value.search(reg) == -1){
			alert("전화번호의 패턴과 일치하지 않습니다.");
			if ((obj.style.backgroundColor == "") || (obj.style.backgroundColor == "#FFFFFF")){
				obj.focus();
			}else{
				//window.status = "control can't focus!";
			}
			return false;
		}
	}
	return true;
}


/** 
 * 금액에 소수점 있는지 체크. 존재한다면 true, 없다면 false
 */
function isDot(str){
	for (var i=0; i< str.length; i++) {
		if(str.charAt(i) == "." )	return true;
	}
	return false;
}


/**
* 특정 숫자 num에 소수점이하 pos+1자리에서 반올림하여 소수점 이하 pos자로 만든다. 소수점이상 자리 반올림은 -pos로 입력한다.
* @param num double
* @param pos double
* @return num double
*/
function round(num, pos) 
{
	if (pos > 0) 
	{
		num = num * Math.pow(10.0, pos);
		num = Math.round(num);
		num = num / Math.pow(10.0, pos);
	} else if (pos < 0) 
	{
		num = num / Math.pow(10.0, pos * -1);
		num = Math.round(num);
		num = num * Math.pow(10.0, pos * -1);
	} else
	{
		num = Math.round(num);
	}
	return num;
}

/**
 * 한글 1자를 길이 2로 계산하여 길이를 리턴한다.
 */
function HLen(str)
{
	var byteLength = 0;
	for (inx = 0; inx < str.length; inx++)
    {
		var oneChar = escape(str.charAt(inx));
		if      (oneChar.length == 1)           		{ byteLength ++; }
        else if (oneChar.indexOf("%u") != -1)   { byteLength += 2; }
        else if (oneChar.indexOf("%") != -1) 	{ byteLength += oneChar.length/3; }
	}
	return byteLength;
}

/**
 * 문자인지 검사 (특수문자포함)
 */
function isAsc32to126(s)
{
	if (s.length > 0) {
		sNum = s;
		for (var i=0; i<sNum.length; i++) {
			if (!(sNum.charAt(i) >= ' ' && sNum.charAt(i) <= '~')) { return false; }
		}
		return true;
	} else { return false; }
}

/**
 * 숫자를 제외한 문자인지 검사 (특수문자포함)
 */
function isAsc32toNum(s)
{
	if (s.length > 0) {
		sNum = s;
		for (var i=0; i<sNum.length; i++) {
			if (!(sNum.charAt(i) >= ' ' && sNum.charAt(i) <= '/ ') && !(sNum.charAt(i) >= ':' && sNum.charAt(i) <= '~')) { return false; }
		}
		return true;
	} else { return false; }
}

/**
 * 특정키가 눌려지면 다음 obj로 포커스 이동
 */
function goNextFocus(keycode, nextobj) {
	if (event.keyCode == keycode) {
		nextobj.focus();
		event.returnValue = false;
	}
}


function FCKeditor_OnComplete( editorInstance )
{
	window.status = editorInstance.Description ;
}


/*
 * 텍스트박스에 라벨이 설정되있는 경우 Onblur 이벤트시 수행
 */
function setOnblur(strValue, strLabel){
	var strReturn = '';
	if (strValue == strLabel || strValue == ''){
		strReturn = strLabel;
	}else{
		strReturn =strValue;
	}
	return strReturn;
}

/*
 * 텍스트박스에 라벨이 설정되어 있는 경우 Onfocus 이벤트시 수행
 */
function setOnfocus(strValue, strLabel){
	var strReturn = '';
	if (strValue == strLabel){
		setReturn = '';
	}else{
		strReturn = strValue;
	}
	return strReturn;
}

/*
 * 이메일 직접입력 선택시 테스트박스 도출여부
 */
function emailchange(obj, domainobj){
	if (obj.options[obj.selectedIndex].value=="0"){
		domainobj.style.visibility = "";
		domainobj.focus();
	}else{
//		domainobj.value=obj.options[obj.selectedIndex].value;
		domainobj.value = "";
		domainobj.style.visibility = "hidden";
	}
}

function iframe_reset(){
	var dataobj=document.all? document.all.UPFOLDER_PAGE : document.getElementById("UPFOLDER_PAGE");
	if (dataobj != null) {
		dataobj.style.top=0;
		dataobj.style.left=0;
		pageheight=dataobj.offsetHeight;
		//pagewidth=dataobj.offsetWidth;
		pagewidth = 660;

		if (parent.document.isearch != null)  {
			parent.frames("isearch").resizeTo(pagewidth,pageheight);
		}
	}
}

/**
 * 자릿수(digits)만큼 왼쪽에서 문자(paddingchar) 채우기
 * @param n
 * @param digits
 * @param paddingchar
 * @return
 */
function lpad(n, digits, paddingchar) {
	var zero = '';
	n = n.toString();

	if (n.length < digits) {
		for (i = 0; i < digits - n.length; i++) {
			zero += paddingchar;
		}
	}
	return zero + n;
}

/**
 * 날짜더하기
 * @param ymd
 * @param v_day
 * @return
 */
function addDay(ymd, v_day){
	var yyyy = ymd.substr(0,4);
	var mm = eval(ymd.substr(4,2) + "- 1") ;
	var dd = ymd.substr(6,2);
	var dt3 = new Date(yyyy, mm, eval(dd + '+' + v_day));
	yyyy = dt3.getFullYear();
	mm = (dt3.getMonth()+1)<10? "0" + (dt3.getMonth()+1) : (dt3.getMonth()+1) ;
	dd = dt3.getDate()<10 ? "0" + dt3.getDate() : dt3.getDate();
	return  "" + yyyy + "" + mm + "" + dd ;
}

/**
 * 공판장 마이페이지 출하코드 Ajax
 *
 */
function setFlowerSelect(obj, type, bunChk) {
	try {
		var selectedValue = $.getURLParam("auctionFarmCode");
		var label = $('#' + type).val();
		$('#' + obj)
		.html("")
		.append("<option value=\"\">" + label + "코드</option>");
		$.ajax({
			url:'/document/getFlowerNumber.action?bunChk=' + bunChk,
			type:'GET',
			dataType:'xml',
			timeout:10000,
			error:function(xhr, status, error) {
//				alert(xhr + ":" + status + ":" + error);
			},
			success:function(xml) {
				$(xml).find('item').each(function() {
					var itemText = $(this).text();
					var auctionFarmCode = $(this).find('actionFarmCode').text();
					var selected = "";
					if (selectedValue == auctionFarmCode) {
						selected = " selected"
					}
					$('#' + obj).append("<option value=\"" + auctionFarmCode + "\"" + selected + ">" + auctionFarmCode + "</option>");
				});
			}
		});
	} catch (e) {
		alert("error:" + e.message);
	}
}


jQuery.extend({
/**
* Returns get parameters.
*
* If the desired param does not exist, null will be returned
*
* @example value = $.getURLParam("paramName");
*/ 
	getURLParam: function(strParamName){
		var strReturn = "";
		var strHref = window.location.href;
		var bFound=false;
		
		var cmpstring = strParamName + "=";
		var cmplen = cmpstring.length;

		if ( strHref.indexOf("?") > -1 ){
			var strQueryString = strHref.substr(strHref.indexOf("?")+1);
			var aQueryString = strQueryString.split("&");
			for ( var iParam = 0; iParam < aQueryString.length; iParam++ ){
				if (aQueryString[iParam].substr(0,cmplen)==cmpstring){
					var aParam = aQueryString[iParam].split("=");
					strReturn = aParam[1];
					bFound=true;
					break;
				}
			}
		}
		if (bFound==false) return null;
		return strReturn;
	}
});
