function goSubmit(frm, actionUrl) {
	frm.method = "post";
	frm.action = actionUrl;
	frm.submit();
}

function notYetFinish() {
	alert("서비스 준비 중입니다.");
}

function trim(value) {
	return value.replace(/^\s+|\s+$/g,"");
}

function checkWincPost(winc){
	if (winc == null || winc.length == 0 || winc.length > 32)
		return false;

	fmt = /^\d{1,4}$/;

	return fmt.test(winc);	
}

function isValidUniqueContents(uniqueContents) {
	var regExp = /^[(가-힣a-zA-Z0-9)][^#%@/&*:;\s'\"”“’‘]{1,19}$/;
	
	if(regExp.test(uniqueContents) == false) {
		return false;
	}
	
	return true;
}

function isValidId(id) {
	var regExp = /^[A-Za-z][A-Za-z0-9]{3,19}$/;
	
	if(regExp.test(id) == false) {
		return false;
	}
	
	return true;
}

function checkWincExist(winc, wincType, cipher) {
	var checkResult = false;
	dwrService.checkWincInfo(winc, wincType, cipher, {
		callback : function(result) {
			checkResult = result;
		},
		async:false,
		timeout:30000,
		errorHandler : function(message) {
			alert("Error : " + message);
		}
	});
	
	return checkResult;
}

function checkUniqueContentsEqual(uniqueContents, winc, wincType, cipher) {
	var checkResult = false;
	dwrService.checkUniqueContentsEqual(uniqueContents, winc, wincType, cipher, {
		callback : function(result) {
			checkResult = result;
		},
		async:false,
		timeout:30000,
		errorHandler : function(message) {
			alert("Error : " + message);
		}
	});
	
	return checkResult;	
}

function checkUniqueContentsExist(uniqueContents, winc, wincType, cipher) {
	var checkResult = false;
	dwrService.checkUniqueContents(uniqueContents, winc, wincType, cipher, {
		callback : function(result) {
			checkResult = result;
		},
		async:false,
		timeout:30000,
		errorHandler : function(message) {
			alert("Error : " + message);
		}
	});
	
	return checkResult;
}

function checkWincReserveViolation(winc, wincType, cipher) {
	var checkResult = false;
	dwrService.checkWincReserve(winc, wincType, cipher, {
		callback : function(result) {
			checkResult = result;
		},
		async:false,
		timeout:30000,
		errorHandler : function(message) {
			alert("Error : " + message);
		}
	});
	
	return checkResult;
}

function checkContentsReserveViolation(contents) {
	var checkResult = false;
	dwrService.checkContentsReserve(contents, {
		callback : function(result) {
			checkResult = result;
		},
		async:false,
		timeout:30000,
		errorHandler : function(message) {
			alert("Error : " + message);
		}
	});
	
	return checkResult;
}

function checkContentsRequestViolation(contents) {
	var checkResult = false;
	
	dwrService.checkContentsRequest(contents, {
		callback : function(result) {
			checkResult = result;
		},
		async:false,
		timeout:30000,
		errorHandler : function(message) {
			alert("Error : " + message);
		}
	});
	
	return checkResult;
}

function setChildCategoryList(parentCode, childId, childCode) {
	if(childId == null || childId == "") return;
	
	$("select#" + childId + " option").remove();
	$("select#" + childId).append($("<option></option>").attr("value", "").text("전체"));

	if (parentCode == null || parentCode == "") {
		return;
	}
	
	dwrService.getChildCategoryList(parentCode, {
		callback : function(result) {
			$.each(result, function(key, value) {
				$("select#" + childId).append($("<option></option>").attr("value", value["CODE"]).text(value["CODENAME"]));
			});

			if (childCode != null)
				$("select#" + childId).val(childCode);
		},
		timeout:30000,
		errorHandler : function(message) {
			alert("Error : " + message);
		}
	});
}

/**
 * 한 글자가 숫자인지 체크
 */
function isInt(value)
{	
	var intValue   = '0123456789';
	var index = intValue.indexOf(value);
	
	if(index >= 0) return true;
	else return false;
}

/**
 * 숫자로 구성된 문자열 체크
 */
function isNum(no)
{
	var str = no.value;

	if(str == null || str.length == 0) {
		no.value = "";
		return false;
	}

	for(i = 0; i < str.length; i++) {
		if(!isInt(str.charAt(i))) {
			no.value = "";
			return false;
		}
	}
	return true;
}

/**
 * Input 폼 필드의 내용이 비어 있는지 체크
 * 사용예) if(!isEmpty(form1.message))
 *             Error 처리
 */
function isEmpty(obj) {
    for (var i = 0; i < obj.value.length; i++) {
        if (obj.value.substring(i , i + 1) != "") {
            return false;
        }
    }
    return true;
}

/**
* 한글을 2바이트 씩 계산하여 입력받은 문자열이 DB에 저장될 때 총 몇바이트를 차지하는지 계산한다.
* 엔터(\r\n)는 2바이트를 차지한다.
* _a_t_ param val : 입력받은 문자열
*/
function cal_length(obj) {
	// 입력받은 문자열을 escape() 를 이용하여 변환한다.
    // 변환한 문자열 중 유니코드(한글 등)는 공통적으로 %uxxxx로 변환된다.
    var temp_estr = escape(obj.value);
    var s_index   = 0;
    var e_index   = 0;
    var temp_str  = "";
    var cnt       = 0;

    // 문자열 중에서 유니코드를 찾아 제거하면서 갯수를 센다.
    while ((e_index = temp_estr.indexOf("%u", s_index)) >= 0) {
		temp_str += temp_estr.substring(s_index, e_index);
        s_index = e_index + 6;
        cnt ++;
    }
    temp_str += temp_estr.substring(s_index);
    temp_str = unescape(temp_str);  // 원래 문자열로 바꾼다.

    // 유니코드는 2바이트 씩 계산하고 나머지는 1바이트씩 계산한다.
    return ((cnt * 2) + temp_str.length) + "";
}

//메세지를 전달하고 해당 폼으로 Focus 이동
function ErrMsg(obj, msg) {
	try {
		dlgErrorAlert(msg);
		
		try { 
			obj.focus();  
		} 
		catch (errorObject) { 
		}
	   
		try { 
			obj.select(); 
		} 
		catch(errorObject) { 
		}
	   
		return false;
	}
	catch(errorObject) {
		dlgErrorAlert(errorObject.message);
		return false;
	}
}

//Alert 를 뿌려준다.
function dlgErrorAlert(msg) {
   alert(msg);
}

// WINC 번호 검색 타입 선택
function selectWincType(frm) {		
	if(frm.wincNumRadio[0].checked == true) {
		$("#sharp").hide();
		$("#wincPost").hide();
		$("#leftCipher").hide();
		$("#cipher").hide();	
		$("#rightCipher").hide();	
	}
	else if(frm.wincNumRadio[1].checked == true) {
		$("#sharp").show();
		$("#wincPost").show();
		$("#leftCipher").hide();
		$("#cipher").hide();	
		$("#rightCipher").hide();
	}
	else if(frm.wincNumRadio[2].checked == true) {
		$("#sharp").hide();
		$("#wincPost").hide();
		$("#leftCipher").show();
		$("#cipher").show();	
		$("#rightCipher").show();
	}
	else {
		$("#sharp").hide();
		$("#wincPost").hide();
		$("#leftCipher").hide();
		$("#cipher").hide();	
		$("#rightCipher").hide();
	}
}

function goWincSearch(frm) {	
	if(isEmpty(frm.wincPre) == true) {
		ErrMsg(frm.wincPre, "익스프레스 번호를 입력하여 주십시오.");
		return false;
	}

	if(isNum(frm.wincPre) == false) {
		ErrMsg(frm.wincPre, "익스프레스 번호는 숫자만 입력이 가능합니다.");
		return false;
	}

	var wincPre = trim(frm.wincPre.value);
	var winc;
	var wincType;
	var cipher;
	
	if(frm.wincNumRadio[0].checked == true) {
		if(wincPre.length > 32) {
			ErrMsg(frm.wincPre, "WINC는 총 길이가 32자리를 넘길 수 없습니다.");
			return false;
		}

		wincType = "130";
		winc = wincPre;
	}
	else if(frm.wincNumRadio[1].checked == true) {
		if(isEmpty(frm.wincPost) == true) {
			ErrMsg(frm.wincPost, "# 이하의 숫자를 입력하여 주십시오.");
			return false;
		}

		var wincPost = trim(frm.wincPost.value);

		if (wincPost.length==0 || !checkWincPost(wincPost)) {
			frm.wincPost.value = "";
			ErrMsg(frm.wincPost, "# 이하의 숫자는 1자에서 4자 사이의 숫자로 입력하셔야 합니다.");
			return false;
		}
		
		if(wincPre.length + 1 + wincPost.length > 32) {
			ErrMsg(frm.cipher, "WINC는 총 길이가 32자리를 넘길 수 없습니다.");
			return false;
		}

		wincType = "120";
		winc = wincPre + "#" + wincPost;
	}
	else if(frm.wincNumRadio[2].checked == true) {
		if(isEmpty(frm.cipher) == true) {
			ErrMsg(frm.cipher, "다량WINC 자릿수를 입력하여 주십시오.");
			return false;
		}

		if(isNum(frm.cipher) == false) {
			frm.cipher.value = "";
			ErrMsg(frm.cipher, "다량WINC는 숫자만 입력이 가능합니다.");
			return false;
		}

		cipher = trim(frm.cipher.value);

		if(!(Number(cipher) > 4)) {
			ErrMsg(frm.cipher, "다량WINC는 5자리 이상이어야 합니다.");
			return false;
		}
		
		if(wincPre.length + 1 + Number(cipher) > 32) {
			ErrMsg(frm.cipher, "WINC는 총 길이가 32자리를 넘길 수 없습니다.");
			return false;
		}

		wincType = "140";
		winc = wincPre;
	}
	
	var result = checkWincExist(winc, wincType, cipher);
	if(result == false) {
		ErrMsg(frm.wincPre, "이미 등록된 번호입니다.");
		return false;
	}
	
	$("#winc").val(winc);
	$("#wincType").val(wincType);
	$("#cipher").val(cipher);
	
	return true;
}

function isNormalWinc(winc, wincType, cipher) {
	// Exp, 개인/기관 번호이면 return true

	var checkResult;
	
	dwrService.checkWincType(winc, wincType, cipher, {
		callback : function(result) {
			checkResult = result;
		},
		async:false,
		timeout:30000,
		errorHandler : function(message) {
			alert("Error : " + message);
		}
	});
	
	if(checkResult != 0) {
		return false;
	}
	
	return true;
}

function openZipcode() {
	var retVal = window.showModalDialog("/service/zipCodePopup.do", '', "scroll:no; status:no; dialogWidth:680px; dialogHeight:500px");
	if(retVal != null) {
		var returnVal = new Array;
		returnVal = retVal;

		$("#zip_no1").val(returnVal[0]);
		$("#zip_no2").val(returnVal[1]);
		$("#addr").val(returnVal[2]);
	}
}

//윈도우 오픈
function openWin(loc,name,width,height,left,top) {
    var args = openWin.arguments;
    
    if(args.length < 3) {
    	width = document.body.clientWidth / 2;
    	height = document.body.clientHeight / 2;
    }
    if(args.length < 5) {
    	left = (screen.width - width) / 2;
    	top = (screen.height - height) / 2;
    }

    //var status = "toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=1,width=" + width + ",height=" + height + ",top=" + top + ",left=" + left;
    var status = "toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=1,width=" + width + ",height=" + height + ",top=" + top + ",left=" + left;
    
    var openw = window.open(loc,name,status);
    
    if(openw) {
    	openw.focus();
    }
}

function setCookie(name, value, expiredays) {
	var todayDate = new Date();
	todayDate.setDate( todayDate.getDate() + expiredays );
	document.cookie = name + "=" + escape( value ) + "; path=/; expires=" + todayDate.toGMTString() + ";"
}

//쿠키 값 가져오기
function getCookie(Name) {
    var search = Name + "=";
    if(document.cookie.length > 0) {
        offset = document.cookie.indexOf(search);
        if(offset != -1) {
            offset += search.length;
            end = document.cookie.indexOf(";", offset);
            if(end == -1)
                end = document.cookie.length;
            return unescape(document.cookie.substring(offset, end));
        }
    }
    return "";
}

// 전화번호
function checkTelNo(telNo) {
	if(telNo == null || telNo.length == 0) {
		return false;
	}
	
	var telNoArray = telNo.split("-");

	if(telNoArray.length != 3) {
		return false;
	}
	
	var localNum = new Array("02","031","032","033","041","042","043","051","052","053","054","055","061","062","063","064","012","015","010","011","016","017","018","019","0502","070");

	for(i=0; i<telNoArray.length; i++) {
		var no = trim(telNoArray[i]);
		
		if(no == null || no.length == 0) {
			return false;
		}
		
		for(j = 0; j < no.length; j++) {
			if(!isInt(no.charAt(j))) {
				return false;
			}
		}
		
		if(i == 0) {
			var checkLocalNum = false;
			
			for(j=0; j<localNum.length; j++) {
				if(no == localNum[j]) {
					checkLocalNum = true;
					break;
				}
			}
			
			if(checkLocalNum == false) {
				return false;
			}
		}
		else if(i == 1) {
			if(!(no.length == 3 || no.length == 4)) {
				return false;
			}
		}
		else {
			if(no.length != 4) {
				return false;
			}
		}
	}
	
	return true;
}

function checkDate(date) {
	if (date == null || date.length < 8 || date.length > 10)
		return null;
	
	
	if (date.length == 10)
		date = date.substring(0, 4) + date.substring(5, 7) + date.substring(8, 10);

	fmt = /^\d{8}$/;
	
	var day = date.charAt(6) == '0' ? parseInt(date.substring(7, 8)) : parseInt(date.substring(6, 8));
	var month = date.charAt(4) == '0' ? parseInt(date.substring(5, 6)) : parseInt(date.substring(4, 6));
	var year = parseInt(date.substring(0, 4));

	if (fmt.test(date) && checkValidDate(day, month, year))
		return date;
	else
		return null;
}

function checkValidDate(day, month, year) {
//	alert("year : " + year + ", month : " + month + ", day :" + day);
    if (month < 1 || month > 12) {
        return false;
    }
    if (day < 1 || day > 31) {
        return false;
    }
    if ((month == 4 || month == 6 || month == 9 || month == 11) &&
        (day == 31)) {
        return false;
    }
    if (month == 2) {
        var leap = (year % 4 == 0 &&
                   (year % 100 != 0 || year % 400 == 0));
        if (day>29 || (day == 29 && !leap)) {
            return false;
        }
    }
    return true;	
	
}

function mobileReDirect() {
	var mobileKeyWords = new Array('iPhone', 'iPod', 'BlackBerry', 'Android', 'Windows CE', 'LG', 'MOT', 'SAMSUNG', 'SonyEricsson');
	for (var word in mobileKeyWords){
	    if (navigator.userAgent.match(mobileKeyWords[word]) != null){
	        location.href = "http://m.winc.or.kr/main.do";
	        break;
	    }
	}
}


function initMoving(target, position, topLimit, btmLimit) {
	if (!target)
		return false;

	var obj = target;
	obj.initTop = position;
	obj.topLimit = topLimit;
	obj.bottomLimit = Math.max(document.documentElement.scrollHeight, document.body.scrollHeight) - btmLimit - obj.offsetHeight;

	obj.style.position = "absolute";
	obj.top = obj.initTop;
	obj.left = obj.initLeft;

	if (typeof(window.pageYOffset) == "number") {	//WebKit
		obj.getTop = function() {
			return window.pageYOffset;
		}
	} else if (typeof(document.documentElement.scrollTop) == "number") {
		obj.getTop = function() {
			return Math.max(document.documentElement.scrollTop, document.body.scrollTop);
		}
	} else {
		obj.getTop = function() {
			return 0;
		}
	}

	if (self.innerHeight) {	//WebKit
		obj.getHeight = function() {
			return self.innerHeight;
		}
	} else if(document.documentElement.clientHeight) {
		obj.getHeight = function() {
			return document.documentElement.clientHeight;
		}
	} else {
		obj.getHeight = function() {
			return 500;
		}
	}

	obj.move = setInterval(function() {
		if (obj.initTop > 0) {
			pos = obj.getTop() + obj.initTop;
		} else {
			pos = obj.getTop() + obj.getHeight() + obj.initTop;
			//pos = obj.getTop() + obj.getHeight() / 2 - 15;
		}

		if (pos > obj.bottomLimit)
			pos = obj.bottomLimit;
		if (pos < obj.topLimit)
			pos = obj.topLimit;

		interval = obj.top - pos;
		obj.top = obj.top - interval / 3;
		obj.style.top = obj.top + "px";
	}, 30)
}

//입력 유무 체크
function isBlank()
{
    var args = isBlank.arguments;
    if (args.length == 0) {
        theObj = this;
    } else {
        theObj = args[0];
    }

    var re = /^\s+$/;
    var data = theObj.value;
    if(data == null) return true;
    var len = data.length;

    if (len == 0 || re.test(data)) {
        theObj.value = "";
        return true;
    }
    return false;
}

//메일주소 체크
function isMail()
{
    var args = isMail.arguments;
    if (args.length == 0)
       theObj = this;
    else
       theObj = args[0];

    if ( isBlank(theObj) ) return true;
    var data = theObj.value;

    var r1 = new RegExp("(@.*@)|(\\.\\.)|(@\\.)|(^\\.)");
    var r2 = new RegExp("^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$");
    return (!r1.test(data) && r2.test(data));
}

//사업자 등록번호 체크
function isComp() {
  var args = isComp.arguments;
  if (args.length == 0)
     theObj = this;
  else
     theObj = args[0];

  var data = clear(theObj.value);
  if ( isBlank(theObj) ) return true;

  var comp = new Array(9);
  var stnd = new Array(8);
  var strStnd = '137137135';

  for(var i=0; i<10; i++) comp[i]=data.substring(i,i+1);
  for(var i=0; i<9; i++)  stnd[i]=strStnd.substring(i,i+1);

  for(var sum=0,i=0;i<9;i++) sum += comp[i] * stnd[i];

  sum = sum + parseInt((data.substring(8, 9) * 5) / 10);

  var mod =  10 - (sum % 10);

  if(mod>=10) mod-=10;
  if(mod == comp[9])  return true;

  return false;
}

//사업자 등록번호 체크
function isCompStr(compno) {
  var data = compno;

  var comp = new Array(9);
  var stnd = new Array(8);
  var strStnd = '137137135';

  for(var i=0; i<10; i++) comp[i]=data.substring(i,i+1);
  for(var i=0; i<9; i++)  stnd[i]=strStnd.substring(i,i+1);

  for(var sum=0,i=0;i<9;i++) sum += comp[i] * stnd[i];

  sum = sum + parseInt((data.substring(8, 9) * 5) / 10);

  var mod =  10 - (sum % 10);

  if(mod>=10) mod-=10;
  if(mod == comp[9])  return true;

  return false;
}

function chkMember(userId, userPw, ctfyNo, ctfyCode) {
	var checkResult = false;
	dwrService.checkMemberInfo(userId, userPw, ctfyNo, ctfyCode, {
		callback : function(result) {
			checkResult = result;
		},
		async:false,
		timeout:30000,
		errorHandler : function(message) {
			alert("Error : " + message);
		}
	});
	
	return checkResult;
}

function getDateDataString(date) {
	var dateString = date.getFullYear();
	if (date.getMonth() + 1 < 10)
		dateString += "0" + (date.getMonth() + 1);
	else
		dateString += (date.getMonth() + 1);
	
	if (date.getDate() < 10)
		dateString += "0" + date.getDate();
	else
		dateString += date.getDate();
	
	return dateString;
}

